diff options
Diffstat (limited to 'apps')
648 files changed, 7598 insertions, 2006 deletions
diff --git a/apps/comments/js/commentstabview.js b/apps/comments/js/commentstabview.js index ace0862ad2e..3a20604326b 100644 --- a/apps/comments/js/commentstabview.js +++ b/apps/comments/js/commentstabview.js @@ -239,8 +239,12 @@ username, 0, $el.find('.authorRow')); } - var message = $el.find('.message'); - message.find('.avatar').each(function() { + var $message = $el.find('.message'); + this._postRenderMessage($message); + }, + + _postRenderMessage: function($el) { + $el.find('.avatar').each(function() { var avatar = $(this); var strong = $(this).next(); var appendTo = $(this).parent(); @@ -419,10 +423,13 @@ $textArea.val('').prop('disabled', false); } - $target.find('.message') + var $message = $target.find('.message'); + $message .html(self._formatMessage(model.get('message'), model.get('mentions'))) .find('.avatar') .each(function () { $(this).avatar(); }); + + self._postRenderMessage($message); }, error: function () { self._onSubmitError($form, commentId); diff --git a/apps/comments/l10n/ast.js b/apps/comments/l10n/ast.js index ec17fe112b9..06590b23ed6 100644 --- a/apps/comments/l10n/ast.js +++ b/apps/comments/l10n/ast.js @@ -2,6 +2,7 @@ OC.L10N.register( "comments", { "Comments" : "Comentarios", + "Unknown user" : "Usuariu desconocíu", "New comment …" : "Comentariu nuevu...", "Delete comment" : "Desaniciar comentariu", "Post" : "Espublizar", @@ -11,18 +12,23 @@ OC.L10N.register( "No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!", "More comments …" : "Más comentarios...", "Save" : "Guardar", + "Allowed characters {count} of {max}" : "{count} caráuteres almitíos de {max}", "Error occurred while retrieving comment with id {id}" : "Asocedió un fallu entrín se recibía'l comentariu cola ID {id}", "Error occurred while updating comment with id {id}" : "Asocedió un fallu entrín s'anovaba'l comentariu cola ID {id}", "Error occurred while posting comment" : "Asocedieron fallos entrín s'espublizaba'l comentariu", + "_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"], "Comment" : "Comentariu", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros", "You commented" : "Comentesti", "%1$s commented" : "%1$s comentó", - "You commented on %2$s" : "Comentesti en %2$s", + "{author} commented" : "{author} comentó", + "You commented on %1$s" : "Comentesti en %1$s", + "You commented on {file}" : "Comentesti en {file}", "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "Type in a new comment..." : "Teclexa un comentariu nuevu...", - "No other comments available" : "Nun hai otros comentarios disponibles", - "More comments..." : "Más comentarios...", - "{count} unread comments" : "{count} comentarios ensin lleer" + "{author} commented on {file}" : "{autor} comentó en {ficheru}", + "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros", + "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «%s»", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «{file}»", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentóte nun comentariu de «%2$s»", + "{user} mentioned you in a comment on “{file}”" : "{user} mentóte nun comentariu de «{file}»" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/ast.json b/apps/comments/l10n/ast.json index 57310e8bbff..9615ca96ef5 100644 --- a/apps/comments/l10n/ast.json +++ b/apps/comments/l10n/ast.json @@ -1,5 +1,6 @@ { "translations": { "Comments" : "Comentarios", + "Unknown user" : "Usuariu desconocíu", "New comment …" : "Comentariu nuevu...", "Delete comment" : "Desaniciar comentariu", "Post" : "Espublizar", @@ -9,18 +10,23 @@ "No comments yet, start the conversation!" : "Entá nun hai comentarios. ¡Entama una conversación!", "More comments …" : "Más comentarios...", "Save" : "Guardar", + "Allowed characters {count} of {max}" : "{count} caráuteres almitíos de {max}", "Error occurred while retrieving comment with id {id}" : "Asocedió un fallu entrín se recibía'l comentariu cola ID {id}", "Error occurred while updating comment with id {id}" : "Asocedió un fallu entrín s'anovaba'l comentariu cola ID {id}", "Error occurred while posting comment" : "Asocedieron fallos entrín s'espublizaba'l comentariu", + "_%n unread comment_::_%n unread comments_" : ["%n comentariu ensin lleer","%n comentarios ensin lleer"], "Comment" : "Comentariu", - "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros", "You commented" : "Comentesti", "%1$s commented" : "%1$s comentó", - "You commented on %2$s" : "Comentesti en %2$s", + "{author} commented" : "{author} comentó", + "You commented on %1$s" : "Comentesti en %1$s", + "You commented on {file}" : "Comentesti en {file}", "%1$s commented on %2$s" : "%1$s comentó en %2$s", - "Type in a new comment..." : "Teclexa un comentariu nuevu...", - "No other comments available" : "Nun hai otros comentarios disponibles", - "More comments..." : "Más comentarios...", - "{count} unread comments" : "{count} comentarios ensin lleer" + "{author} commented on {file}" : "{autor} comentó en {ficheru}", + "<strong>Comments</strong> for files" : "<strong>Comentarios</strong> pa ficheros", + "A (now) deleted user mentioned you in a comment on “%s”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «%s»", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Un usuariu (agora) desaniciáu mentóte nun comentariu de «{file}»", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s mentóte nun comentariu de «%2$s»", + "{user} mentioned you in a comment on “{file}”" : "{user} mentóte nun comentariu de «{file}»" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/ko.js b/apps/comments/l10n/ko.js index 9b47580715b..b9c19edc400 100644 --- a/apps/comments/l10n/ko.js +++ b/apps/comments/l10n/ko.js @@ -2,30 +2,33 @@ OC.L10N.register( "comments", { "Comments" : "댓글", - "Unknown user" : "알려지지 않은 사용자", - "New comment …" : "새로운 댓글 ...", + "Unknown user" : "알 수 없는 사용자", + "New comment …" : "새로운 댓글 …", "Delete comment" : "댓글 삭제", "Post" : "게시", "Cancel" : "취소", "Edit comment" : "댓글 편집", "[Deleted user]" : "[삭제된 사용자]", - "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작합니다!", - "More comments …" : "더 많은 댓글...", + "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!", + "More comments …" : "더 많은 댓글 …", "Save" : "저장", "Allowed characters {count} of {max}" : "{count}/{max} 글자 사용 가능", - "Error occurred while retrieving comment with id {id}" : "댓글을 가져오는 중 오류가 발생했습니다 {ID}", - "Error occurred while updating comment with id {id}" : "댓글을 업데이트하는 동안 오류가 발생했습니다 {ID}", + "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개"], "Comment" : "설명", - "You commented" : "댓글을 달았습니다", + "You commented" : "댓글 남김", "%1$s commented" : "%1$s 님의 댓글", + "{author} commented" : "{author} 님이 댓글 남김", + "You commented on %1$s" : "%1$s에 댓글 남김", + "You commented on {file}" : "{file}에 댓글 남김", "%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김", + "{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김", "<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>", - "Type in a new comment..." : "새 댓글을 입력하십시오...", - "No other comments available" : "더 이상 댓글 없음", - "More comments..." : "더 많은 댓글...", - "{count} unread comments" : "읽지 않은 댓글 {count}개", - "You commented on %2$s" : "%2$s에 댓글 남김" + "A (now) deleted user mentioned you in a comment on “%s”" : "(현재) 삭제된 사용자가 “%s”에 남긴 댓글에서 여러분을 언급함", + "A (now) deleted user mentioned you in a comment on “{file}”" : "(현재) 삭제된 사용자가 “{file}”에 남긴 댓글에서 여러분을 언급함", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s 님이 “%2$s”에 남긴 댓글에서 여러분을 언급함", + "{user} mentioned you in a comment on “{file}”" : "{user} 님이 “{file}”에 남긴 댓글에서 여러분을 언급함" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/ko.json b/apps/comments/l10n/ko.json index 2a85af253a0..0f994e92580 100644 --- a/apps/comments/l10n/ko.json +++ b/apps/comments/l10n/ko.json @@ -1,29 +1,32 @@ { "translations": { "Comments" : "댓글", - "Unknown user" : "알려지지 않은 사용자", - "New comment …" : "새로운 댓글 ...", + "Unknown user" : "알 수 없는 사용자", + "New comment …" : "새로운 댓글 …", "Delete comment" : "댓글 삭제", "Post" : "게시", "Cancel" : "취소", "Edit comment" : "댓글 편집", "[Deleted user]" : "[삭제된 사용자]", - "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작합니다!", - "More comments …" : "더 많은 댓글...", + "No comments yet, start the conversation!" : "아직 댓글이 없습니다. 대화를 시작하십시오!", + "More comments …" : "더 많은 댓글 …", "Save" : "저장", "Allowed characters {count} of {max}" : "{count}/{max} 글자 사용 가능", - "Error occurred while retrieving comment with id {id}" : "댓글을 가져오는 중 오류가 발생했습니다 {ID}", - "Error occurred while updating comment with id {id}" : "댓글을 업데이트하는 동안 오류가 발생했습니다 {ID}", + "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개"], "Comment" : "설명", - "You commented" : "댓글을 달았습니다", + "You commented" : "댓글 남김", "%1$s commented" : "%1$s 님의 댓글", + "{author} commented" : "{author} 님이 댓글 남김", + "You commented on %1$s" : "%1$s에 댓글 남김", + "You commented on {file}" : "{file}에 댓글 남김", "%1$s commented on %2$s" : "%2$s에 %1$s 님이 댓글 남김", + "{author} commented on {file}" : "{author} 님이 {file}에 댓글 남김", "<strong>Comments</strong> for files" : "파일의 <strong>댓글</strong>", - "Type in a new comment..." : "새 댓글을 입력하십시오...", - "No other comments available" : "더 이상 댓글 없음", - "More comments..." : "더 많은 댓글...", - "{count} unread comments" : "읽지 않은 댓글 {count}개", - "You commented on %2$s" : "%2$s에 댓글 남김" + "A (now) deleted user mentioned you in a comment on “%s”" : "(현재) 삭제된 사용자가 “%s”에 남긴 댓글에서 여러분을 언급함", + "A (now) deleted user mentioned you in a comment on “{file}”" : "(현재) 삭제된 사용자가 “{file}”에 남긴 댓글에서 여러분을 언급함", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s 님이 “%2$s”에 남긴 댓글에서 여러분을 언급함", + "{user} mentioned you in a comment on “{file}”" : "{user} 님이 “{file}”에 남긴 댓글에서 여러분을 언급함" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/comments/tests/js/commentstabviewSpec.js b/apps/comments/tests/js/commentstabviewSpec.js index c961548d806..63a27956f9f 100644 --- a/apps/comments/tests/js/commentstabviewSpec.js +++ b/apps/comments/tests/js/commentstabviewSpec.js @@ -22,6 +22,7 @@ describe('OCA.Comments.CommentsTabView tests', function() { var view, fileInfoModel; var fetchStub; + var avatarStub; var testComments; var clock; @@ -42,6 +43,7 @@ describe('OCA.Comments.CommentsTabView tests', function() { beforeEach(function() { clock = sinon.useFakeTimers(Date.UTC(2016, 1, 3, 10, 5, 9)); fetchStub = sinon.stub(OCA.Comments.CommentCollection.prototype, 'fetchNext'); + avatarStub = sinon.stub($.fn, 'avatar'); view = new OCA.Comments.CommentsTabView(); fileInfoModel = new OCA.Files.FileInfoModel({ id: 5, @@ -102,6 +104,7 @@ describe('OCA.Comments.CommentsTabView tests', function() { view.remove(); view = undefined; fetchStub.restore(); + avatarStub.restore(); clock.restore(); }); describe('rendering', function() { @@ -151,9 +154,11 @@ describe('OCA.Comments.CommentsTabView tests', function() { expect($comment.length).toEqual(1); expect($comment.find('.avatar[data-user=macbeth]').length).toEqual(1); expect($comment.find('strong:first').text()).toEqual('Thane of Cawdor'); + expect($comment.find('.avatar[data-user=macbeth] ~ .contactsmenu-popover').length).toEqual(1); expect($comment.find('.avatar[data-user=banquo]').length).toEqual(1); expect($comment.find('.avatar-name-wrapper:last-child strong').text()).toEqual('Lord Banquo'); + expect($comment.find('.avatar[data-user=banquo] ~ .contactsmenu-popover').length).toEqual(1); }); }); @@ -223,6 +228,10 @@ describe('OCA.Comments.CommentsTabView tests', function() { uid: 'testuser', displayName: 'Test User' }); + + // Required for the absolute selector used to find the new comment + // after a successful creation in _onSubmitSuccess. + $('#testArea').append(view.$el); }); afterEach(function() { createStub.restore(); @@ -243,6 +252,50 @@ describe('OCA.Comments.CommentsTabView tests', function() { creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString() }); }); + it('creates a new comment with mentions when clicking post button', function() { + view.$el.find('.message').val('New message @anotheruser'); + view.$el.find('form').submit(); + + var createStubExpectedData = { + actorId: 'testuser', + actorDisplayName: 'Test User', + actorType: 'users', + verb: 'comment', + message: 'New message @anotheruser', + creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString() + }; + + expect(createStub.calledOnce).toEqual(true); + expect(createStub.lastCall.args[0]).toEqual(createStubExpectedData); + + var model = new OCA.Comments.CommentModel(_.extend({id: 4}, createStubExpectedData)); + var fetchStub = sinon.stub(model, 'fetch'); + // simulate the fact that create adds the model to the collection + view.collection.add(model, {at: 0}); + createStub.yieldTo('success', model); + + expect(fetchStub.calledOnce).toEqual(true); + + // simulate the fact that fetch sets the attribute + model.set('mentions', { + 0: { + mentionDisplayName: "Another User", + mentionId: "anotheruser", + mentionTye: "user" + } + }); + fetchStub.yieldTo('success', model); + + // comment was added to the list + var $comment = view.$el.find('.comment[data-id=4]'); + expect($comment.length).toEqual(1); + var $message = $comment.find('.message'); + expect($message.html()).toContain('New message'); + expect($message.find('.avatar').length).toEqual(1); + expect($message.find('.avatar[data-user=anotheruser]').length).toEqual(1); + expect($message.find('.avatar[data-user=anotheruser] ~ strong').text()).toEqual('Another User'); + expect($message.find('.avatar[data-user=anotheruser] ~ .contactsmenu-popover').length).toEqual(1); + }); it('does not create a comment if the field is empty', function() { view.$el.find('.message').val(' '); view.$el.find('form').submit(); @@ -302,13 +355,11 @@ describe('OCA.Comments.CommentsTabView tests', function() { describe('editing comments', function() { var saveStub; var fetchStub; - var avatarStub; var currentUserStub; beforeEach(function() { saveStub = sinon.stub(OCA.Comments.CommentModel.prototype, 'save'); fetchStub = sinon.stub(OCA.Comments.CommentModel.prototype, 'fetch'); - avatarStub = sinon.stub($.fn, 'avatar'); currentUserStub = sinon.stub(OC, 'getCurrentUser'); currentUserStub.returns({ uid: 'testuser', @@ -332,11 +383,31 @@ describe('OCA.Comments.CommentsTabView tests', function() { message: 'New message from another user', creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString(), }); + view.collection.add({ + id: 3, + actorId: 'testuser', + actorDisplayName: 'Test User', + actorType: 'users', + verb: 'comment', + message: 'Hail to thee, @macbeth. Yours faithfully, @banquo', + creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString(), + mentions: { + 0: { + mentionDisplayName: "Thane of Cawdor", + mentionId: "macbeth", + mentionTye: "user" + }, + 1: { + mentionDisplayName: "Lord Banquo", + mentionId: "banquo", + mentionTye: "user" + } + } + }); }); afterEach(function() { saveStub.restore(); fetchStub.restore(); - avatarStub.restore(); currentUserStub.restore(); }); @@ -394,6 +465,53 @@ describe('OCA.Comments.CommentsTabView tests', function() { expect($formRow.length).toEqual(0); }); + it('saves message and updates comment item with mentions when clicking save', function() { + var $comment = view.$el.find('.comment[data-id=3]'); + $comment.find('.action.edit').click(); + + var $formRow = view.$el.find('.newCommentRow.comment[data-id=3]'); + expect($formRow.length).toEqual(1); + + $formRow.find('textarea').val('modified\nmessage @anotheruser'); + $formRow.find('form').submit(); + + expect(saveStub.calledOnce).toEqual(true); + expect(saveStub.lastCall.args[0]).toEqual({ + message: 'modified\nmessage @anotheruser' + }); + + var model = view.collection.get(3); + // simulate the fact that save sets the attribute + model.set('message', 'modified\nmessage @anotheruser'); + saveStub.yieldTo('success', model); + + expect(fetchStub.calledOnce).toEqual(true); + + // simulate the fact that fetch sets the attribute + model.set('mentions', { + 0: { + mentionDisplayName: "Another User", + mentionId: "anotheruser", + mentionTye: "user" + } + }); + fetchStub.yieldTo('success', model); + + // original comment element is visible again + expect($comment.hasClass('hidden')).toEqual(false); + // and its message was updated + var $message = $comment.find('.message'); + expect($message.html()).toContain('modified<br>message'); + expect($message.find('.avatar').length).toEqual(1); + expect($message.find('.avatar[data-user=anotheruser]').length).toEqual(1); + expect($message.find('.avatar[data-user=anotheruser] ~ strong').text()).toEqual('Another User'); + expect($message.find('.avatar[data-user=anotheruser] ~ .contactsmenu-popover').length).toEqual(1); + + // form row is gone + $formRow = view.$el.find('.newCommentRow.comment[data-id=3]'); + expect($formRow.length).toEqual(0); + }); + it('restores original comment when cancelling', function() { var $comment = view.$el.find('.comment[data-id=1]'); $comment.find('.action.edit').click(); diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php index 0d417fd3fed..963073c4413 100644 --- a/apps/dav/appinfo/app.php +++ b/apps/dav/appinfo/app.php @@ -50,7 +50,13 @@ $eventDispatcher->addListener('OCP\Federation\TrustedServerEvent::remove', $cm = \OC::$server->getContactsManager(); $cm->register(function() use ($cm, $app) { $user = \OC::$server->getUserSession()->getUser(); - if (!is_null($user)) { - $app->setupContactsProvider($cm, $user->getUID()); + if (is_null($user)) { + return; } + if (\OC::$server->getConfig()->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') !== 'yes') { + // Don't include system users + // This prevents user enumeration in the contacts menu and the mail app + return; + } + $app->setupContactsProvider($cm, $user->getUID()); }); diff --git a/apps/dav/appinfo/database.xml b/apps/dav/appinfo/database.xml index 0efd2a46d61..b3a69de070c 100644 --- a/apps/dav/appinfo/database.xml +++ b/apps/dav/appinfo/database.xml @@ -671,6 +671,78 @@ CREATE TABLE calendarobjects ( </table> <table> + <name>*dbprefix*calendarobjects_props</name> + <declaration> + <field> + <name>id</name> + <type>integer</type> + <default>0</default> + <notnull>true</notnull> + <autoincrement>1</autoincrement> + <unsigned>true</unsigned> + <length>11</length> + </field> + <field> + <name>calendarid</name> + <type>integer</type> + <default></default> + <notnull>true</notnull> + <length>11</length> + </field> + <field> + <name>objectid</name> + <type>integer</type> + <default></default> + <notnull>true</notnull> + <unsigned>true</unsigned> + <length>11</length> + </field> + <field> + <name>name</name> + <type>text</type> + <default></default> + <notnull>false</notnull> + <length>64</length> + </field> + <field> + <name>parameter</name> + <type>text</type> + <default></default> + <notnull>false</notnull> + <length>64</length> + </field> + <field> + <name>value</name> + <type>text</type> + <default></default> + <notnull>false</notnull> + <length>255</length> + </field> + <index> + <name>calendarobject_index</name> + <field> + <name>objectid</name> + <sorting>ascending</sorting> + </field> + </index> + <index> + <name>calendarobject_name_index</name> + <field> + <name>name</name> + <sorting>ascending</sorting> + </field> + </index> + <index> + <name>calendarobject_value_index</name> + <field> + <name>value</name> + <sorting>ascending</sorting> + </field> + </index> + </declaration> + </table> + + <table> <name>*dbprefix*dav_shares</name> <declaration> <field> diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 0902c487247..2d9f73b3f43 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -5,7 +5,7 @@ <description>WebDAV endpoint</description> <licence>AGPL</licence> <author>owncloud.org</author> - <version>1.2.0</version> + <version>1.3.0</version> <default_enable/> <types> <filesystem/> @@ -24,6 +24,7 @@ <post-migration> <step>OCA\DAV\Migration\FixBirthdayCalendarComponent</step> <step>OCA\DAV\Migration\CalDAVRemoveEmptyValue</step> + <step>OCA\DAV\Migration\BuildCalendarSearchIndex</step> </post-migration> </repair-steps> <commands> diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php index 04344e83fde..8dea6684742 100644 --- a/apps/dav/appinfo/v1/carddav.php +++ b/apps/dav/appinfo/v1/carddav.php @@ -48,7 +48,7 @@ $principalBackend = new Principal( 'principals/' ); $db = \OC::$server->getDatabaseConnection(); -$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager()); +$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager(), \OC::$server->getEventDispatcher()); $debugging = \OC::$server->getConfig()->getSystemValue('debug', false); @@ -81,7 +81,7 @@ if ($debugging) { $server->addPlugin(new \Sabre\DAV\Sync\Plugin()); $server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin()); -$server->addPlugin(new \OCA\DAV\CardDAV\ImageExportPlugin(\OC::$server->getLogger())); +$server->addPlugin(new \OCA\DAV\CardDAV\ImageExportPlugin(new \OCA\DAV\CardDAV\PhotoCache(\OC::$server->getAppDataDir('dav-photocache')))); $server->addPlugin(new ExceptionLoggerPlugin('carddav', \OC::$server->getLogger())); // And off we go! diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js index acd0b85b03f..6ce1532cdc4 100644 --- a/apps/dav/l10n/cs.js +++ b/apps/dav/l10n/cs.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Narozeniny kontaktů", "Personal" : "Osobní", "Contacts" : "Kontakty", + "WebDAV" : "WebDAV", "Technical details" : "Technické detaily", "Remote Address: %s" : "Vzdálená adresa: %s", "Request ID: %s" : "ID požadavku: %s" diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json index c1a25b3401e..5639cc7aeef 100644 --- a/apps/dav/l10n/cs.json +++ b/apps/dav/l10n/cs.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Narozeniny kontaktů", "Personal" : "Osobní", "Contacts" : "Kontakty", + "WebDAV" : "WebDAV", "Technical details" : "Technické detaily", "Remote Address: %s" : "Vzdálená adresa: %s", "Request ID: %s" : "ID požadavku: %s" diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js index d5ebd166a29..7936b476bff 100644 --- a/apps/dav/l10n/de.js +++ b/apps/dav/l10n/de.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Geburtstage von Kontakten", "Personal" : "Persönlich", "Contacts" : "Kontakte", + "WebDAV" : "WebDAV", "Technical details" : "Technische Details", "Remote Address: %s" : "Remote-Adresse: %s", "Request ID: %s" : "Anfrage-ID: %s" diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json index dbec1faa87b..bb10f21def4 100644 --- a/apps/dav/l10n/de.json +++ b/apps/dav/l10n/de.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Geburtstage von Kontakten", "Personal" : "Persönlich", "Contacts" : "Kontakte", + "WebDAV" : "WebDAV", "Technical details" : "Technische Details", "Remote Address: %s" : "Remote-Adresse: %s", "Request ID: %s" : "Anfrage-ID: %s" diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js index 07758a7b122..0c248500500 100644 --- a/apps/dav/l10n/de_DE.js +++ b/apps/dav/l10n/de_DE.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Geburtstage von Kontakten", "Personal" : "Persönlich", "Contacts" : "Kontakte", + "WebDAV" : "WebDAV", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", "Request ID: %s" : "Anfragekennung: %s" diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json index 8440fb0ca50..4cd89f7600f 100644 --- a/apps/dav/l10n/de_DE.json +++ b/apps/dav/l10n/de_DE.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Geburtstage von Kontakten", "Personal" : "Persönlich", "Contacts" : "Kontakte", + "WebDAV" : "WebDAV", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", "Request ID: %s" : "Anfragekennung: %s" diff --git a/apps/dav/l10n/es_MX.js b/apps/dav/l10n/es_MX.js index d8753d65d34..e55ba031d13 100644 --- a/apps/dav/l10n/es_MX.js +++ b/apps/dav/l10n/es_MX.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Cumpleaños del contacto", "Personal" : "Personal", "Contacts" : "Contactos", + "WebDAV" : "WebDAV", "Technical details" : "Detalles técnicos", "Remote Address: %s" : "Dirección remota: %s", "Request ID: %s" : "ID de solicitud: %s" diff --git a/apps/dav/l10n/es_MX.json b/apps/dav/l10n/es_MX.json index 1eb8d35975c..1cec1017fd6 100644 --- a/apps/dav/l10n/es_MX.json +++ b/apps/dav/l10n/es_MX.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Cumpleaños del contacto", "Personal" : "Personal", "Contacts" : "Contactos", + "WebDAV" : "WebDAV", "Technical details" : "Detalles técnicos", "Remote Address: %s" : "Dirección remota: %s", "Request ID: %s" : "ID de solicitud: %s" diff --git a/apps/dav/l10n/fr.js b/apps/dav/l10n/fr.js index b7ac0f6f476..d85375afd3f 100644 --- a/apps/dav/l10n/fr.js +++ b/apps/dav/l10n/fr.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Anniversaires des contacts", "Personal" : "Personnel", "Contacts" : "Contacts", + "WebDAV" : "WebDAV", "Technical details" : "Détails techniques", "Remote Address: %s" : "Adresse distante : %s", "Request ID: %s" : "ID de la requête : %s" diff --git a/apps/dav/l10n/fr.json b/apps/dav/l10n/fr.json index ffe94009f03..459c7d0bc15 100644 --- a/apps/dav/l10n/fr.json +++ b/apps/dav/l10n/fr.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Anniversaires des contacts", "Personal" : "Personnel", "Contacts" : "Contacts", + "WebDAV" : "WebDAV", "Technical details" : "Détails techniques", "Remote Address: %s" : "Adresse distante : %s", "Request ID: %s" : "ID de la requête : %s" diff --git a/apps/dav/l10n/is.js b/apps/dav/l10n/is.js index 79b4275068a..b385c6200a5 100644 --- a/apps/dav/l10n/is.js +++ b/apps/dav/l10n/is.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Afmælisdagar tengiliðar", "Personal" : "Einka", "Contacts" : "Tengiliðir", + "WebDAV" : "WebDAV", "Technical details" : "Tæknilegar upplýsingar", "Remote Address: %s" : "Fjartengt vistfang: %s", "Request ID: %s" : "Beiðni um auðkenni: %s" diff --git a/apps/dav/l10n/is.json b/apps/dav/l10n/is.json index aba5a88917f..1433801c085 100644 --- a/apps/dav/l10n/is.json +++ b/apps/dav/l10n/is.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Afmælisdagar tengiliðar", "Personal" : "Einka", "Contacts" : "Tengiliðir", + "WebDAV" : "WebDAV", "Technical details" : "Tæknilegar upplýsingar", "Remote Address: %s" : "Fjartengt vistfang: %s", "Request ID: %s" : "Beiðni um auðkenni: %s" diff --git a/apps/dav/l10n/ko.js b/apps/dav/l10n/ko.js new file mode 100644 index 00000000000..af429509986 --- /dev/null +++ b/apps/dav/l10n/ko.js @@ -0,0 +1,49 @@ +OC.L10N.register( + "dav", + { + "Calendar" : "달력", + "Todos" : "할 일", + "{actor} created calendar {calendar}" : "{actor} 님이 달력 {calendar}을(를) 생성함", + "You created calendar {calendar}" : "달력 {calendar}을(를) 생성함", + "{actor} deleted calendar {calendar}" : "{actor} 님이 달력 {calendar}을(를) 삭제함", + "You deleted calendar {calendar}" : "달력 {calendar}을(를) 삭제함", + "{actor} updated calendar {calendar}" : "{actor} 님이 달력 {calendar}을(를) 업데이트함", + "You updated calendar {calendar}" : "달력 {calendar}을(를) 업데이트함", + "{actor} shared calendar {calendar} with you" : "{actor} 님이 내게 달력 {calendar}을(를) 공유함", + "You shared calendar {calendar} with {user}" : "{user} 님과 달력 {calendar}을(를) 공유함", + "{actor} shared calendar {calendar} with {user}" : "{actor} 님이 {user} 님과 달력 {calendar}을(를) 공유함", + "{actor} unshared calendar {calendar} from you" : "{actor} 님이 달력 {calendar}의 공유를 중단함", + "You unshared calendar {calendar} from {user}" : "{user} 님과 달력 {calendar}의 공유를 중단함", + "{actor} unshared calendar {calendar} from {user}" : "{actor} 님이 {user} 님과 {calendar} 달력의 공유를 중단함", + "{actor} unshared calendar {calendar} from themselves" : "{actor} 님이 달력 {calendar}의 공유를 해제함", + "You shared calendar {calendar} with group {group}" : "달력 {calendar}을(를) 그룹 {group}와(과) 공유함", + "{actor} shared calendar {calendar} with group {group}" : "{actor} 님이 달력 {calendar}을(를) 그룹 {group}와(과) 공유함", + "You unshared calendar {calendar} from group {group}" : "달력 {calendar}을(를) 그룹 {group}와(과) 공유하지 않음", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} 님이 달력 {calendar}을(를) 그룹 {group}와(과) 공유하지 않음", + "{actor} created event {event} in calendar {calendar}" : "{actor} 님이 행사 {event}을(를) 달력 {calendar}에 생성함", + "You created event {event} in calendar {calendar}" : "행사 {event}을(를) 달력 {calendar}에 생성함", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} 님이 행사 {event}을(를) 달력 {calendar}에서 삭제함", + "You deleted event {event} from calendar {calendar}" : "행사 {event}을(를) 달력 {calendar}에서 삭제함", + "{actor} updated event {event} in calendar {calendar}" : "{actor} 님이 달력 {calendar}의 행사 {event}을(를) 업데이트함", + "You updated event {event} in calendar {calendar}" : "달력 {calendar}의 행사 {event}을(를) 업데이트함", + "{actor} created todo {todo} in list {calendar}" : "{actor} 님이 목록 {calendar}에 할 일 {todo}을(를) 생성함", + "You created todo {todo} in list {calendar}" : "목록 {calendar}에 할 일 {todo}을(를) 생성함", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} 님이 목록 {calendar}에서 할 일 {todo}을(를) 삭제함", + "You deleted todo {todo} from list {calendar}" : "목록 {calendar}에서 할 일 {todo}을(를) 삭제함", + "{actor} updated todo {todo} in list {calendar}" : "{actor} 님이 목록 {calendar}의 할 일 {todo}을(를) 업데이트함", + "You updated todo {todo} in list {calendar}" : "목록 {calendar}의 할 일 {todo}을(를) 업데이트함", + "{actor} solved todo {todo} in list {calendar}" : "{actor} 님이 목록 {calendar}의 할 일 {todo}을(를) 끝냄", + "You solved todo {todo} in list {calendar}" : "목록 {calendar}의 할 일 {todo}을(를) 끝냄", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} 님이 목록 {calendar}의 할 일 {todo}을(를) 다시 염", + "You reopened todo {todo} in list {calendar}" : "목록 {calendar}의 할 일 {todo}을(를) 다시 염", + "A <strong>calendar</strong> was modified" : "<strong>달력</strong>이 수정됨", + "A calendar <strong>event</strong> was modified" : "달력 <strong>행사</strong>가 수정됨", + "A calendar <strong>todo</strong> was modified" : "달력의 <strong>할 일</strong>이 수정됨", + "Contact birthdays" : "연락처에 등록된 생일", + "Personal" : "개인", + "Contacts" : "연락처", + "Technical details" : "기술 정보", + "Remote Address: %s" : "원격 주소: %s", + "Request ID: %s" : "요청 ID: %s" +}, +"nplurals=1; plural=0;"); diff --git a/apps/dav/l10n/ko.json b/apps/dav/l10n/ko.json new file mode 100644 index 00000000000..7731c7140ae --- /dev/null +++ b/apps/dav/l10n/ko.json @@ -0,0 +1,47 @@ +{ "translations": { + "Calendar" : "달력", + "Todos" : "할 일", + "{actor} created calendar {calendar}" : "{actor} 님이 달력 {calendar}을(를) 생성함", + "You created calendar {calendar}" : "달력 {calendar}을(를) 생성함", + "{actor} deleted calendar {calendar}" : "{actor} 님이 달력 {calendar}을(를) 삭제함", + "You deleted calendar {calendar}" : "달력 {calendar}을(를) 삭제함", + "{actor} updated calendar {calendar}" : "{actor} 님이 달력 {calendar}을(를) 업데이트함", + "You updated calendar {calendar}" : "달력 {calendar}을(를) 업데이트함", + "{actor} shared calendar {calendar} with you" : "{actor} 님이 내게 달력 {calendar}을(를) 공유함", + "You shared calendar {calendar} with {user}" : "{user} 님과 달력 {calendar}을(를) 공유함", + "{actor} shared calendar {calendar} with {user}" : "{actor} 님이 {user} 님과 달력 {calendar}을(를) 공유함", + "{actor} unshared calendar {calendar} from you" : "{actor} 님이 달력 {calendar}의 공유를 중단함", + "You unshared calendar {calendar} from {user}" : "{user} 님과 달력 {calendar}의 공유를 중단함", + "{actor} unshared calendar {calendar} from {user}" : "{actor} 님이 {user} 님과 {calendar} 달력의 공유를 중단함", + "{actor} unshared calendar {calendar} from themselves" : "{actor} 님이 달력 {calendar}의 공유를 해제함", + "You shared calendar {calendar} with group {group}" : "달력 {calendar}을(를) 그룹 {group}와(과) 공유함", + "{actor} shared calendar {calendar} with group {group}" : "{actor} 님이 달력 {calendar}을(를) 그룹 {group}와(과) 공유함", + "You unshared calendar {calendar} from group {group}" : "달력 {calendar}을(를) 그룹 {group}와(과) 공유하지 않음", + "{actor} unshared calendar {calendar} from group {group}" : "{actor} 님이 달력 {calendar}을(를) 그룹 {group}와(과) 공유하지 않음", + "{actor} created event {event} in calendar {calendar}" : "{actor} 님이 행사 {event}을(를) 달력 {calendar}에 생성함", + "You created event {event} in calendar {calendar}" : "행사 {event}을(를) 달력 {calendar}에 생성함", + "{actor} deleted event {event} from calendar {calendar}" : "{actor} 님이 행사 {event}을(를) 달력 {calendar}에서 삭제함", + "You deleted event {event} from calendar {calendar}" : "행사 {event}을(를) 달력 {calendar}에서 삭제함", + "{actor} updated event {event} in calendar {calendar}" : "{actor} 님이 달력 {calendar}의 행사 {event}을(를) 업데이트함", + "You updated event {event} in calendar {calendar}" : "달력 {calendar}의 행사 {event}을(를) 업데이트함", + "{actor} created todo {todo} in list {calendar}" : "{actor} 님이 목록 {calendar}에 할 일 {todo}을(를) 생성함", + "You created todo {todo} in list {calendar}" : "목록 {calendar}에 할 일 {todo}을(를) 생성함", + "{actor} deleted todo {todo} from list {calendar}" : "{actor} 님이 목록 {calendar}에서 할 일 {todo}을(를) 삭제함", + "You deleted todo {todo} from list {calendar}" : "목록 {calendar}에서 할 일 {todo}을(를) 삭제함", + "{actor} updated todo {todo} in list {calendar}" : "{actor} 님이 목록 {calendar}의 할 일 {todo}을(를) 업데이트함", + "You updated todo {todo} in list {calendar}" : "목록 {calendar}의 할 일 {todo}을(를) 업데이트함", + "{actor} solved todo {todo} in list {calendar}" : "{actor} 님이 목록 {calendar}의 할 일 {todo}을(를) 끝냄", + "You solved todo {todo} in list {calendar}" : "목록 {calendar}의 할 일 {todo}을(를) 끝냄", + "{actor} reopened todo {todo} in list {calendar}" : "{actor} 님이 목록 {calendar}의 할 일 {todo}을(를) 다시 염", + "You reopened todo {todo} in list {calendar}" : "목록 {calendar}의 할 일 {todo}을(를) 다시 염", + "A <strong>calendar</strong> was modified" : "<strong>달력</strong>이 수정됨", + "A calendar <strong>event</strong> was modified" : "달력 <strong>행사</strong>가 수정됨", + "A calendar <strong>todo</strong> was modified" : "달력의 <strong>할 일</strong>이 수정됨", + "Contact birthdays" : "연락처에 등록된 생일", + "Personal" : "개인", + "Contacts" : "연락처", + "Technical details" : "기술 정보", + "Remote Address: %s" : "원격 주소: %s", + "Request ID: %s" : "요청 ID: %s" +},"pluralForm" :"nplurals=1; plural=0;" +}
\ No newline at end of file diff --git a/apps/dav/l10n/pl.js b/apps/dav/l10n/pl.js index e07afbb5528..f06a95e749b 100644 --- a/apps/dav/l10n/pl.js +++ b/apps/dav/l10n/pl.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Urodziny kontaktu", "Personal" : "Osobiste", "Contacts" : "Kontakty", + "WebDAV" : "WebDAV", "Technical details" : "Szczegóły techniczne", "Remote Address: %s" : "Adres zdalny: %s", "Request ID: %s" : "ID żądania: %s" diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json index 2409315f341..b75bf49b381 100644 --- a/apps/dav/l10n/pl.json +++ b/apps/dav/l10n/pl.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Urodziny kontaktu", "Personal" : "Osobiste", "Contacts" : "Kontakty", + "WebDAV" : "WebDAV", "Technical details" : "Szczegóły techniczne", "Remote Address: %s" : "Adres zdalny: %s", "Request ID: %s" : "ID żądania: %s" diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js index 731bc73c782..1f78311e7aa 100644 --- a/apps/dav/l10n/pt_BR.js +++ b/apps/dav/l10n/pt_BR.js @@ -4,7 +4,7 @@ OC.L10N.register( "Calendar" : "Calendário", "Todos" : "Tarefas", "{actor} created calendar {calendar}" : "{actor} criou o calendário {calendar}", - "You created calendar {calendar}" : "Voce criou o calendário {calendar}", + "You created calendar {calendar}" : "Você criou o calendário {calendar}", "{actor} deleted calendar {calendar}" : "{actor} excluiu o calendário {calendar}", "You deleted calendar {calendar}" : "Você excluiu o calendário {calendar}", "{actor} updated calendar {calendar}" : "{actor} atualizou o calendário {calendar}", @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Aniversário dos contatos", "Personal" : "Pessoal", "Contacts" : "Contatos", + "WebDAV" : "WebDAV", "Technical details" : "Detalhes técnicos", "Remote Address: %s" : "Endereço remoto: %s", "Request ID: %s" : "ID do solicitante: %s" diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json index 75efd572620..79ef84161b2 100644 --- a/apps/dav/l10n/pt_BR.json +++ b/apps/dav/l10n/pt_BR.json @@ -2,7 +2,7 @@ "Calendar" : "Calendário", "Todos" : "Tarefas", "{actor} created calendar {calendar}" : "{actor} criou o calendário {calendar}", - "You created calendar {calendar}" : "Voce criou o calendário {calendar}", + "You created calendar {calendar}" : "Você criou o calendário {calendar}", "{actor} deleted calendar {calendar}" : "{actor} excluiu o calendário {calendar}", "You deleted calendar {calendar}" : "Você excluiu o calendário {calendar}", "{actor} updated calendar {calendar}" : "{actor} atualizou o calendário {calendar}", @@ -40,6 +40,7 @@ "Contact birthdays" : "Aniversário dos contatos", "Personal" : "Pessoal", "Contacts" : "Contatos", + "WebDAV" : "WebDAV", "Technical details" : "Detalhes técnicos", "Remote Address: %s" : "Endereço remoto: %s", "Request ID: %s" : "ID do solicitante: %s" diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js index e6749e7fb1b..d5f801106c1 100644 --- a/apps/dav/l10n/ru.js +++ b/apps/dav/l10n/ru.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Дни рождения контакта", "Personal" : "Личное", "Contacts" : "Контакты", + "WebDAV" : "WebDAV", "Technical details" : "Технические подробности", "Remote Address: %s" : "Удаленный адрес: %s", "Request ID: %s" : "ID запроса: %s" diff --git a/apps/dav/l10n/ru.json b/apps/dav/l10n/ru.json index 538be85207e..499d8e78d78 100644 --- a/apps/dav/l10n/ru.json +++ b/apps/dav/l10n/ru.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Дни рождения контакта", "Personal" : "Личное", "Contacts" : "Контакты", + "WebDAV" : "WebDAV", "Technical details" : "Технические подробности", "Remote Address: %s" : "Удаленный адрес: %s", "Request ID: %s" : "ID запроса: %s" diff --git a/apps/dav/l10n/sq.js b/apps/dav/l10n/sq.js index 6a683d01712..6138da04169 100644 --- a/apps/dav/l10n/sq.js +++ b/apps/dav/l10n/sq.js @@ -2,6 +2,7 @@ OC.L10N.register( "dav", { "Calendar" : "Kalendar", + "Todos" : "Për tu bërë", "{actor} created calendar {calendar}" : "{actor} krijoj kalendarin {calendar}", "You created calendar {calendar}" : "Ju krijuat kalendarin {calendar}", "{actor} deleted calendar {calendar}" : "{actor} fshiu kalendarin {calendar}", diff --git a/apps/dav/l10n/sq.json b/apps/dav/l10n/sq.json index f5a98e8845c..27a36bbff81 100644 --- a/apps/dav/l10n/sq.json +++ b/apps/dav/l10n/sq.json @@ -1,5 +1,6 @@ { "translations": { "Calendar" : "Kalendar", + "Todos" : "Për tu bërë", "{actor} created calendar {calendar}" : "{actor} krijoj kalendarin {calendar}", "You created calendar {calendar}" : "Ju krijuat kalendarin {calendar}", "{actor} deleted calendar {calendar}" : "{actor} fshiu kalendarin {calendar}", diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js index e87821e3ddf..059e4e05dcf 100644 --- a/apps/dav/l10n/tr.js +++ b/apps/dav/l10n/tr.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "Kişi doğum günleri", "Personal" : "Kişisel", "Contacts" : "Kişiler", + "WebDAV" : "WebDAV", "Technical details" : "Teknik ayrıntılar", "Remote Address: %s" : "Uzak Adres: %s", "Request ID: %s" : "İstek Kodu: %s" diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json index 7556b5e77c0..afe3c7719d6 100644 --- a/apps/dav/l10n/tr.json +++ b/apps/dav/l10n/tr.json @@ -40,6 +40,7 @@ "Contact birthdays" : "Kişi doğum günleri", "Personal" : "Kişisel", "Contacts" : "Kişiler", + "WebDAV" : "WebDAV", "Technical details" : "Teknik ayrıntılar", "Remote Address: %s" : "Uzak Adres: %s", "Request ID: %s" : "İstek Kodu: %s" diff --git a/apps/dav/l10n/zh_CN.js b/apps/dav/l10n/zh_CN.js index ab25f50f4d6..9239d47ab5c 100644 --- a/apps/dav/l10n/zh_CN.js +++ b/apps/dav/l10n/zh_CN.js @@ -42,6 +42,7 @@ OC.L10N.register( "Contact birthdays" : "联系人生日", "Personal" : "个人", "Contacts" : "联系人", + "WebDAV" : "WebDAV", "Technical details" : "技术细节", "Remote Address: %s" : "远程地址: %s", "Request ID: %s" : "请求 ID: %s" diff --git a/apps/dav/l10n/zh_CN.json b/apps/dav/l10n/zh_CN.json index 1dd7fde8c00..10be90a6128 100644 --- a/apps/dav/l10n/zh_CN.json +++ b/apps/dav/l10n/zh_CN.json @@ -40,6 +40,7 @@ "Contact birthdays" : "联系人生日", "Personal" : "个人", "Contacts" : "联系人", + "WebDAV" : "WebDAV", "Technical details" : "技术细节", "Remote Address: %s" : "远程地址: %s", "Request ID: %s" : "请求 ID: %s" diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php index b4f16f3cadf..5d89324d4a9 100644 --- a/apps/dav/lib/AppInfo/Application.php +++ b/apps/dav/lib/AppInfo/Application.php @@ -24,11 +24,13 @@ */ namespace OCA\DAV\AppInfo; +use OC\AppFramework\Utility\SimpleContainer; use OCA\DAV\CalDAV\Activity\Backend; use OCA\DAV\CalDAV\Activity\Provider\Event; use OCA\DAV\CalDAV\BirthdayService; use OCA\DAV\Capabilities; use OCA\DAV\CardDAV\ContactsManager; +use OCA\DAV\CardDAV\PhotoCache; use OCA\DAV\CardDAV\SyncService; use OCA\DAV\HookManager; use \OCP\AppFramework\App; @@ -44,10 +46,19 @@ class Application extends App { public function __construct() { parent::__construct('dav'); + $container = $this->getContainer(); + $server = $container->getServer(); + + $container->registerService(PhotoCache::class, function(SimpleContainer $s) use ($server) { + return new PhotoCache( + $server->getAppDataDir('dav-photocache') + ); + }); + /* * Register capabilities */ - $this->getContainer()->registerCapability(Capabilities::class); + $container->registerCapability(Capabilities::class); } /** @@ -101,6 +112,19 @@ class Application extends App { } }); + $clearPhotoCache = function($event) { + if ($event instanceof GenericEvent) { + /** @var PhotoCache $p */ + $p = $this->getContainer()->query(PhotoCache::class); + $p->delete( + $event->getArgument('addressBookId'), + $event->getArgument('cardUri') + ); + } + }; + $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $clearPhotoCache); + $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $clearPhotoCache); + $dispatcher->addListener('OC\AccountManager::userUpdated', function(GenericEvent $event) { $user = $event->getSubject(); $syncService = $this->getContainer()->query(SyncService::class); diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index a4fed4f1982..fcf73cb0f31 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -1,11 +1,13 @@ <?php /** * @copyright Copyright (c) 2016, ownCloud, Inc. + * @copyright Copyright (c) 2017 Georg Ehrke * * @author Joas Schilling <coding@schilljs.com> * @author Stefan Weil <sw@weilnetz.de> * @author Thomas Citharel <tcit@tcit.fr> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Georg Ehrke <oc.list@georgehrke.com> * * @license AGPL-3.0 * @@ -44,6 +46,7 @@ use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\Exception\NotFound; use Sabre\DAV\PropPatch; use Sabre\HTTP\URLUtil; +use Sabre\VObject\Component\VCalendar; use Sabre\VObject\DateTimeParser; use Sabre\VObject\Reader; use Sabre\VObject\Recur\EventIterator; @@ -108,6 +111,17 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription '{http://calendarserver.org/ns/}subscribed-strip-attachments' => 'stripattachments', ]; + /** @var array properties to index */ + public static $indexProperties = ['CATEGORIES', 'COMMENT', 'DESCRIPTION', + 'LOCATION', 'RESOURCES', 'STATUS', 'SUMMARY', 'ATTENDEE', 'CONTACT', + 'ORGANIZER']; + + /** @var array parameters to index */ + public static $indexParameters = [ + 'ATTENDEE' => ['CN'], + 'ORGANIZER' => ['CN'], + ]; + /** * @var string[] Map of uid => display name */ @@ -134,6 +148,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription /** @var bool */ private $legacyEndpoint; + /** @var string */ + private $dbObjectPropertiesTable = 'calendarobjects_props'; + /** * CalDavBackend constructor. * @@ -746,6 +763,11 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $stmt->execute([$calendarId]); $this->sharingBackend->deleteAllShares($calendarId); + + $query = $this->db->getQueryBuilder(); + $query->delete($this->dbObjectPropertiesTable) + ->where($query->expr()->eq('calendarid', $query->createNamedParameter($calendarId))) + ->execute(); } /** @@ -940,6 +962,8 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription ]) ->execute(); + $this->updateProperties($calendarId, $objectUri, $calendarData); + $this->dispatcher->dispatch('\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject', new GenericEvent( '\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject', [ @@ -990,6 +1014,8 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription ->andWhere($query->expr()->eq('uri', $query->createNamedParameter($objectUri))) ->execute(); + $this->updateProperties($calendarId, $objectUri, $calendarData); + $data = $this->getCalendarObject($calendarId, $objectUri); if (is_array($data)) { $this->dispatcher->dispatch('\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject', new GenericEvent( @@ -1050,6 +1076,8 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription $stmt = $this->db->prepare('DELETE FROM `*PREFIX*calendarobjects` WHERE `calendarid` = ? AND `uri` = ?'); $stmt->execute([$calendarId, $objectUri]); + $this->purgeProperties($calendarId, $data['id']); + $this->addChange($calendarId, $objectUri, 3); } @@ -1168,6 +1196,125 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription } /** + * custom Nextcloud search extension for CalDAV + * + * @param string $principalUri + * @param array $filters + * @param integer|null $limit + * @param integer|null $offset + * @return array + */ + public function calendarSearch($principalUri, array $filters, $limit=null, $offset=null) { + $calendars = $this->getCalendarsForUser($principalUri); + $ownCalendars = []; + $sharedCalendars = []; + + $uriMapper = []; + + foreach($calendars as $calendar) { + if ($calendar['{http://owncloud.org/ns}owner-principal'] === $principalUri) { + $ownCalendars[] = $calendar['id']; + } else { + $sharedCalendars[] = $calendar['id']; + } + $uriMapper[$calendar['id']] = $calendar['uri']; + } + if (count($ownCalendars) === 0 && count($sharedCalendars) === 0) { + return []; + } + + $query = $this->db->getQueryBuilder(); + // Calendar id expressions + $calendarExpressions = []; + foreach($ownCalendars as $id) { + $calendarExpressions[] = $query->expr() + ->eq('c.calendarid', $query->createNamedParameter($id)); + } + foreach($sharedCalendars as $id) { + $calendarExpressions[] = $query->expr()->andX( + $query->expr()->eq('c.calendarid', + $query->createNamedParameter($id)), + $query->expr()->eq('c.classification', + $query->createNamedParameter(self::CLASSIFICATION_PUBLIC)) + ); + } + + if (count($calendarExpressions) === 1) { + $calExpr = $calendarExpressions[0]; + } else { + $calExpr = call_user_func_array([$query->expr(), 'orX'], $calendarExpressions); + } + + // Component expressions + $compExpressions = []; + foreach($filters['comps'] as $comp) { + $compExpressions[] = $query->expr() + ->eq('c.componenttype', $query->createNamedParameter($comp)); + } + + if (count($compExpressions) === 1) { + $compExpr = $compExpressions[0]; + } else { + $compExpr = call_user_func_array([$query->expr(), 'orX'], $compExpressions); + } + + if (!isset($filters['props'])) { + $filters['props'] = []; + } + if (!isset($filters['params'])) { + $filters['params'] = []; + } + + $propParamExpressions = []; + foreach($filters['props'] as $prop) { + $propParamExpressions[] = $query->expr()->andX( + $query->expr()->eq('i.name', $query->createNamedParameter($prop)), + $query->expr()->isNull('i.parameter') + ); + } + foreach($filters['params'] as $param) { + $propParamExpressions[] = $query->expr()->andX( + $query->expr()->eq('i.name', $query->createNamedParameter($param['property'])), + $query->expr()->eq('i.parameter', $query->createNamedParameter($param['parameter'])) + ); + } + + if (count($propParamExpressions) === 1) { + $propParamExpr = $propParamExpressions[0]; + } else { + $propParamExpr = call_user_func_array([$query->expr(), 'orX'], $propParamExpressions); + } + + $query->select(['c.calendarid', 'c.uri']) + ->from($this->dbObjectPropertiesTable, 'i') + ->join('i', 'calendarobjects', 'c', $query->expr()->eq('i.objectid', 'c.id')) + ->where($calExpr) + ->andWhere($compExpr) + ->andWhere($propParamExpr) + ->andWhere($query->expr()->iLike('i.value', + $query->createNamedParameter('%'.$this->db->escapeLikeParameter($filters['search-term']).'%'))); + + if ($offset) { + $query->setFirstResult($offset); + } + if ($limit) { + $query->setMaxResults($limit); + } + + $stmt = $query->execute(); + + $result = []; + while($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { + $path = $uriMapper[$row['calendarid']] . '/' . $row['uri']; + if (!in_array($path, $result)) { + $result[] = $path; + } + } + + return $result; + } + + /** * Searches through all of a users calendars and calendar objects to find * an object with a specific UID. * @@ -1820,6 +1967,130 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription return $this->sharingBackend->applyShareAcl($resourceId, $acl); } + + + /** + * update properties table + * + * @param int $calendarId + * @param string $objectUri + * @param string $calendarData + */ + public function updateProperties($calendarId, $objectUri, $calendarData) { + $objectId = $this->getCalendarObjectId($calendarId, $objectUri); + + try { + $vCalendar = $this->readCalendarData($calendarData); + } catch (\Exception $ex) { + return; + } + + $this->purgeProperties($calendarId, $objectId); + + $query = $this->db->getQueryBuilder(); + $query->insert($this->dbObjectPropertiesTable) + ->values( + [ + 'calendarid' => $query->createNamedParameter($calendarId), + 'objectid' => $query->createNamedParameter($objectId), + 'name' => $query->createParameter('name'), + 'parameter' => $query->createParameter('parameter'), + 'value' => $query->createParameter('value'), + ] + ); + + $indexComponents = ['VEVENT', 'VJOURNAL', 'VTODO']; + foreach ($vCalendar->getComponents() as $component) { + if (!in_array($component->name, $indexComponents)) { + continue; + } + + foreach ($component->children() as $property) { + if (in_array($property->name, self::$indexProperties)) { + $value = $property->getValue(); + // is this a shitty db? + if ($this->db->supports4ByteText()) { + $value = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $value); + } + $value = substr($value, 0, 254); + + $query->setParameter('name', $property->name); + $query->setParameter('parameter', null); + $query->setParameter('value', $value); + $query->execute(); + } + + if (in_array($property->name, array_keys(self::$indexParameters))) { + $parameters = $property->parameters(); + $indexedParametersForProperty = self::$indexParameters[$property->name]; + + foreach ($parameters as $key => $value) { + if (in_array($key, $indexedParametersForProperty)) { + // is this a shitty db? + if ($this->db->supports4ByteText()) { + $value = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $value); + } + $value = substr($value, 0, 254); + + $query->setParameter('name', $property->name); + $query->setParameter('parameter', substr($key, 0, 254)); + $query->setParameter('value', substr($value, 0, 254)); + $query->execute(); + } + } + } + } + } + } + + /** + * read VCalendar data into a VCalendar object + * + * @param string $objectData + * @return VCalendar + */ + protected function readCalendarData($objectData) { + return Reader::read($objectData); + } + + /** + * delete all properties from a given calendar object + * + * @param int $calendarId + * @param int $objectId + */ + protected function purgeProperties($calendarId, $objectId) { + $query = $this->db->getQueryBuilder(); + $query->delete($this->dbObjectPropertiesTable) + ->where($query->expr()->eq('objectid', $query->createNamedParameter($objectId))) + ->andWhere($query->expr()->eq('calendarid', $query->createNamedParameter($calendarId))); + $query->execute(); + } + + /** + * get ID from a given calendar object + * + * @param int $calendarId + * @param string $uri + * @return int + */ + protected function getCalendarObjectId($calendarId, $uri) { + $query = $this->db->getQueryBuilder(); + $query->select('id')->from('calendarobjects') + ->where($query->expr()->eq('uri', $query->createNamedParameter($uri))) + ->andWhere($query->expr()->eq('calendarid', $query->createNamedParameter($calendarId))); + + $result = $query->execute(); + $objectIds = $result->fetch(); + $result->closeCursor(); + + if (!isset($objectIds['id'])) { + throw new \InvalidArgumentException('Calendarobject does not exists: ' . $uri); + } + + return (int)$objectIds['id']; + } + private function convertPrincipal($principalUri, $toV2) { if ($this->principalBackend->getPrincipalPrefix() === 'principals') { list(, $name) = URLUtil::splitPath($principalUri); diff --git a/apps/dav/lib/CalDAV/Calendar.php b/apps/dav/lib/CalDAV/Calendar.php index a216e4e078b..9c56398b14c 100644 --- a/apps/dav/lib/CalDAV/Calendar.php +++ b/apps/dav/lib/CalDAV/Calendar.php @@ -145,11 +145,16 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { ]; } - if ($this->isShared()) { + $acl = $this->caldavBackend->applyShareAcl($this->getResourceId(), $acl); + + if (!$this->isShared()) { return $acl; } - return $this->caldavBackend->applyShareAcl($this->getResourceId(), $acl); + $allowedPrincipals = [$this->getOwner(), parent::getOwner(), 'principals/system/public']; + return array_filter($acl, function($rule) use ($allowedPrincipals) { + return in_array($rule['principal'], $allowedPrincipals); + }); } public function getChildACL() { diff --git a/apps/dav/lib/CalDAV/CalendarHome.php b/apps/dav/lib/CalDAV/CalendarHome.php index 7320754e6df..2aa2c9caa36 100644 --- a/apps/dav/lib/CalDAV/CalendarHome.php +++ b/apps/dav/lib/CalDAV/CalendarHome.php @@ -111,4 +111,14 @@ class CalendarHome extends \Sabre\CalDAV\CalendarHome { throw new NotFound('Node with name \'' . $name . '\' could not be found'); } + + /** + * @param array $filters + * @param integer|null $limit + * @param integer|null $offset + */ + function calendarSearch(array $filters, $limit=null, $offset=null) { + $principalUri = $this->principalInfo['uri']; + return $this->caldavBackend->calendarSearch($principalUri, $filters, $limit, $offset); + } } diff --git a/apps/dav/lib/CalDAV/Search/SearchPlugin.php b/apps/dav/lib/CalDAV/Search/SearchPlugin.php new file mode 100644 index 00000000000..d658a50437d --- /dev/null +++ b/apps/dav/lib/CalDAV/Search/SearchPlugin.php @@ -0,0 +1,159 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\Search; + +use Sabre\DAV\Server; +use Sabre\DAV\ServerPlugin; +use OCA\DAV\CalDAV\CalendarHome; + +class SearchPlugin extends ServerPlugin { + const NS_Nextcloud = 'http://nextcloud.com/ns'; + + /** + * Reference to SabreDAV server object. + * + * @var \Sabre\DAV\Server + */ + protected $server; + + /** + * This method should return a list of server-features. + * + * This is for example 'versioning' and is added to the DAV: header + * in an OPTIONS response. + * + * @return string[] + */ + public function getFeatures() { + // May have to be changed to be detected + return ['nc-calendar-search']; + } + + /** + * Returns a plugin name. + * + * Using this name other plugins will be able to access other plugins + * using Sabre\DAV\Server::getPlugin + * + * @return string + */ + public function getPluginName() { + return 'nc-calendar-search'; + } + + /** + * This initializes the plugin. + * + * This function is called by Sabre\DAV\Server, after + * addPlugin is called. + * + * This method should set up the required event subscriptions. + * + * @param Server $server + */ + public function initialize(Server $server) { + $this->server = $server; + + $server->on('report', [$this, 'report']); + + $server->xml->elementMap['{' . self::NS_Nextcloud . '}calendar-search'] = + 'OCA\\DAV\\CalDAV\\Search\\Xml\\Request\\CalendarSearchReport'; + } + + /** + * This functions handles REPORT requests specific to CalDAV + * + * @param string $reportName + * @param mixed $report + * @param mixed $path + * @return bool + */ + public function report($reportName, $report, $path) { + switch ($reportName) { + case '{' . self::NS_Nextcloud . '}calendar-search': + $this->server->transactionType = 'report-nc-calendar-search'; + $this->calendarSearch($report); + return false; + } + } + + /** + * Returns a list of reports this plugin supports. + * + * This will be used in the {DAV:}supported-report-set property. + * Note that you still need to subscribe to the 'report' event to actually + * implement them + * + * @param string $uri + * @return array + */ + public function getSupportedReportSet($uri) { + $node = $this->server->tree->getNodeForPath($uri); + + $reports = []; + if ($node instanceof CalendarHome) { + $reports[] = '{' . self::NS_Nextcloud . '}calendar-search'; + } + + return $reports; + } + + /** + * This function handles the calendar-query REPORT + * + * This report is used by clients to request calendar objects based on + * complex conditions. + * + * @param Xml\Request\CalendarSearchReport $report + * @return void + */ + private function calendarSearch($report) { + $node = $this->server->tree->getNodeForPath($this->server->getRequestUri()); + $depth = $this->server->getHTTPDepth(2); + + // The default result is an empty array + $result = []; + + // If we're dealing with the calendar home, the calendar home itself is + // responsible for the calendar-query + if ($node instanceof CalendarHome && $depth == 2) { + + $nodePaths = $node->calendarSearch($report->filters, $report->limit, $report->offset); + + foreach ($nodePaths as $path) { + list($properties) = $this->server->getPropertiesForPath( + $this->server->getRequestUri() . '/' . $path, + $report->properties); + $result[] = $properties; + } + } + + $prefer = $this->server->getHTTPPrefer(); + + $this->server->httpResponse->setStatus(207); + $this->server->httpResponse->setHeader('Content-Type', + 'application/xml; charset=utf-8'); + $this->server->httpResponse->setHeader('Vary', 'Brief,Prefer'); + $this->server->httpResponse->setBody( + $this->server->generateMultiStatus($result, + $prefer['return'] === 'minimal')); + } +}
\ No newline at end of file diff --git a/apps/dav/lib/CalDAV/Search/Xml/Filter/CompFilter.php b/apps/dav/lib/CalDAV/Search/Xml/Filter/CompFilter.php new file mode 100644 index 00000000000..a2a3c910f05 --- /dev/null +++ b/apps/dav/lib/CalDAV/Search/Xml/Filter/CompFilter.php @@ -0,0 +1,47 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\Search\Xml\Filter; + +use Sabre\DAV\Exception\BadRequest; +use Sabre\Xml\Reader; +use Sabre\Xml\XmlDeserializable; +use OCA\DAV\CalDAV\Search\SearchPlugin; + +class CompFilter implements XmlDeserializable { + + /** + * @param Reader $reader + * @throws BadRequest + * @return string + */ + static function xmlDeserialize(Reader $reader) { + $att = $reader->parseAttributes(); + $componentName = $att['name']; + + $reader->parseInnerTree(); + + if (!is_string($componentName)) { + throw new BadRequest('The {' . SearchPlugin::NS_Nextcloud . '}comp-filter requires a valid name attribute'); + } + + return $componentName; + } +} diff --git a/apps/dav/lib/CalDAV/Search/Xml/Filter/LimitFilter.php b/apps/dav/lib/CalDAV/Search/Xml/Filter/LimitFilter.php new file mode 100644 index 00000000000..f5de78b539c --- /dev/null +++ b/apps/dav/lib/CalDAV/Search/Xml/Filter/LimitFilter.php @@ -0,0 +1,43 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\Search\Xml\Filter; + +use Sabre\DAV\Exception\BadRequest; +use Sabre\Xml\Reader; +use Sabre\Xml\XmlDeserializable; +use OCA\DAV\CalDAV\Search\SearchPlugin; + +class LimitFilter implements XmlDeserializable { + + /** + * @param Reader $reader + * @throws BadRequest + * @return int + */ + static function xmlDeserialize(Reader $reader) { + $value = $reader->parseInnerTree(); + if (!is_int($value) && !is_string($value)) { + throw new BadRequest('The {' . SearchPlugin::NS_Nextcloud . '}limit has illegal value'); + } + + return intval($value); + } +}
\ No newline at end of file diff --git a/apps/dav/lib/CalDAV/Search/Xml/Filter/OffsetFilter.php b/apps/dav/lib/CalDAV/Search/Xml/Filter/OffsetFilter.php new file mode 100644 index 00000000000..7257e1e72f9 --- /dev/null +++ b/apps/dav/lib/CalDAV/Search/Xml/Filter/OffsetFilter.php @@ -0,0 +1,43 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\Search\Xml\Filter; + +use Sabre\DAV\Exception\BadRequest; +use Sabre\Xml\Reader; +use Sabre\Xml\XmlDeserializable; +use OCA\DAV\CalDAV\Search\SearchPlugin; + +class OffsetFilter implements XmlDeserializable { + + /** + * @param Reader $reader + * @throws BadRequest + * @return int + */ + static function xmlDeserialize(Reader $reader) { + $value = $reader->parseInnerTree(); + if (!is_int($value) && !is_string($value)) { + throw new BadRequest('The {' . SearchPlugin::NS_Nextcloud . '}offset has illegal value'); + } + + return intval($value); + } +}
\ No newline at end of file diff --git a/apps/dav/lib/CalDAV/Search/Xml/Filter/ParamFilter.php b/apps/dav/lib/CalDAV/Search/Xml/Filter/ParamFilter.php new file mode 100644 index 00000000000..1c443763daf --- /dev/null +++ b/apps/dav/lib/CalDAV/Search/Xml/Filter/ParamFilter.php @@ -0,0 +1,55 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\Search\Xml\Filter; + +use Sabre\DAV\Exception\BadRequest; +use Sabre\Xml\Reader; +use Sabre\Xml\XmlDeserializable; +use OCA\DAV\CalDAV\Search\SearchPlugin; + +class ParamFilter implements XmlDeserializable { + + /** + * @param Reader $reader + * @throws BadRequest + * @return string + */ + static function xmlDeserialize(Reader $reader) { + $att = $reader->parseAttributes(); + $property = $att['property']; + $parameter = $att['name']; + + $reader->parseInnerTree(); + + if (!is_string($property)) { + throw new BadRequest('The {' . SearchPlugin::NS_Nextcloud . '}param-filter requires a valid property attribute'); + + } + if (!is_string($parameter)) { + throw new BadRequest('The {' . SearchPlugin::NS_Nextcloud . '}param-filter requires a valid parameter attribute'); + } + + return [ + 'property' => $property, + 'parameter' => $parameter, + ]; + } +} diff --git a/apps/dav/lib/CalDAV/Search/Xml/Filter/PropFilter.php b/apps/dav/lib/CalDAV/Search/Xml/Filter/PropFilter.php new file mode 100644 index 00000000000..06b41d91c6e --- /dev/null +++ b/apps/dav/lib/CalDAV/Search/Xml/Filter/PropFilter.php @@ -0,0 +1,47 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\Search\Xml\Filter; + +use Sabre\DAV\Exception\BadRequest; +use Sabre\Xml\Reader; +use Sabre\Xml\XmlDeserializable; +use OCA\DAV\CalDAV\Search\SearchPlugin; + +class PropFilter implements XmlDeserializable { + + /** + * @param Reader $reader + * @throws BadRequest + * @return string + */ + static function xmlDeserialize(Reader $reader) { + $att = $reader->parseAttributes(); + $componentName = $att['name']; + + $reader->parseInnerTree(); + + if (!is_string($componentName)) { + throw new BadRequest('The {' . SearchPlugin::NS_Nextcloud . '}prop-filter requires a valid name attribute'); + } + + return $componentName; + } +} diff --git a/apps/dav/lib/CalDAV/Search/Xml/Filter/SearchTermFilter.php b/apps/dav/lib/CalDAV/Search/Xml/Filter/SearchTermFilter.php new file mode 100644 index 00000000000..8779e2b3940 --- /dev/null +++ b/apps/dav/lib/CalDAV/Search/Xml/Filter/SearchTermFilter.php @@ -0,0 +1,43 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\Search\Xml\Filter; + +use Sabre\DAV\Exception\BadRequest; +use Sabre\Xml\Reader; +use Sabre\Xml\XmlDeserializable; +use OCA\DAV\CalDAV\Search\SearchPlugin; + +class SearchTermFilter implements XmlDeserializable { + + /** + * @param Reader $reader + * @throws BadRequest + * @return string + */ + static function xmlDeserialize(Reader $reader) { + $value = $reader->parseInnerTree(); + if (!is_string($value)) { + throw new BadRequest('The {' . SearchPlugin::NS_Nextcloud . '}search-term has illegal value'); + } + + return $value; + } +}
\ No newline at end of file diff --git a/apps/dav/lib/CalDAV/Search/Xml/Request/CalendarSearchReport.php b/apps/dav/lib/CalDAV/Search/Xml/Request/CalendarSearchReport.php new file mode 100644 index 00000000000..4d22f310c24 --- /dev/null +++ b/apps/dav/lib/CalDAV/Search/Xml/Request/CalendarSearchReport.php @@ -0,0 +1,167 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\Search\Xml\Request; + +use Sabre\DAV\Exception\BadRequest; +use Sabre\Xml\Reader; +use Sabre\Xml\XmlDeserializable; +use OCA\DAV\CalDAV\Search\SearchPlugin; + +/** + * CalendarSearchReport request parser. + * + * This class parses the {urn:ietf:params:xml:ns:caldav}calendar-query + * REPORT, as defined in: + * + * https:// link to standard + */ +class CalendarSearchReport implements XmlDeserializable { + + /** + * An array with requested properties. + * + * @var array + */ + public $properties; + + /** + * List of property/component filters. + * + * @var array + */ + public $filters; + + /** + * @var int + */ + public $limit; + + /** + * @var int + */ + public $offset; + + /** + * The deserialize method is called during xml parsing. + * + * This method is called statically, this is because in theory this method + * may be used as a type of constructor, or factory method. + * + * Often you want to return an instance of the current class, but you are + * free to return other data as well. + * + * You are responsible for advancing the reader to the next element. Not + * doing anything will result in a never-ending loop. + * + * If you just want to skip parsing for this element altogether, you can + * just call $reader->next(); + * + * $reader->parseInnerTree() will parse the entire sub-tree, and advance to + * the next element. + * + * @param Reader $reader + * @return mixed + */ + static function xmlDeserialize(Reader $reader) { + $elems = $reader->parseInnerTree([ + '{http://nextcloud.com/ns}comp-filter' => 'OCA\\DAV\\CalDAV\\Search\\Xml\\Filter\\CompFilter', + '{http://nextcloud.com/ns}prop-filter' => 'OCA\\DAV\\CalDAV\\Search\\Xml\\Filter\\PropFilter', + '{http://nextcloud.com/ns}param-filter' => 'OCA\\DAV\\CalDAV\\Search\\Xml\\Filter\\ParamFilter', + '{http://nextcloud.com/ns}search-term' => 'OCA\\DAV\\CalDAV\\Search\\Xml\\Filter\\SearchTermFilter', + '{http://nextcloud.com/ns}limit' => 'OCA\\DAV\\CalDAV\\Search\\Xml\\Filter\\LimitFilter', + '{http://nextcloud.com/ns}offset' => 'OCA\\DAV\\CalDAV\\Search\\Xml\\Filter\\OffsetFilter', + '{DAV:}prop' => 'Sabre\\Xml\\Element\\KeyValue', + ]); + + $newProps = [ + 'filters' => [], + 'properties' => [], + 'limit' => null, + 'offset' => null + ]; + + if (!is_array($elems)) { + $elems = []; + } + + foreach ($elems as $elem) { + switch ($elem['name']) { + case '{DAV:}prop': + $newProps['properties'] = array_keys($elem['value']); + break; + case '{' . SearchPlugin::NS_Nextcloud . '}filter': + foreach ($elem['value'] as $subElem) { + if ($subElem['name'] === '{' . SearchPlugin::NS_Nextcloud . '}comp-filter') { + if (!isset($newProps['filters']['comps']) || !is_array($newProps['filters']['comps'])) { + $newProps['filters']['comps'] = []; + } + $newProps['filters']['comps'][] = $subElem['value']; + } elseif ($subElem['name'] === '{' . SearchPlugin::NS_Nextcloud . '}prop-filter') { + if (!isset($newProps['filters']['props']) || !is_array($newProps['filters']['props'])) { + $newProps['filters']['props'] = []; + } + $newProps['filters']['props'][] = $subElem['value']; + } elseif ($subElem['name'] === '{' . SearchPlugin::NS_Nextcloud . '}param-filter') { + if (!isset($newProps['filters']['params']) || !is_array($newProps['filters']['params'])) { + $newProps['filters']['params'] = []; + } + $newProps['filters']['params'][] = $subElem['value']; + } elseif ($subElem['name'] === '{' . SearchPlugin::NS_Nextcloud . '}search-term') { + $newProps['filters']['search-term'] = $subElem['value']; + } + } + break; + case '{' . SearchPlugin::NS_Nextcloud . '}limit': + $newProps['limit'] = $elem['value']; + break; + case '{' . SearchPlugin::NS_Nextcloud . '}offset': + $newProps['offset'] = $elem['value']; + break; + + } + } + + if (empty($newProps['filters'])) { + throw new BadRequest('The {' . SearchPlugin::NS_Nextcloud . '}filter element is required for this request'); + } + + $propsOrParamsDefined = (!empty($newProps['filters']['props']) || !empty($newProps['filters']['params'])); + $noCompsDefined = empty($newProps['filters']['comps']); + if ($propsOrParamsDefined && $noCompsDefined) { + throw new BadRequest('{' . SearchPlugin::NS_Nextcloud . '}prop-filter or {' . SearchPlugin::NS_Nextcloud . '}param-filter given without any {' . SearchPlugin::NS_Nextcloud . '}comp-filter'); + } + + if (!isset($newProps['filters']['search-term'])) { + throw new BadRequest('{' . SearchPlugin::NS_Nextcloud . '}search-term is required for this request'); + } + + if (empty($newProps['filters']['props']) && empty($newProps['filters']['params'])) { + throw new BadRequest('At least one{' . SearchPlugin::NS_Nextcloud . '}prop-filter or {' . SearchPlugin::NS_Nextcloud . '}param-filter is required for this request'); + } + + + $obj = new self(); + foreach ($newProps as $key => $value) { + $obj->$key = $value; + } + return $obj; + } +} diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index 5deb648fa7f..983220c6ba0 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -93,7 +93,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { public function __construct(IDBConnection $db, Principal $principalBackend, IUserManager $userManager, - EventDispatcherInterface $dispatcher = null) { + EventDispatcherInterface $dispatcher) { $this->db = $db; $this->principalBackend = $principalBackend; $this->userManager = $userManager; @@ -612,13 +612,11 @@ class CardDavBackend implements BackendInterface, SyncSupport { $this->addChange($addressBookId, $cardUri, 1); $this->updateProperties($addressBookId, $cardUri, $cardData); - if (!is_null($this->dispatcher)) { - $this->dispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::createCard', - new GenericEvent(null, [ - 'addressBookId' => $addressBookId, - 'cardUri' => $cardUri, - 'cardData' => $cardData])); - } + $this->dispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::createCard', + new GenericEvent(null, [ + 'addressBookId' => $addressBookId, + 'cardUri' => $cardUri, + 'cardData' => $cardData])); return '"' . $etag . '"'; } @@ -664,13 +662,11 @@ class CardDavBackend implements BackendInterface, SyncSupport { $this->addChange($addressBookId, $cardUri, 2); $this->updateProperties($addressBookId, $cardUri, $cardData); - if (!is_null($this->dispatcher)) { - $this->dispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::updateCard', - new GenericEvent(null, [ - 'addressBookId' => $addressBookId, - 'cardUri' => $cardUri, - 'cardData' => $cardData])); - } + $this->dispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::updateCard', + new GenericEvent(null, [ + 'addressBookId' => $addressBookId, + 'cardUri' => $cardUri, + 'cardData' => $cardData])); return '"' . $etag . '"'; } @@ -696,12 +692,10 @@ class CardDavBackend implements BackendInterface, SyncSupport { $this->addChange($addressBookId, $cardUri, 3); - if (!is_null($this->dispatcher)) { - $this->dispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', - new GenericEvent(null, [ - 'addressBookId' => $addressBookId, - 'cardUri' => $cardUri])); - } + $this->dispatcher->dispatch('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', + new GenericEvent(null, [ + 'addressBookId' => $addressBookId, + 'cardUri' => $cardUri])); if ($ret === 1) { if ($cardId !== null) { diff --git a/apps/dav/lib/CardDAV/ImageExportPlugin.php b/apps/dav/lib/CardDAV/ImageExportPlugin.php index e48410d26d6..747c879ecd4 100644 --- a/apps/dav/lib/CardDAV/ImageExportPlugin.php +++ b/apps/dav/lib/CardDAV/ImageExportPlugin.php @@ -22,25 +22,28 @@ namespace OCA\DAV\CardDAV; +use OCP\Files\NotFoundException; use OCP\ILogger; use Sabre\CardDAV\Card; use Sabre\DAV\Server; use Sabre\DAV\ServerPlugin; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; -use Sabre\VObject\Parameter; -use Sabre\VObject\Property\Binary; -use Sabre\VObject\Reader; class ImageExportPlugin extends ServerPlugin { /** @var Server */ protected $server; - /** @var ILogger */ - private $logger; + /** @var PhotoCache */ + private $cache; - public function __construct(ILogger $logger) { - $this->logger = $logger; + /** + * ImageExportPlugin constructor. + * + * @param PhotoCache $cache + */ + public function __construct(PhotoCache $cache) { + $this->cache = $cache; } /** @@ -49,8 +52,7 @@ class ImageExportPlugin extends ServerPlugin { * @param Server $server * @return void */ - function initialize(Server $server) { - + public function initialize(Server $server) { $this->server = $server; $this->server->on('method:GET', [$this, 'httpGet'], 90); } @@ -60,9 +62,9 @@ class ImageExportPlugin extends ServerPlugin { * * @param RequestInterface $request * @param ResponseInterface $response - * @return bool|void + * @return bool */ - function httpGet(RequestInterface $request, ResponseInterface $response) { + public function httpGet(RequestInterface $request, ResponseInterface $response) { $queryParams = $request->getQueryParameters(); // TODO: in addition to photo we should also add logo some point in time @@ -70,6 +72,8 @@ class ImageExportPlugin extends ServerPlugin { return true; } + $size = isset($queryParams['size']) ? (int)$queryParams['size'] : -1; + $path = $request->getPath(); $node = $this->server->tree->getNodeForPath($path); @@ -85,85 +89,28 @@ class ImageExportPlugin extends ServerPlugin { $aclPlugin->checkPrivileges($path, '{DAV:}read'); } - if ($result = $this->getPhoto($node)) { - $response->setHeader('Content-Type', $result['Content-Type']); + // Fetch addressbook + $addressbookpath = explode('/', $path); + array_pop($addressbookpath); + $addressbookpath = implode('/', $addressbookpath); + /** @var AddressBook $addressbook */ + $addressbook = $this->server->tree->getNodeForPath($addressbookpath); + + $response->setHeader('Cache-Control', 'private, max-age=3600, must-revalidate'); + $response->setHeader('Etag', $node->getETag() ); + $response->setHeader('Pragma', 'public'); + + try { + $file = $this->cache->get($addressbook->getResourceId(), $node->getName(), $size, $node); + $response->setHeader('Content-Type', $file->getMimeType()); $response->setHeader('Content-Disposition', 'attachment'); $response->setStatus(200); - $response->setBody($result['body']); - - // Returning false to break the event chain - return false; + $response->setBody($file->getContent()); + } catch (NotFoundException $e) { + $response->setStatus(404); } - return true; - } - function getPhoto(Card $node) { - // TODO: this is kind of expensive - load carddav data from database and parse it - // we might want to build up a cache one day - try { - $vObject = $this->readCard($node->get()); - if (!$vObject->PHOTO) { - return false; - } - - $photo = $vObject->PHOTO; - $type = $this->getType($photo); - - $val = $photo->getValue(); - if ($photo->getValueType() === 'URI') { - $parsed = \Sabre\URI\parse($val); - //only allow data:// - if ($parsed['scheme'] !== 'data') { - return false; - } - if (substr_count($parsed['path'], ';') === 1) { - list($type,) = explode(';', $parsed['path']); - } - $val = file_get_contents($val); - } - - $allowedContentTypes = [ - 'image/png', - 'image/jpeg', - 'image/gif', - ]; - - if(!in_array($type, $allowedContentTypes, true)) { - $type = 'application/octet-stream'; - } - - return [ - 'Content-Type' => $type, - 'body' => $val - ]; - } catch(\Exception $ex) { - $this->logger->logException($ex); - } return false; } - - private function readCard($cardData) { - return Reader::read($cardData); - } - - /** - * @param Binary $photo - * @return Parameter - */ - private function getType($photo) { - $params = $photo->parameters(); - if (isset($params['TYPE']) || isset($params['MEDIATYPE'])) { - /** @var Parameter $typeParam */ - $typeParam = isset($params['TYPE']) ? $params['TYPE'] : $params['MEDIATYPE']; - $type = $typeParam->getValue(); - - if (strpos($type, 'image/') === 0) { - return $type; - } else { - return 'image/' . strtolower($type); - } - } - return ''; - } } diff --git a/apps/dav/lib/CardDAV/PhotoCache.php b/apps/dav/lib/CardDAV/PhotoCache.php new file mode 100644 index 00000000000..c9625914263 --- /dev/null +++ b/apps/dav/lib/CardDAV/PhotoCache.php @@ -0,0 +1,246 @@ +<?php + +namespace OCA\DAV\CardDAV; + +use OCP\Files\IAppData; +use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; +use OCP\Files\SimpleFS\ISimpleFile; +use OCP\Files\SimpleFS\ISimpleFolder; +use Sabre\CardDAV\Card; +use Sabre\VObject\Property\Binary; +use Sabre\VObject\Reader; + +class PhotoCache { + + /** @var IAppData $appData */ + protected $appData; + + /** + * PhotoCache constructor. + * + * @param IAppData $appData + */ + public function __construct(IAppData $appData) { + $this->appData = $appData; + } + + /** + * @param int $addressBookId + * @param string $cardUri + * @param int $size + * @param Card $card + * + * @return ISimpleFile + * @throws NotFoundException + */ + public function get($addressBookId, $cardUri, $size, Card $card) { + $folder = $this->getFolder($addressBookId, $cardUri); + + if ($this->isEmpty($folder)) { + $this->init($folder, $card); + } + + if (!$this->hasPhoto($folder)) { + throw new NotFoundException(); + } + + if ($size !== -1) { + $size = 2 ** ceil(log($size) / log(2)); + } + + return $this->getFile($folder, $size); + } + + /** + * @param ISimpleFolder $folder + * @return bool + */ + private function isEmpty(ISimpleFolder $folder) { + return $folder->getDirectoryListing() === []; + } + + /** + * @param ISimpleFolder $folder + * @param Card $card + */ + private function init(ISimpleFolder $folder, Card $card) { + $data = $this->getPhoto($card); + + if ($data === false) { + $folder->newFile('nophoto'); + } else { + switch ($data['Content-Type']) { + case 'image/png': + $ext = 'png'; + break; + case 'image/jpeg': + $ext = 'jpg'; + break; + case 'image/gif': + $ext = 'gif'; + break; + } + $file = $folder->newFile('photo.' . $ext); + $file->putContent($data['body']); + } + } + + private function hasPhoto(ISimpleFolder $folder) { + return !$folder->fileExists('nophoto'); + } + + private function getFile(ISimpleFolder $folder, $size) { + $ext = $this->getExtension($folder); + + if ($size === -1) { + $path = 'photo.' . $ext; + } else { + $path = 'photo.' . $size . '.' . $ext; + } + + try { + $file = $folder->getFile($path); + } catch (NotFoundException $e) { + if ($size <= 0) { + throw new NotFoundException; + } + + $photo = new \OC_Image(); + /** @var ISimpleFile $file */ + $file = $folder->getFile('photo.' . $ext); + $photo->loadFromData($file->getContent()); + + $ratio = $photo->width() / $photo->height(); + if ($ratio < 1) { + $ratio = 1/$ratio; + } + $size = (int)($size * $ratio); + + if ($size !== -1) { + $photo->resize($size); + } + try { + $file = $folder->newFile($path); + $file->putContent($photo->data()); + } catch (NotPermittedException $e) { + + } + } + + return $file; + } + + + /** + * @param int $addressBookId + * @param string $cardUri + * @return ISimpleFolder + */ + private function getFolder($addressBookId, $cardUri) { + $hash = md5($addressBookId . ' ' . $cardUri); + try { + return $this->appData->getFolder($hash); + } catch (NotFoundException $e) { + return $this->appData->newFolder($hash); + } + } + + /** + * Get the extension of the avatar. If there is no avatar throw Exception + * + * @param ISimpleFolder $folder + * @return string + * @throws NotFoundException + */ + private function getExtension(ISimpleFolder $folder) { + if ($folder->fileExists('photo.jpg')) { + return 'jpg'; + } elseif ($folder->fileExists('photo.png')) { + return 'png'; + } elseif ($folder->fileExists('photo.gif')) { + return 'gif'; + } + throw new NotFoundException; + } + + private function getPhoto(Card $node) { + try { + $vObject = $this->readCard($node->get()); + if (!$vObject->PHOTO) { + return false; + } + + $photo = $vObject->PHOTO; + $type = $this->getType($photo); + + $val = $photo->getValue(); + if ($photo->getValueType() === 'URI') { + $parsed = \Sabre\URI\parse($val); + //only allow data:// + if ($parsed['scheme'] !== 'data') { + return false; + } + if (substr_count($parsed['path'], ';') === 1) { + list($type,) = explode(';', $parsed['path']); + } + $val = file_get_contents($val); + } + + $allowedContentTypes = [ + 'image/png', + 'image/jpeg', + 'image/gif', + ]; + + if(!in_array($type, $allowedContentTypes, true)) { + $type = 'application/octet-stream'; + } + + return [ + 'Content-Type' => $type, + 'body' => $val + ]; + } catch(\Exception $ex) { + + } + return false; + } + + /** + * @param string $cardData + * @return \Sabre\VObject\Document + */ + private function readCard($cardData) { + return Reader::read($cardData); + } + + /** + * @param Binary $photo + * @return string + */ + private function getType(Binary $photo) { + $params = $photo->parameters(); + if (isset($params['TYPE']) || isset($params['MEDIATYPE'])) { + /** @var Parameter $typeParam */ + $typeParam = isset($params['TYPE']) ? $params['TYPE'] : $params['MEDIATYPE']; + $type = $typeParam->getValue(); + + if (strpos($type, 'image/') === 0) { + return $type; + } else { + return 'image/' . strtolower($type); + } + } + return ''; + } + + /** + * @param int $addressBookId + * @param string $cardUri + */ + public function delete($addressBookId, $cardUri) { + $folder = $this->getFolder($addressBookId, $cardUri); + $folder->delete(); + } +} diff --git a/apps/dav/lib/Connector/PublicAuth.php b/apps/dav/lib/Connector/PublicAuth.php index 94fa370a873..5fca8d5c020 100644 --- a/apps/dav/lib/Connector/PublicAuth.php +++ b/apps/dav/lib/Connector/PublicAuth.php @@ -96,7 +96,7 @@ class PublicAuth extends AbstractBasic { // check if the share is password protected if ($share->getPassword() !== null) { - if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) { + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK || $share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) { if ($this->shareManager->checkPassword($share, $password)) { return true; } else if ($this->session->exists('public_link_authenticated') diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php index 25cca40a889..cb5a2ab8123 100644 --- a/apps/dav/lib/Connector/Sabre/Directory.php +++ b/apps/dav/lib/Connector/Sabre/Directory.php @@ -30,16 +30,26 @@ */ namespace OCA\DAV\Connector\Sabre; +use OC\Files\View; use OCA\DAV\Connector\Sabre\Exception\Forbidden; use OCA\DAV\Connector\Sabre\Exception\InvalidPath; use OCA\DAV\Connector\Sabre\Exception\FileLocked; +use OCP\Files\FileInfo; use OCP\Files\ForbiddenException; +use OCP\Files\InvalidPathException; +use OCP\Files\StorageNotAvailableException; use OCP\Lock\ILockingProvider; use OCP\Lock\LockedException; use Sabre\DAV\Exception\Locked; +use Sabre\DAV\Exception\ServiceUnavailable; +use Sabre\DAV\INode; +use Sabre\DAV\Exception\BadRequest; +use OC\Files\Mount\MoveableMount; +use Sabre\DAV\IFile; +use Sabre\DAV\Exception\NotFound; class Directory extends \OCA\DAV\Connector\Sabre\Node - implements \Sabre\DAV\ICollection, \Sabre\DAV\IQuota { + implements \Sabre\DAV\ICollection, \Sabre\DAV\IQuota, \Sabre\DAV\IMoveTarget { /** * Cached directory content @@ -68,7 +78,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node * @param ObjectTree|null $tree * @param \OCP\Share\IManager $shareManager */ - public function __construct($view, $info, $tree = null, $shareManager = null) { + public function __construct(View $view, FileInfo $info, $tree = null, $shareManager = null) { parent::__construct($view, $info, $shareManager); $this->tree = $tree; } @@ -113,9 +123,9 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node if (isset($_SERVER['HTTP_OC_CHUNKED'])) { // exit if we can't create a new file and we don't updatable existing file - $info = \OC_FileChunking::decodeName($name); + $chunkInfo = \OC_FileChunking::decodeName($name); if (!$this->fileView->isCreatable($this->path) && - !$this->fileView->isUpdatable($this->path . '/' . $info['name']) + !$this->fileView->isUpdatable($this->path . '/' . $chunkInfo['name']) ) { throw new \Sabre\DAV\Exception\Forbidden(); } @@ -130,14 +140,18 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node $this->fileView->verifyPath($this->path, $name); $path = $this->fileView->getAbsolutePath($this->path) . '/' . $name; - // using a dummy FileInfo is acceptable here since it will be refreshed after the put is complete - $info = new \OC\Files\FileInfo($path, null, null, array(), null); + // in case the file already exists/overwriting + $info = $this->fileView->getFileInfo($this->path . '/' . $name); + if (!$info) { + // use a dummy FileInfo which is acceptable here since it will be refreshed after the put is complete + $info = new \OC\Files\FileInfo($path, null, null, [], null); + } $node = new \OCA\DAV\Connector\Sabre\File($this->fileView, $info); $node->acquireLock(ILockingProvider::LOCK_SHARED); return $node->put($data); } catch (\OCP\Files\StorageNotAvailableException $e) { throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); - } catch (\OCP\Files\InvalidPathException $ex) { + } catch (InvalidPathException $ex) { throw new InvalidPath($ex->getMessage()); } catch (ForbiddenException $ex) { throw new Forbidden($ex->getMessage(), $ex->getRetry()); @@ -168,7 +182,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node } } catch (\OCP\Files\StorageNotAvailableException $e) { throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); - } catch (\OCP\Files\InvalidPathException $ex) { + } catch (InvalidPathException $ex) { throw new InvalidPath($ex->getMessage()); } catch (ForbiddenException $ex) { throw new Forbidden($ex->getMessage(), $ex->getRetry()); @@ -188,6 +202,11 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node * @throws \Sabre\DAV\Exception\ServiceUnavailable */ public function getChild($name, $info = null) { + if (!$this->info->isReadable()) { + // avoid detecting files through this way + throw new NotFound(); + } + $path = $this->path . '/' . $name; if (is_null($info)) { try { @@ -195,7 +214,7 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node $info = $this->fileView->getFileInfo($path); } catch (\OCP\Files\StorageNotAvailableException $e) { throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); - } catch (\OCP\Files\InvalidPathException $ex) { + } catch (InvalidPathException $ex) { throw new InvalidPath($ex->getMessage()); } catch (ForbiddenException $e) { throw new \Sabre\DAV\Exception\Forbidden(); @@ -221,12 +240,19 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node * Returns an array with all the child nodes * * @return \Sabre\DAV\INode[] + * @throws \Sabre\DAV\Exception\Locked + * @throws \OCA\DAV\Connector\Sabre\Exception\Forbidden */ public function getChildren() { if (!is_null($this->dirContent)) { return $this->dirContent; } try { + if (!$this->info->isReadable()) { + // return 403 instead of 404 because a 404 would make + // the caller believe that the collection itself does not exist + throw new Forbidden('No read permissions'); + } $folderContent = $this->fileView->getDirectoryContent($this->path); } catch (LockedException $e) { throw new Locked(); @@ -311,4 +337,109 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node } } + /** + * Moves a node into this collection. + * + * It is up to the implementors to: + * 1. Create the new resource. + * 2. Remove the old resource. + * 3. Transfer any properties or other data. + * + * Generally you should make very sure that your collection can easily move + * the move. + * + * If you don't, just return false, which will trigger sabre/dav to handle + * the move itself. If you return true from this function, the assumption + * is that the move was successful. + * + * @param string $targetName New local file/collection name. + * @param string $fullSourcePath Full path to source node + * @param INode $sourceNode Source node itself + * @return bool + * @throws BadRequest + * @throws ServiceUnavailable + * @throws Forbidden + * @throws FileLocked + * @throws \Sabre\DAV\Exception\Forbidden + */ + public function moveInto($targetName, $fullSourcePath, INode $sourceNode) { + if (!$sourceNode instanceof Node) { + // it's a file of another kind, like FutureFile + if ($sourceNode instanceof IFile) { + // fallback to default copy+delete handling + return false; + } + throw new BadRequest('Incompatible node types'); + } + + if (!$this->fileView) { + throw new ServiceUnavailable('filesystem not setup'); + } + + $destinationPath = $this->getPath() . '/' . $targetName; + + + $targetNodeExists = $this->childExists($targetName); + + // at getNodeForPath we also check the path for isForbiddenFileOrDir + // with that we have covered both source and destination + if ($sourceNode instanceof Directory && $targetNodeExists) { + throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode->getName() . ', target exists'); + } + + list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($sourceNode->getPath()); + $destinationDir = $this->getPath(); + + $sourcePath = $sourceNode->getPath(); + + $isMovableMount = false; + $sourceMount = \OC::$server->getMountManager()->find($this->fileView->getAbsolutePath($sourcePath)); + $internalPath = $sourceMount->getInternalPath($this->fileView->getAbsolutePath($sourcePath)); + if ($sourceMount instanceof MoveableMount && $internalPath === '') { + $isMovableMount = true; + } + + try { + $sameFolder = ($sourceDir === $destinationDir); + // if we're overwriting or same folder + if ($targetNodeExists || $sameFolder) { + // note that renaming a share mount point is always allowed + if (!$this->fileView->isUpdatable($destinationDir) && !$isMovableMount) { + throw new \Sabre\DAV\Exception\Forbidden(); + } + } else { + if (!$this->fileView->isCreatable($destinationDir)) { + throw new \Sabre\DAV\Exception\Forbidden(); + } + } + + if (!$sameFolder) { + // moving to a different folder, source will be gone, like a deletion + // note that moving a share mount point is always allowed + if (!$this->fileView->isDeletable($sourcePath) && !$isMovableMount) { + throw new \Sabre\DAV\Exception\Forbidden(); + } + } + + $fileName = basename($destinationPath); + try { + $this->fileView->verifyPath($destinationDir, $fileName); + } catch (InvalidPathException $ex) { + throw new InvalidPath($ex->getMessage()); + } + + $renameOkay = $this->fileView->rename($sourcePath, $destinationPath); + if (!$renameOkay) { + throw new \Sabre\DAV\Exception\Forbidden(''); + } + } catch (StorageNotAvailableException $e) { + throw new ServiceUnavailable($e->getMessage()); + } catch (ForbiddenException $ex) { + throw new Forbidden($ex->getMessage(), $ex->getRetry()); + } catch (LockedException $e) { + throw new FileLocked($e->getMessage(), $e->getCode(), $e); + } + + return true; + } } diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index d0a01ef255b..7a8bdb1da75 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -54,6 +54,7 @@ use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\Exception\NotImplemented; use Sabre\DAV\Exception\ServiceUnavailable; use Sabre\DAV\IFile; +use Sabre\DAV\Exception\NotFound; class File extends Node implements IFile { @@ -307,6 +308,10 @@ class File extends Node implements IFile { public function get() { //throw exception if encryption is disabled but files are still encrypted try { + if (!$this->info->isReadable()) { + // do a if the file did not exist + throw new NotFound(); + } $res = $this->fileView->fopen(ltrim($this->path, '/'), 'rb'); if ($res === false) { throw new ServiceUnavailable("Could not open file"); @@ -512,7 +517,6 @@ class File extends Node implements IFile { // TODO: in the future use ChunkHandler provided by storage return !$storage->instanceOfStorage('OCA\Files_Sharing\External\Storage') && !$storage->instanceOfStorage('OC\Files\Storage\OwnCloud') && - !$storage->instanceOfStorage('OC\Files\ObjectStore\ObjectStoreStorage') && $storage->needsPartFile(); } diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index 1b1f43df9ea..30eeaaacf63 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -45,6 +45,7 @@ use \Sabre\HTTP\ResponseInterface; use OCP\Files\StorageNotAvailableException; use OCP\IConfig; use OCP\IRequest; +use OCA\DAV\Upload\FutureFile; class FilesPlugin extends ServerPlugin { @@ -64,6 +65,7 @@ class FilesPlugin extends ServerPlugin { const CHECKSUMS_PROPERTYNAME = '{http://owncloud.org/ns}checksums'; const DATA_FINGERPRINT_PROPERTYNAME = '{http://owncloud.org/ns}data-fingerprint'; const HAS_PREVIEW_PROPERTYNAME = '{http://nextcloud.org/ns}has-preview'; + const MOUNT_TYPE_PROPERTYNAME = '{http://nextcloud.org/ns}mount-type'; /** * Reference to main server object @@ -158,6 +160,7 @@ class FilesPlugin extends ServerPlugin { $server->protectedProperties[] = self::CHECKSUMS_PROPERTYNAME; $server->protectedProperties[] = self::DATA_FINGERPRINT_PROPERTYNAME; $server->protectedProperties[] = self::HAS_PREVIEW_PROPERTYNAME; + $server->protectedProperties[] = self::MOUNT_TYPE_PROPERTYNAME; // normally these cannot be changed (RFC4918), but we want them modifiable through PROPPATCH $allowedProperties = ['{DAV:}getetag']; @@ -177,6 +180,7 @@ class FilesPlugin extends ServerPlugin { } }); $this->server->on('beforeMove', [$this, 'checkMove']); + $this->server->on('beforeMove', [$this, 'beforeMoveFutureFile']); } /** @@ -284,6 +288,10 @@ class FilesPlugin extends ServerPlugin { $httpRequest = $this->server->httpRequest; if ($node instanceof \OCA\DAV\Connector\Sabre\Node) { + if (!$node->getFileInfo()->isReadable()) { + // avoid detecting files through this means + throw new NotFound(); + } $propFind->handle(self::FILEID_PROPERTYNAME, function() use ($node) { return $node->getFileId(); @@ -335,6 +343,9 @@ class FilesPlugin extends ServerPlugin { $propFind->handle(self::SIZE_PROPERTYNAME, function() use ($node) { return $node->getSize(); }); + $propFind->handle(self::MOUNT_TYPE_PROPERTYNAME, function () use ($node) { + return $node->getFileInfo()->getMountPoint()->getMountType(); + }); } if ($node instanceof \OCA\DAV\Connector\Sabre\Node) { @@ -436,4 +447,43 @@ class FilesPlugin extends ServerPlugin { } } } + + /** + * Move handler for future file. + * + * This overrides the default move behavior to prevent Sabre + * to delete the target file before moving. Because deleting would + * lose the file id and metadata. + * + * @param string $path source path + * @param string $destination destination path + * @return bool|void false to stop handling, void to skip this handler + */ + public function beforeMoveFutureFile($path, $destination) { + $sourceNode = $this->tree->getNodeForPath($path); + if (!$sourceNode instanceof FutureFile) { + // skip handling as the source is not a chunked FutureFile + return; + } + + if (!$this->tree->nodeExists($destination)) { + // skip and let the default handler do its work + return; + } + + // do a move manually, skipping Sabre's default "delete" for existing nodes + $this->tree->move($path, $destination); + + // trigger all default events (copied from CorePlugin::move) + $this->server->emit('afterMove', [$path, $destination]); + $this->server->emit('afterUnbind', [$path]); + $this->server->emit('afterBind', [$destination]); + + $response = $this->server->httpResponse; + $response->setHeader('Content-Length', '0'); + $response->setStatus(204); + + return false; + } + } diff --git a/apps/dav/lib/Connector/Sabre/Node.php b/apps/dav/lib/Connector/Sabre/Node.php index 3e2204cf661..06933f53e76 100644 --- a/apps/dav/lib/Connector/Sabre/Node.php +++ b/apps/dav/lib/Connector/Sabre/Node.php @@ -34,7 +34,9 @@ namespace OCA\DAV\Connector\Sabre; use OC\Files\Mount\MoveableMount; +use OC\Files\View; use OCA\DAV\Connector\Sabre\Exception\InvalidPath; +use OCP\Files\FileInfo; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager; @@ -77,7 +79,7 @@ abstract class Node implements \Sabre\DAV\INode { * @param \OCP\Files\FileInfo $info * @param IManager $shareManager */ - public function __construct($view, $info, IManager $shareManager = null) { + public function __construct(View $view, FileInfo $info, IManager $shareManager = null) { $this->fileView = $view; $this->path = $this->fileView->getRelativePath($info->getPath()); $this->info = $info; diff --git a/apps/dav/lib/Connector/Sabre/ObjectTree.php b/apps/dav/lib/Connector/Sabre/ObjectTree.php index 554a7ad86ca..acc6dcc3be3 100644 --- a/apps/dav/lib/Connector/Sabre/ObjectTree.php +++ b/apps/dav/lib/Connector/Sabre/ObjectTree.php @@ -185,104 +185,6 @@ class ObjectTree extends \Sabre\DAV\Tree { } /** - * Moves a file from one location to another - * - * @param string $sourcePath The path to the file which should be moved - * @param string $destinationPath The full destination path, so not just the destination parent node - * @throws FileLocked - * @throws Forbidden - * @throws InvalidPath - * @throws \Sabre\DAV\Exception\Forbidden - * @throws \Sabre\DAV\Exception\Locked - * @throws \Sabre\DAV\Exception\NotFound - * @throws \Sabre\DAV\Exception\ServiceUnavailable - * @return int - */ - public function move($sourcePath, $destinationPath) { - if (!$this->fileView) { - throw new \Sabre\DAV\Exception\ServiceUnavailable('filesystem not setup'); - } - - $infoDestination = $this->fileView->getFileInfo(dirname($destinationPath)); - if (dirname($destinationPath) === dirname($sourcePath)) { - $sourcePermission = $infoDestination && $infoDestination->isUpdateable(); - $destinationPermission = $sourcePermission; - } else { - $infoSource = $this->fileView->getFileInfo($sourcePath); - if ($this->fileView->file_exists($destinationPath)) { - $destinationPermission = $infoDestination && $infoDestination->isUpdateable(); - } else { - $destinationPermission = $infoDestination && $infoDestination->isCreatable(); - } - $sourcePermission = $infoSource && $infoSource->isDeletable(); - } - - if (!$destinationPermission || !$sourcePermission) { - throw new Forbidden('No permissions to move object.'); - } - - $targetNodeExists = $this->nodeExists($destinationPath); - $sourceNode = $this->getNodeForPath($sourcePath); - if ($sourceNode instanceof \Sabre\DAV\ICollection && $targetNodeExists) { - throw new \Sabre\DAV\Exception\Forbidden('Could not copy directory ' . $sourceNode->getName() . ', target exists'); - } - list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($sourcePath); - list($destinationDir,) = \Sabre\HTTP\URLUtil::splitPath($destinationPath); - - $isMovableMount = false; - $sourceMount = $this->mountManager->find($this->fileView->getAbsolutePath($sourcePath)); - $internalPath = $sourceMount->getInternalPath($this->fileView->getAbsolutePath($sourcePath)); - if ($sourceMount instanceof MoveableMount && $internalPath === '') { - $isMovableMount = true; - } - - try { - $sameFolder = ($sourceDir === $destinationDir); - // if we're overwriting or same folder - if ($targetNodeExists || $sameFolder) { - // note that renaming a share mount point is always allowed - if (!$this->fileView->isUpdatable($destinationDir) && !$isMovableMount) { - throw new \Sabre\DAV\Exception\Forbidden(); - } - } else { - if (!$this->fileView->isCreatable($destinationDir)) { - throw new \Sabre\DAV\Exception\Forbidden(); - } - } - - if (!$sameFolder) { - // moving to a different folder, source will be gone, like a deletion - // note that moving a share mount point is always allowed - if (!$this->fileView->isDeletable($sourcePath) && !$isMovableMount) { - throw new \Sabre\DAV\Exception\Forbidden(); - } - } - - $fileName = basename($destinationPath); - try { - $this->fileView->verifyPath($destinationDir, $fileName); - } catch (\OCP\Files\InvalidPathException $ex) { - throw new InvalidPath($ex->getMessage()); - } - - $renameOkay = $this->fileView->rename($sourcePath, $destinationPath); - if (!$renameOkay) { - throw new \Sabre\DAV\Exception\Forbidden(''); - } - } catch (StorageNotAvailableException $e) { - throw new \Sabre\DAV\Exception\ServiceUnavailable($e->getMessage()); - } catch (ForbiddenException $ex) { - throw new Forbidden($ex->getMessage(), $ex->getRetry()); - } catch (LockedException $e) { - throw new FileLocked($e->getMessage(), $e->getCode(), $e); - } - - $this->markDirty($sourceDir); - $this->markDirty($destinationDir); - - } - - /** * Copies a file or directory. * * This method must work recursively and delete the destination diff --git a/apps/dav/lib/Files/FilesHome.php b/apps/dav/lib/Files/FilesHome.php index 9c8f9835d7c..78fd1f4d6d6 100644 --- a/apps/dav/lib/Files/FilesHome.php +++ b/apps/dav/lib/Files/FilesHome.php @@ -22,6 +22,7 @@ namespace OCA\DAV\Files; use OCA\DAV\Connector\Sabre\Directory; +use OCP\Files\FileInfo; use Sabre\DAV\Exception\Forbidden; use Sabre\HTTP\URLUtil; @@ -41,6 +42,9 @@ class FilesHome extends Directory { $this->principalInfo = $principalInfo; $view = \OC\Files\Filesystem::getView(); $rootInfo = $view->getFileInfo(''); + if (!($rootInfo instanceof FileInfo)) { + throw new \Exception('Home does not exist'); + } parent::__construct($view, $rootInfo); } diff --git a/apps/dav/lib/Migration/BuildCalendarSearchIndex.php b/apps/dav/lib/Migration/BuildCalendarSearchIndex.php new file mode 100644 index 00000000000..da4b4f4fe84 --- /dev/null +++ b/apps/dav/lib/Migration/BuildCalendarSearchIndex.php @@ -0,0 +1,86 @@ +<?php +/** + * @copyright 2017 Georg Ehrke <oc.list@georgehrke.com> + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @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\DAV\Migration; + +use OCP\BackgroundJob\IJobList; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; + +class BuildCalendarSearchIndex implements IRepairStep { + + /** @var IDBConnection */ + private $db; + + /** @var IJobList */ + private $jobList; + + /** @var IConfig */ + private $config; + + /** + * @param IDBConnection $db + * @param IJobList $jobList + * @param IConfig $config + */ + public function __construct(IDBConnection $db, + IJobList $jobList, + IConfig $config) { + $this->db = $db; + $this->jobList = $jobList; + $this->config = $config; + } + + /** + * @return string + */ + public function getName() { + return 'Registering building of calendar search index as background job'; + } + + /** + * @param IOutput $output + */ + public function run(IOutput $output) { + // only run once + if ($this->config->getAppValue('dav', 'buildCalendarSearchIndex') === 'yes') { + $output->info('Repair step already executed'); + return; + } + + $query = $this->db->getQueryBuilder(); + $query->select($query->createFunction('MAX(id)')) + ->from('calendarobjects'); + $maxId = (int)$query->execute()->fetchColumn(); + + $output->info('Add background job'); + $this->jobList->add(BuildCalendarSearchIndexBackgroundJob::class, [ + 'offset' => 0, + 'stopAt' => $maxId + ]); + + // if all were done, no need to redo the repair during next upgrade + $this->config->setAppValue('dav', 'buildCalendarSearchIndex', 'yes'); + } +}
\ No newline at end of file diff --git a/apps/dav/lib/Migration/BuildCalendarSearchIndexBackgroundJob.php b/apps/dav/lib/Migration/BuildCalendarSearchIndexBackgroundJob.php new file mode 100644 index 00000000000..a4fa2c63e02 --- /dev/null +++ b/apps/dav/lib/Migration/BuildCalendarSearchIndexBackgroundJob.php @@ -0,0 +1,120 @@ +<?php +/** + * @copyright 2017 Georg Ehrke <oc.list@georgehrke.com> + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @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\DAV\Migration; + +use OC\BackgroundJob\QueuedJob; +use OCA\DAV\CalDAV\CalDavBackend; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\IJobList; +use OCP\IDBConnection; +use OCP\ILogger; + +class BuildCalendarSearchIndexBackgroundJob extends QueuedJob { + + /** @var IDBConnection */ + private $db; + + /** @var CalDavBackend */ + private $calDavBackend; + + /** @var ILogger */ + private $logger; + + /** @var IJobList */ + private $jobList; + + /** @var ITimeFactory */ + private $timeFactory; + + /** + * @param IDBConnection $db + * @param CalDavBackend $calDavBackend + * @param ILogger $logger + * @param IJobList $jobList + * @param ITimeFactory $timeFactory + */ + public function __construct(IDBConnection $db, + CalDavBackend $calDavBackend, + ILogger $logger, + IJobList $jobList, + ITimeFactory $timeFactory) { + $this->db = $db; + $this->calDavBackend = $calDavBackend; + $this->logger = $logger; + $this->jobList = $jobList; + $this->timeFactory = $timeFactory; + } + + public function run($arguments) { + $offset = $arguments['offset']; + $stopAt = $arguments['stopAt']; + + $this->logger->info('Building calendar index (' . $offset .'/' . $stopAt . ')'); + + $offset = $this->buildIndex($offset, $stopAt); + + if ($offset >= $stopAt) { + $this->logger->info('Building calendar index done'); + } else { + $this->jobList->add(self::class, [ + 'offset' => $offset, + 'stopAt' => $stopAt + ]); + $this->logger->info('New building calendar index job scheduled with offset ' . $offset); + } + } + + /** + * @param int $offset + * @param int $stopAt + * @return int + */ + private function buildIndex($offset, $stopAt) { + $startTime = $this->timeFactory->getTime(); + + $query = $this->db->getQueryBuilder(); + $query->select(['id', 'calendarid', 'uri', 'calendardata']) + ->from('calendarobjects') + ->where($query->expr()->lte('id', $query->createNamedParameter($stopAt))) + ->andWhere($query->expr()->gt('id', $query->createNamedParameter($offset))) + ->orderBy('id', 'ASC'); + + $stmt = $query->execute(); + while($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { + $offset = $row['id']; + + $calendarData = $row['calendardata']; + if (is_resource($calendarData)) { + $calendarData = stream_get_contents($calendarData); + } + + $this->calDavBackend->updateProperties($row['calendarid'], $row['uri'], $calendarData); + + if (($this->timeFactory->getTime() - $startTime) > 15) { + return $offset; + } + } + + return $stopAt; + } +} diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index e0517477488..df5b0ea05b6 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -30,6 +30,7 @@ namespace OCA\DAV; use OCA\DAV\CalDAV\Schedule\IMipPlugin; use OCA\DAV\CardDAV\ImageExportPlugin; +use OCA\DAV\CardDAV\PhotoCache; use OCA\DAV\Comments\CommentsPlugin; use OCA\DAV\Connector\Sabre\Auth; use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin; @@ -137,7 +138,7 @@ class Server { // addressbook plugins $this->server->addPlugin(new \OCA\DAV\CardDAV\Plugin()); $this->server->addPlugin(new VCFExportPlugin()); - $this->server->addPlugin(new ImageExportPlugin(\OC::$server->getLogger())); + $this->server->addPlugin(new ImageExportPlugin(new PhotoCache(\OC::$server->getAppDataDir('dav-photocache')))); // system tags plugins $this->server->addPlugin(new SystemTagPlugin( @@ -216,6 +217,7 @@ class Server { \OC::$server->getCommentsManager(), $userSession )); + $this->server->addPlugin(new \OCA\DAV\CalDAV\Search\SearchPlugin()); if ($view !== null) { $this->server->addPlugin(new FilesReportPlugin( $this->server->tree, diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index 5adda30c19d..dc531b5a64a 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -1,10 +1,12 @@ <?php /** * @copyright Copyright (c) 2016, ownCloud, Inc. + * @copyright Copyright (c) 2017 Georg Ehrke * * @author Joas Schilling <coding@schilljs.com> * @author Thomas Citharel <tcit@tcit.fr> * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Georg Ehrke <oc.list@georgehrke.com> * * @license AGPL-3.0 * @@ -489,4 +491,134 @@ EOD; 'unknown class -> private' => [CalDavBackend::CLASSIFICATION_PRIVATE, 'classification', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//dmfs.org//mimedir.icalendar//EN\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nX-LIC-LOCATION:Europe/Berlin\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19700329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19701025T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nDTSTART;TZID=Europe/Berlin:20160419T130000\r\nSUMMARY:Test\r\nCLASS:VERTRAULICH\r\nTRANSP:OPAQUE\r\nSTATUS:CONFIRMED\r\nDTEND;TZID=Europe/Berlin:20160419T140000\r\nLAST-MODIFIED:20160419T074202Z\r\nDTSTAMP:20160419T074202Z\r\nCREATED:20160419T074202Z\r\nUID:2e468c48-7860-492e-bc52-92fa0daeeccf.1461051722310\r\nEND:VEVENT\r\nEND:VCALENDAR"], ]; } + + public function testCalendarSearch() { + $calendarId = $this->createTestCalendar(); + + $uri = static::getUniqueID('calobj'); + $calData = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:ownCloud Calendar +BEGIN:VEVENT +CREATED;VALUE=DATE-TIME:20130910T125139Z +UID:47d15e3ec8 +LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z +DTSTAMP;VALUE=DATE-TIME:20130910T125139Z +SUMMARY:Test Event +DTSTART;VALUE=DATE-TIME:20130912T130000Z +DTEND;VALUE=DATE-TIME:20130912T140000Z +CLASS:PUBLIC +END:VEVENT +END:VCALENDAR +EOD; + + $this->backend->createCalendarObject($calendarId, $uri, $calData); + + $search1 = $this->backend->calendarSearch(self::UNIT_TEST_USER, [ + 'comps' => [ + 'VEVENT', + 'VTODO' + ], + 'props' => [ + 'SUMMARY', + 'LOCATION' + ], + 'search-term' => 'Test', + ]); + $this->assertEquals(count($search1), 1); + + + // update the card + $calData = <<<'EOD' +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:ownCloud Calendar +BEGIN:VEVENT +CREATED;VALUE=DATE-TIME:20130910T125139Z +UID:47d15e3ec8 +LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z +DTSTAMP;VALUE=DATE-TIME:20130910T125139Z +SUMMARY:123 Event +DTSTART;VALUE=DATE-TIME:20130912T130000Z +DTEND;VALUE=DATE-TIME:20130912T140000Z +ATTENDEE;CN=test:mailto:foo@bar.com +END:VEVENT +END:VCALENDAR +EOD; + $this->backend->updateCalendarObject($calendarId, $uri, $calData); + + $search2 = $this->backend->calendarSearch(self::UNIT_TEST_USER, [ + 'comps' => [ + 'VEVENT', + 'VTODO' + ], + 'props' => [ + 'SUMMARY', + 'LOCATION' + ], + 'search-term' => 'Test', + ]); + $this->assertEquals(count($search2), 0); + + $search3 = $this->backend->calendarSearch(self::UNIT_TEST_USER, [ + 'comps' => [ + 'VEVENT', + 'VTODO' + ], + 'props' => [ + 'SUMMARY', + 'LOCATION' + ], + 'params' => [ + [ + 'property' => 'ATTENDEE', + 'parameter' => 'CN' + ] + ], + 'search-term' => 'Test', + ]); + $this->assertEquals(count($search3), 1); + + // t matches both summary and attendee's CN, but we want unique results + $search4 = $this->backend->calendarSearch(self::UNIT_TEST_USER, [ + 'comps' => [ + 'VEVENT', + 'VTODO' + ], + 'props' => [ + 'SUMMARY', + 'LOCATION' + ], + 'params' => [ + [ + 'property' => 'ATTENDEE', + 'parameter' => 'CN' + ] + ], + 'search-term' => 't', + ]); + $this->assertEquals(count($search4), 1); + + $this->backend->deleteCalendarObject($calendarId, $uri); + + $search5 = $this->backend->calendarSearch(self::UNIT_TEST_USER, [ + 'comps' => [ + 'VEVENT', + 'VTODO' + ], + 'props' => [ + 'SUMMARY', + 'LOCATION' + ], + 'params' => [ + [ + 'property' => 'ATTENDEE', + 'parameter' => 'CN' + ] + ], + 'search-term' => 't', + ]); + $this->assertEquals(count($search5), 0); + } } diff --git a/apps/dav/tests/unit/CalDAV/CalendarTest.php b/apps/dav/tests/unit/CalDAV/CalendarTest.php index 4ede886d31e..cf295f01065 100644 --- a/apps/dav/tests/unit/CalDAV/CalendarTest.php +++ b/apps/dav/tests/unit/CalDAV/CalendarTest.php @@ -246,6 +246,7 @@ class CalendarTest extends TestCase { ]); $backend->expects($this->any())->method('getCalendarObject') ->willReturn($calObject2)->with(666, 'event-2'); + $backend->expects($this->any())->method('applyShareAcl')->willReturnArgument(1); $calendarInfo = [ 'principaluri' => 'user2', @@ -333,6 +334,7 @@ EOD; ]); $backend->expects($this->any())->method('getCalendarObject') ->willReturn($calObject1)->with(666, 'event-1'); + $backend->expects($this->any())->method('applyShareAcl')->willReturnArgument(1); $calendarInfo = [ '{http://owncloud.org/ns}owner-principal' => $isShared ? 'user1' : 'user2', diff --git a/apps/dav/tests/unit/CalDAV/PublicCalendarTest.php b/apps/dav/tests/unit/CalDAV/PublicCalendarTest.php index 6b2bf58d392..03cbf71d6ca 100644 --- a/apps/dav/tests/unit/CalDAV/PublicCalendarTest.php +++ b/apps/dav/tests/unit/CalDAV/PublicCalendarTest.php @@ -51,6 +51,7 @@ class PublicCalendarTest extends CalendarTest { ]); $backend->expects($this->any())->method('getCalendarObject') ->willReturn($calObject2)->with(666, 'event-2'); + $backend->expects($this->any())->method('applyShareAcl')->willReturnArgument(1); $calendarInfo = [ '{http://owncloud.org/ns}owner-principal' => 'user2', @@ -135,6 +136,7 @@ EOD; ]); $backend->expects($this->any())->method('getCalendarObject') ->willReturn($calObject1)->with(666, 'event-1'); + $backend->expects($this->any())->method('applyShareAcl')->willReturnArgument(1); $calendarInfo = [ '{http://owncloud.org/ns}owner-principal' => 'user1', diff --git a/apps/dav/tests/unit/CalDAV/Search/Request/CalendarSearchReportTest.php b/apps/dav/tests/unit/CalDAV/Search/Request/CalendarSearchReportTest.php new file mode 100644 index 00000000000..20bac8aa9f5 --- /dev/null +++ b/apps/dav/tests/unit/CalDAV/Search/Request/CalendarSearchReportTest.php @@ -0,0 +1,339 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\Tests\unit\CalDAV\Search\Xml\Request; + +use OCA\DAV\CalDAV\Search\Xml\Request\CalendarSearchReport; +use Sabre\Xml\Reader; +use Test\TestCase; + +class CalendarSearchReportTest extends TestCase { + + private $elementMap = [ + '{http://nextcloud.com/ns}calendar-search' => + 'OCA\\DAV\\CalDAV\\Search\\Xml\\Request\\CalendarSearchReport', + ]; + + public function testFoo() { + $xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<nc:calendar-search xmlns:nc="http://nextcloud.com/ns" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:"> + <d:prop> + <d:getetag /> + <c:calendar-data /> + </d:prop> + <nc:filter> + <nc:comp-filter name="VEVENT" /> + <nc:comp-filter name="VTODO" /> + <nc:prop-filter name="SUMMARY" /> + <nc:prop-filter name="LOCATION" /> + <nc:prop-filter name="ATTENDEE" /> + <nc:param-filter property="ATTENDEE" name="CN" /> + <nc:search-term>foo</nc:search-term> + </nc:filter> + <nc:limit>10</nc:limit> + <nc:offset>5</nc:offset> +</nc:calendar-search> +XML; + + $result = $this->parse($xml); + + $calendarSearchReport = new CalendarSearchReport(); + $calendarSearchReport->properties = [ + '{DAV:}getetag', + '{urn:ietf:params:xml:ns:caldav}calendar-data', + ]; + $calendarSearchReport->filters = [ + 'comps' => [ + 'VEVENT', + 'VTODO' + ], + 'props' => [ + 'SUMMARY', + 'LOCATION', + 'ATTENDEE' + ], + 'params' => [ + [ + 'property' => 'ATTENDEE', + 'parameter' => 'CN' + ] + ], + 'search-term' => 'foo' + ]; + $calendarSearchReport->limit = 10; + $calendarSearchReport->offset = 5; + + $this->assertEquals( + $calendarSearchReport, + $result['value'] + ); + } + + public function testNoLimitOffset() { + $xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<nc:calendar-search xmlns:nc="http://nextcloud.com/ns" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:"> + <d:prop> + <d:getetag /> + <c:calendar-data /> + </d:prop> + <nc:filter> + <nc:comp-filter name="VEVENT" /> + <nc:prop-filter name="SUMMARY" /> + <nc:search-term>foo</nc:search-term> + </nc:filter> +</nc:calendar-search> +XML; + + $result = $this->parse($xml); + + $calendarSearchReport = new CalendarSearchReport(); + $calendarSearchReport->properties = [ + '{DAV:}getetag', + '{urn:ietf:params:xml:ns:caldav}calendar-data', + ]; + $calendarSearchReport->filters = [ + 'comps' => [ + 'VEVENT', + ], + 'props' => [ + 'SUMMARY', + ], + 'search-term' => 'foo' + ]; + $calendarSearchReport->limit = null; + $calendarSearchReport->offset = null; + + $this->assertEquals( + $calendarSearchReport, + $result['value'] + ); + } + + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + * @expectedExceptionMessage {http://nextcloud.com/ns}prop-filter or {http://nextcloud.com/ns}param-filter given without any {http://nextcloud.com/ns}comp-filter + */ + public function testRequiresCompFilter() { + $xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<nc:calendar-search xmlns:nc="http://nextcloud.com/ns" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:"> + <d:prop> + <d:getetag /> + <c:calendar-data /> + </d:prop> + <nc:filter> + <nc:prop-filter name="SUMMARY" /> + <nc:prop-filter name="LOCATION" /> + <nc:prop-filter name="ATTENDEE" /> + <nc:param-filter property="ATTENDEE" name="CN" /> + <nc:search-term>foo</nc:search-term> + </nc:filter> + <nc:limit>10</nc:limit> + <nc:offset>5</nc:offset> +</nc:calendar-search> +XML; + + $this->parse($xml); + } + + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + * @expectedExceptionMessage The {http://nextcloud.com/ns}filter element is required for this request + */ + public function testRequiresFilter() { + $xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<nc:calendar-search xmlns:nc="http://nextcloud.com/ns" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:"> + <d:prop> + <d:getetag /> + <c:calendar-data /> + </d:prop> +</nc:calendar-search> +XML; + + $this->parse($xml); + } + + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + * @expectedExceptionMessage {http://nextcloud.com/ns}search-term is required for this request + */ + public function testNoSearchTerm() { + $xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<nc:calendar-search xmlns:nc="http://nextcloud.com/ns" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:"> + <d:prop> + <d:getetag /> + <c:calendar-data /> + </d:prop> + <nc:filter> + <nc:comp-filter name="VEVENT" /> + <nc:comp-filter name="VTODO" /> + <nc:prop-filter name="SUMMARY" /> + <nc:prop-filter name="LOCATION" /> + <nc:prop-filter name="ATTENDEE" /> + <nc:param-filter property="ATTENDEE" name="CN" /> + </nc:filter> + <nc:limit>10</nc:limit> + <nc:offset>5</nc:offset> +</nc:calendar-search> +XML; + + $result = $this->parse($xml); + } + + /** + * @expectedException \Sabre\DAV\Exception\BadRequest + * @expectedExceptionMessage At least one{http://nextcloud.com/ns}prop-filter or {http://nextcloud.com/ns}param-filter is required for this request + */ + public function testCompOnly() { + $xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<nc:calendar-search xmlns:nc="http://nextcloud.com/ns" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:"> + <d:prop> + <d:getetag /> + <c:calendar-data /> + </d:prop> + <nc:filter> + <nc:comp-filter name="VEVENT" /> + <nc:comp-filter name="VTODO" /> + <nc:search-term>foo</nc:search-term> + </nc:filter> +</nc:calendar-search> +XML; + + $result = $this->parse($xml); + + $calendarSearchReport = new CalendarSearchReport(); + $calendarSearchReport->properties = [ + '{DAV:}getetag', + '{urn:ietf:params:xml:ns:caldav}calendar-data', + ]; + $calendarSearchReport->filters = [ + 'comps' => [ + 'VEVENT', + 'VTODO' + ], + 'search-term' => 'foo' + ]; + $calendarSearchReport->limit = null; + $calendarSearchReport->offset = null; + + $this->assertEquals( + $calendarSearchReport, + $result['value'] + ); + } + + public function testPropOnly() { + $xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<nc:calendar-search xmlns:nc="http://nextcloud.com/ns" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:"> + <d:prop> + <d:getetag /> + <c:calendar-data /> + </d:prop> + <nc:filter> + <nc:comp-filter name="VEVENT" /> + <nc:prop-filter name="SUMMARY" /> + <nc:search-term>foo</nc:search-term> + </nc:filter> +</nc:calendar-search> +XML; + + $result = $this->parse($xml); + + $calendarSearchReport = new CalendarSearchReport(); + $calendarSearchReport->properties = [ + '{DAV:}getetag', + '{urn:ietf:params:xml:ns:caldav}calendar-data', + ]; + $calendarSearchReport->filters = [ + 'comps' => [ + 'VEVENT', + ], + 'props' => [ + 'SUMMARY', + ], + 'search-term' => 'foo' + ]; + $calendarSearchReport->limit = null; + $calendarSearchReport->offset = null; + + $this->assertEquals( + $calendarSearchReport, + $result['value'] + ); + } + + public function testParamOnly() { + $xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<nc:calendar-search xmlns:nc="http://nextcloud.com/ns" xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:"> + <d:prop> + <d:getetag /> + <c:calendar-data /> + </d:prop> + <nc:filter> + <nc:comp-filter name="VEVENT" /> + <nc:param-filter property="ATTENDEE" name="CN" /> + <nc:search-term>foo</nc:search-term> + </nc:filter> +</nc:calendar-search> +XML; + + $result = $this->parse($xml); + + $calendarSearchReport = new CalendarSearchReport(); + $calendarSearchReport->properties = [ + '{DAV:}getetag', + '{urn:ietf:params:xml:ns:caldav}calendar-data', + ]; + $calendarSearchReport->filters = [ + 'comps' => [ + 'VEVENT', + ], + 'params' => [ + [ + 'property' => 'ATTENDEE', + 'parameter' => 'CN' + ] + ], + 'search-term' => 'foo' + ]; + $calendarSearchReport->limit = null; + $calendarSearchReport->offset = null; + + $this->assertEquals( + $calendarSearchReport, + $result['value'] + ); + } + + private function parse($xml, array $elementMap = []) { + $reader = new Reader(); + $reader->elementMap = array_merge($this->elementMap, $elementMap); + $reader->xml($xml); + return $reader->parse(); + } +} diff --git a/apps/dav/tests/unit/CalDAV/Search/SearchPluginTest.php b/apps/dav/tests/unit/CalDAV/Search/SearchPluginTest.php new file mode 100644 index 00000000000..fc647bb5daf --- /dev/null +++ b/apps/dav/tests/unit/CalDAV/Search/SearchPluginTest.php @@ -0,0 +1,124 @@ +<?php +/** + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @copyright Copyright (c) 2017 Georg Ehrke <oc.list@georgehrke.com> + * @license GNU AGPL version 3 or any later version + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\Tests\unit\CalDAV\Search; + +use OCA\DAV\CalDAV\CalendarHome; +use OCA\DAV\CalDAV\Search\SearchPlugin; +use OCA\DAV\CalDAV\Search\Xml\Request\CalendarSearchReport; +use Test\TestCase; + +class SearchPluginTest extends TestCase { + + protected $server; + + /** @var \OCA\DAV\CalDAV\Search\SearchPlugin $plugin */ + protected $plugin; + + public function setUp() { + parent::setUp(); + + $this->server = $this->createMock(\Sabre\DAV\Server::class); + $this->server->tree = $this->createMock(\Sabre\DAV\Tree::class); + $this->server->httpResponse = $this->createMock(\Sabre\HTTP\Response::class); + + $this->plugin = new SearchPlugin(); + $this->plugin->initialize($this->server); + } + + public function testGetFeatures() { + $this->assertEquals(['nc-calendar-search'], $this->plugin->getFeatures()); + } + + public function testGetName() { + $this->assertEquals('nc-calendar-search', $this->plugin->getPluginName()); + } + + public function testInitialize() { + $server = $this->createMock(\Sabre\DAV\Server::class); + + $plugin = new SearchPlugin(); + + $server->expects($this->at(0)) + ->method('on') + ->with('report', [$plugin, 'report']); + + $plugin->initialize($server); + + $this->assertEquals( + $server->xml->elementMap['{http://nextcloud.com/ns}calendar-search'], + 'OCA\\DAV\\CalDAV\\Search\\Xml\\Request\\CalendarSearchReport' + ); + } + + public function testReportUnknown() { + $result = $this->plugin->report('{urn:ietf:params:xml:ns:caldav}calendar-query', 'REPORT', null); + $this->assertEquals($result, null); + $this->assertNotEquals($this->server->transactionType, 'report-nc-calendar-search'); + } + + public function testReport() { + $report = $this->createMock(CalendarSearchReport::class); + $report->filters = []; + $calendarHome = $this->createMock(CalendarHome::class); + $this->server->expects($this->at(0)) + ->method('getRequestUri') + ->with() + ->will($this->returnValue('/re/quest/u/r/i')); + $this->server->tree->expects($this->at(0)) + ->method('getNodeForPath') + ->with('/re/quest/u/r/i') + ->will($this->returnValue($calendarHome)); + $this->server->expects($this->at(1)) + ->method('getHTTPDepth') + ->with(2) + ->will($this->returnValue(2)); + $calendarHome->expects($this->at(0)) + ->method('calendarSearch') + ->will($this->returnValue([])); + + $this->plugin->report('{http://nextcloud.com/ns}calendar-search', $report, ''); + } + + public function testSupportedReportSetNoCalendarHome() { + $this->server->tree->expects($this->once()) + ->method('getNodeForPath') + ->with('/foo/bar') + ->will($this->returnValue(null)); + + $reports = $this->plugin->getSupportedReportSet('/foo/bar'); + $this->assertEquals([], $reports); + } + + public function testSupportedReportSet() { + $calendarHome = $this->createMock(CalendarHome::class); + + $this->server->tree->expects($this->once()) + ->method('getNodeForPath') + ->with('/bar/foo') + ->will($this->returnValue($calendarHome)); + + $reports = $this->plugin->getSupportedReportSet('/bar/foo'); + $this->assertEquals([ + '{http://nextcloud.com/ns}calendar-search' + ], $reports); + } +} diff --git a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php index c108432d65b..f3a271a2db2 100644 --- a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php +++ b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php @@ -34,9 +34,12 @@ use OCA\DAV\Connector\Sabre\Principal; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\IL10N; +use OCP\IUserManager; use Sabre\DAV\PropPatch; use Sabre\VObject\Component\VCard; use Sabre\VObject\Property\Text; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\GenericEvent; use Test\TestCase; /** @@ -54,9 +57,12 @@ class CardDavBackendTest extends TestCase { /** @var Principal | \PHPUnit_Framework_MockObject_MockObject */ private $principal; - /** @var \OCP\IUserManager|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ private $userManager; + /** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */ + private $dispatcher; + /** @var IDBConnection */ private $db; @@ -73,9 +79,7 @@ class CardDavBackendTest extends TestCase { public function setUp() { parent::setUp(); - $this->userManager = $this->getMockBuilder('OCP\IUserManager') - ->disableOriginalConstructor() - ->getMock(); + $this->userManager = $this->createMock(IUserManager::class); $this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal') ->disableOriginalConstructor() ->setMethods(['getPrincipalByPath', 'getGroupMembership']) @@ -88,11 +92,11 @@ class CardDavBackendTest extends TestCase { $this->principal->method('getGroupMembership') ->withAnyParameters() ->willReturn([self::UNIT_TEST_GROUP]); + $this->dispatcher = $this->createMock(EventDispatcherInterface::class); $this->db = \OC::$server->getDatabaseConnection(); - $this->backend = new CardDavBackend($this->db, $this->principal, $this->userManager, null); - + $this->backend = new CardDavBackend($this->db, $this->principal, $this->userManager, $this->dispatcher); // start every test with a empty cards_properties and cards table $query = $this->db->getQueryBuilder(); $query->delete('cards_properties')->execute(); @@ -172,7 +176,7 @@ class CardDavBackendTest extends TestCase { /** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $backend */ $backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, null]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) ->setMethods(['updateProperties', 'purgeProperties'])->getMock(); // create a new address book @@ -185,6 +189,16 @@ class CardDavBackendTest extends TestCase { // updateProperties is expected twice, once for createCard and once for updateCard $backend->expects($this->at(0))->method('updateProperties')->with($bookId, $uri, ''); $backend->expects($this->at(1))->method('updateProperties')->with($bookId, $uri, '***'); + + // Expect event + $this->dispatcher->expects($this->at(0)) + ->method('dispatch') + ->with('\OCA\DAV\CardDAV\CardDavBackend::createCard', $this->callback(function(GenericEvent $e) use ($bookId, $uri) { + return $e->getArgument('addressBookId') === $bookId && + $e->getArgument('cardUri') === $uri && + $e->getArgument('cardData') === ''; + })); + // create a card $backend->createCard($bookId, $uri, ''); @@ -203,11 +217,28 @@ class CardDavBackendTest extends TestCase { $this->assertArrayHasKey('size', $card); $this->assertEquals('', $card['carddata']); + // Expect event + $this->dispatcher->expects($this->at(0)) + ->method('dispatch') + ->with('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $this->callback(function(GenericEvent $e) use ($bookId, $uri) { + return $e->getArgument('addressBookId') === $bookId && + $e->getArgument('cardUri') === $uri && + $e->getArgument('cardData') === '***'; + })); + // update the card $backend->updateCard($bookId, $uri, '***'); $card = $backend->getCard($bookId, $uri); $this->assertEquals('***', $card['carddata']); + // Expect event + $this->dispatcher->expects($this->at(0)) + ->method('dispatch') + ->with('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $this->callback(function(GenericEvent $e) use ($bookId, $uri) { + return $e->getArgument('addressBookId') === $bookId && + $e->getArgument('cardUri') === $uri; + })); + // delete the card $backend->expects($this->once())->method('purgeProperties')->with($bookId, $card['id']); $backend->deleteCard($bookId, $uri); @@ -218,7 +249,7 @@ class CardDavBackendTest extends TestCase { public function testMultiCard() { $this->backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, null]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) ->setMethods(['updateProperties'])->getMock(); // create a new address book @@ -264,7 +295,7 @@ class CardDavBackendTest extends TestCase { public function testDeleteWithoutCard() { $this->backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, null]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) ->setMethods([ 'getCardId', 'addChange', @@ -304,7 +335,7 @@ class CardDavBackendTest extends TestCase { public function testSyncSupport() { $this->backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, null]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) ->setMethods(['updateProperties'])->getMock(); // create a new address book @@ -363,7 +394,7 @@ class CardDavBackendTest extends TestCase { $cardId = 2; $backend = $this->getMockBuilder(CardDavBackend::class) - ->setConstructorArgs([$this->db, $this->principal, $this->userManager, null]) + ->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher]) ->setMethods(['getCardId'])->getMock(); $backend->expects($this->any())->method('getCardId')->willReturn($cardId); diff --git a/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php b/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php index fc4be1433fe..e773e41ba5e 100644 --- a/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php +++ b/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php @@ -25,9 +25,13 @@ namespace OCA\DAV\Tests\unit\CardDAV; +use OCA\DAV\CardDAV\AddressBook; use OCA\DAV\CardDAV\ImageExportPlugin; -use OCP\ILogger; +use OCA\DAV\CardDAV\PhotoCache; +use OCP\Files\NotFoundException; +use OCP\Files\SimpleFS\ISimpleFile; use Sabre\CardDAV\Card; +use Sabre\DAV\Node; use Sabre\DAV\Server; use Sabre\DAV\Tree; use Sabre\HTTP\RequestInterface; @@ -36,32 +40,32 @@ use Test\TestCase; class ImageExportPluginTest extends TestCase { - /** @var ResponseInterface | \PHPUnit_Framework_MockObject_MockObject */ + /** @var ResponseInterface|\PHPUnit_Framework_MockObject_MockObject */ private $response; - /** @var RequestInterface | \PHPUnit_Framework_MockObject_MockObject */ + /** @var RequestInterface|\PHPUnit_Framework_MockObject_MockObject */ private $request; - /** @var ImageExportPlugin | \PHPUnit_Framework_MockObject_MockObject */ + /** @var ImageExportPlugin|\PHPUnit_Framework_MockObject_MockObject */ private $plugin; /** @var Server */ private $server; - /** @var Tree | \PHPUnit_Framework_MockObject_MockObject */ + /** @var Tree|\PHPUnit_Framework_MockObject_MockObject */ private $tree; - /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject */ - private $logger; + /** @var PhotoCache|\PHPUnit_Framework_MockObject_MockObject */ + private $cache; function setUp() { parent::setUp(); - $this->request = $this->getMockBuilder('Sabre\HTTP\RequestInterface')->getMock(); - $this->response = $this->getMockBuilder('Sabre\HTTP\ResponseInterface')->getMock(); - $this->server = $this->getMockBuilder('Sabre\DAV\Server')->getMock(); - $this->tree = $this->getMockBuilder('Sabre\DAV\Tree')->disableOriginalConstructor()->getMock(); + $this->request = $this->createMock(RequestInterface::class); + $this->response = $this->createMock(ResponseInterface::class); + $this->server = $this->createMock(Server::class); + $this->tree = $this->createMock(Tree::class); $this->server->tree = $this->tree; - $this->logger = $this->getMockBuilder('\OCP\ILogger')->getMock(); + $this->cache = $this->createMock(PhotoCache::class); - $this->plugin = $this->getMockBuilder('OCA\DAV\CardDAV\ImageExportPlugin') + $this->plugin = $this->getMockBuilder(ImageExportPlugin::class) ->setMethods(['getPhoto']) - ->setConstructorArgs([$this->logger]) + ->setConstructorArgs([$this->cache]) ->getMock(); $this->plugin->initialize($this->server); } @@ -84,112 +88,115 @@ class ImageExportPluginTest extends TestCase { ]; } - public function testNotACard() { - $this->request->expects($this->once())->method('getQueryParameters')->willReturn(['photo' => true]); - $this->request->expects($this->once())->method('getPath')->willReturn('/files/welcome.txt'); - $this->tree->expects($this->once())->method('getNodeForPath')->with('/files/welcome.txt')->willReturn(null); - $result = $this->plugin->httpGet($this->request, $this->response); - $this->assertTrue($result); - } - - /** - * @dataProvider providesCardWithOrWithoutPhoto - * @param bool $expected - * @param array $getPhotoResult - */ - public function testCardWithOrWithoutPhoto($expected, $getPhotoResult) { - $this->request->expects($this->once())->method('getQueryParameters')->willReturn(['photo' => true]); - $this->request->expects($this->once())->method('getPath')->willReturn('/files/welcome.txt'); + public function testNoCard() { + $this->request->method('getQueryParameters') + ->willReturn([ + 'photo' + ]); + $this->request->method('getPath') + ->willReturn('user/book/card'); - $card = $this->getMockBuilder('Sabre\CardDAV\Card')->disableOriginalConstructor()->getMock(); - $this->tree->expects($this->once())->method('getNodeForPath')->with('/files/welcome.txt')->willReturn($card); - - $this->plugin->expects($this->once())->method('getPhoto')->willReturn($getPhotoResult); - - if (!$expected) { - $this->response - ->expects($this->at(0)) - ->method('setHeader') - ->with('Content-Type', $getPhotoResult['Content-Type']); - $this->response - ->expects($this->at(1)) - ->method('setHeader') - ->with('Content-Disposition', 'attachment'); - $this->response - ->expects($this->once()) - ->method('setStatus'); - $this->response - ->expects($this->once()) - ->method('setBody'); - } + $node = $this->createMock(Node::class); + $this->tree->method('getNodeForPath') + ->with('user/book/card') + ->willReturn($node); $result = $this->plugin->httpGet($this->request, $this->response); - $this->assertEquals($expected, $result); + $this->assertTrue($result); } - public function providesCardWithOrWithoutPhoto() { + public function dataTestCard() { return [ - [true, null], - [false, ['Content-Type' => 'image/jpeg', 'body' => '1234']], + [null, false], + [null, true], + [32, false], + [32, true], ]; } /** - * @dataProvider providesPhotoData - * @param $expected - * @param $cardData + * @dataProvider dataTestCard + * + * @param $size + * @param bool $photo */ - public function testGetPhoto($expected, $cardData) { - /** @var Card | \PHPUnit_Framework_MockObject_MockObject $card */ - $card = $this->getMockBuilder('Sabre\CardDAV\Card')->disableOriginalConstructor()->getMock(); - $card->expects($this->once())->method('get')->willReturn($cardData); + public function testCard($size, $photo) { + $query = ['photo' => null]; + if ($size !== null) { + $query['size'] = $size; + } - $this->plugin = new ImageExportPlugin($this->logger); - $this->plugin->initialize($this->server); + $this->request->method('getQueryParameters') + ->willReturn($query); + $this->request->method('getPath') + ->willReturn('user/book/card'); + + $card = $this->createMock(Card::class); + $card->method('getETag') + ->willReturn('"myEtag"'); + $card->method('getName') + ->willReturn('card'); + $book = $this->createMock(AddressBook::class); + $book->method('getResourceId') + ->willReturn(1); + + $this->tree->method('getNodeForPath') + ->willReturnCallback(function($path) use ($card, $book) { + if ($path === 'user/book/card') { + return $card; + } else if ($path === 'user/book') { + return $book; + } + $this->fail(); + }); + + $this->response->expects($this->at(0)) + ->method('setHeader') + ->with('Cache-Control', 'private, max-age=3600, must-revalidate'); + $this->response->expects($this->at(1)) + ->method('setHeader') + ->with('Etag', '"myEtag"'); + $this->response->expects($this->at(2)) + ->method('setHeader') + ->with('Pragma', 'public'); + + $size = $size === null ? -1 : $size; + + if ($photo) { + $file = $this->createMock(ISimpleFile::class); + $file->method('getMimeType') + ->willReturn('imgtype'); + $file->method('getContent') + ->willReturn('imgdata'); + + $this->cache->method('get') + ->with(1, 'card', $size, $card) + ->willReturn($file); + + $this->response->expects($this->at(3)) + ->method('setHeader') + ->with('Content-Type', 'imgtype'); + $this->response->expects($this->at(4)) + ->method('setHeader') + ->with('Content-Disposition', 'attachment'); - $result = $this->plugin->getPhoto($card); - $this->assertEquals($expected, $result); - } + $this->response->expects($this->once()) + ->method('setStatus') + ->with(200); + $this->response->expects($this->once()) + ->method('setBody') + ->with('imgdata'); + + } else { + $this->cache->method('get') + ->with(1, 'card', $size, $card) + ->willThrowException(new NotFoundException()); + $this->response->expects($this->once()) + ->method('setStatus') + ->with(404); + } - public function providesPhotoData() { - return [ - 'empty vcard' => [ - false, - '' - ], - 'vcard without PHOTO' => [ - false, - "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n" - ], - 'vcard 3 with PHOTO' => [ - [ - 'Content-Type' => 'image/jpeg', - 'body' => '12345' - ], - "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU=\r\nEND:VCARD\r\n" - ], - 'vcard 3 with PHOTO URL' => [ - false, - "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;TYPE=JPEG;VALUE=URI:http://example.com/photo.jpg\r\nEND:VCARD\r\n" - ], - 'vcard 4 with PHOTO' => [ - [ - 'Content-Type' => 'image/jpeg', - 'body' => '12345' - ], - "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO:data:image/jpeg;base64,MTIzNDU=\r\nEND:VCARD\r\n" - ], - 'vcard 4 with PHOTO URL' => [ - false, - "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;MEDIATYPE=image/jpeg:http://example.org/photo.jpg\r\nEND:VCARD\r\n" - ], - 'vcard 4 with PHOTO AND INVALID MIMEtYPE' => [ - [ - 'Content-Type' => 'application/octet-stream', - 'body' => '12345' - ], - "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO:data:image/svg;base64,MTIzNDU=\r\nEND:VCARD\r\n" - ], - ]; + $result = $this->plugin->httpGet($this->request, $this->response); + $this->assertFalse($result); } } diff --git a/apps/dav/tests/unit/Connector/PublicAuthTest.php b/apps/dav/tests/unit/Connector/PublicAuthTest.php index 47e1a5be7b8..41cfc0f8ceb 100644 --- a/apps/dav/tests/unit/Connector/PublicAuthTest.php +++ b/apps/dav/tests/unit/Connector/PublicAuthTest.php @@ -33,7 +33,7 @@ use OCP\Share\IManager; * Class PublicAuthTest * * @group DB - * + * * @package OCA\DAV\Tests\unit\Connector */ class PublicAuthTest extends \Test\TestCase { @@ -163,6 +163,28 @@ class PublicAuthTest extends \Test\TestCase { $this->assertTrue($result); } + public function testSharePasswordMailValidPassword() { + $share = $this->getMockBuilder('OCP\Share\IShare') + ->disableOriginalConstructor() + ->getMock(); + $share->method('getPassword')->willReturn('password'); + $share->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_EMAIL); + + $this->shareManager->expects($this->once()) + ->method('getShareByToken') + ->willReturn($share); + + $this->shareManager->expects($this->once()) + ->method('checkPassword')->with( + $this->equalTo($share), + $this->equalTo('password') + )->willReturn(true); + + $result = $this->invokePrivate($this->auth, 'validateUserPass', ['username', 'password']); + + $this->assertTrue($result); + } + public function testSharePasswordLinkValidSession() { $share = $this->getMockBuilder('OCP\Share\IShare') ->disableOriginalConstructor() @@ -214,4 +236,32 @@ class PublicAuthTest extends \Test\TestCase { $this->assertFalse($result); } + + + public function testSharePasswordMailInvalidSession() { + $share = $this->getMockBuilder('OCP\Share\IShare') + ->disableOriginalConstructor() + ->getMock(); + $share->method('getPassword')->willReturn('password'); + $share->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_EMAIL); + $share->method('getId')->willReturn('42'); + + $this->shareManager->expects($this->once()) + ->method('getShareByToken') + ->willReturn($share); + + $this->shareManager->method('checkPassword') + ->with( + $this->equalTo($share), + $this->equalTo('password') + )->willReturn(false); + + $this->session->method('exists')->with('public_link_authenticated')->willReturn(true); + $this->session->method('get')->with('public_link_authenticated')->willReturn('43'); + + $result = $this->invokePrivate($this->auth, 'validateUserPass', ['username', 'password']); + + $this->assertFalse($result); + } + } diff --git a/apps/dav/tests/unit/Connector/Sabre/DirectoryTest.php b/apps/dav/tests/unit/Connector/Sabre/DirectoryTest.php index 18f91bbd8c9..f27f67b0aae 100644 --- a/apps/dav/tests/unit/Connector/Sabre/DirectoryTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/DirectoryTest.php @@ -27,6 +27,42 @@ namespace OCA\DAV\Tests\Unit\Connector\Sabre; use OCP\Files\ForbiddenException; +use OC\Files\FileInfo; +use OCA\DAV\Connector\Sabre\Directory; + +class TestViewDirectory extends \OC\Files\View { + + private $updatables; + private $deletables; + private $canRename; + + public function __construct($updatables, $deletables, $canRename = true) { + $this->updatables = $updatables; + $this->deletables = $deletables; + $this->canRename = $canRename; + } + + public function isUpdatable($path) { + return $this->updatables[$path]; + } + + public function isCreatable($path) { + return $this->updatables[$path]; + } + + public function isDeletable($path) { + return $this->deletables[$path]; + } + + public function rename($path1, $path2) { + return $this->canRename; + } + + public function getRelativePath($path) { + return $path; + } +} + /** * @group DB @@ -41,12 +77,11 @@ class DirectoryTest extends \Test\TestCase { protected function setUp() { parent::setUp(); - $this->view = $this->getMockBuilder('OC\Files\View') - ->disableOriginalConstructor() - ->getMock(); - $this->info = $this->getMockBuilder('OC\Files\FileInfo') - ->disableOriginalConstructor() - ->getMock(); + $this->view = $this->createMock('OC\Files\View'); + $this->info = $this->createMock('OC\Files\FileInfo'); + $this->info->expects($this->any()) + ->method('isReadable') + ->willReturn(true); } private function getDir($path = '/') { @@ -58,7 +93,7 @@ class DirectoryTest extends \Test\TestCase { ->method('getPath') ->will($this->returnValue($path)); - return new \OCA\DAV\Connector\Sabre\Directory($this->view, $this->info); + return new Directory($this->view, $this->info); } /** @@ -172,7 +207,7 @@ class DirectoryTest extends \Test\TestCase { ->method('getRelativePath') ->will($this->returnValue('')); - $dir = new \OCA\DAV\Connector\Sabre\Directory($this->view, $this->info); + $dir = new Directory($this->view, $this->info); $nodes = $dir->getChildren(); $this->assertEquals(2, count($nodes)); @@ -183,6 +218,31 @@ class DirectoryTest extends \Test\TestCase { } /** + * @expectedException \Sabre\DAV\Exception\Forbidden + */ + public function testGetChildrenNoPermission() { + $info = $this->createMock(FileInfo::class); + $info->expects($this->any()) + ->method('isReadable') + ->will($this->returnValue(false)); + + $dir = new Directory($this->view, $info); + $dir->getChildren(); + } + + /** + * @expectedException \Sabre\DAV\Exception\NotFound + */ + public function testGetChildNoPermission() { + $this->info->expects($this->any()) + ->method('isReadable') + ->will($this->returnValue(false)); + + $dir = new Directory($this->view, $this->info); + $dir->getChild('test'); + } + + /** * @expectedException \Sabre\DAV\Exception\ServiceUnavailable */ public function testGetChildThrowStorageNotAvailableException() { @@ -190,7 +250,7 @@ class DirectoryTest extends \Test\TestCase { ->method('getFileInfo') ->willThrowException(new \OCP\Files\StorageNotAvailableException()); - $dir = new \OCA\DAV\Connector\Sabre\Directory($this->view, $this->info); + $dir = new Directory($this->view, $this->info); $dir->getChild('.'); } @@ -204,7 +264,7 @@ class DirectoryTest extends \Test\TestCase { $this->view->expects($this->never()) ->method('getFileInfo'); - $dir = new \OCA\DAV\Connector\Sabre\Directory($this->view, $this->info); + $dir = new Directory($this->view, $this->info); $dir->getChild('.'); } @@ -235,7 +295,7 @@ class DirectoryTest extends \Test\TestCase { ->method('getStorage') ->will($this->returnValue($storage)); - $dir = new \OCA\DAV\Connector\Sabre\Directory($this->view, $this->info); + $dir = new Directory($this->view, $this->info); $this->assertEquals([200, -3], $dir->getQuotaInfo()); //200 used, unlimited } @@ -267,7 +327,105 @@ class DirectoryTest extends \Test\TestCase { ->method('getStorage') ->will($this->returnValue($storage)); - $dir = new \OCA\DAV\Connector\Sabre\Directory($this->view, $this->info); + $dir = new Directory($this->view, $this->info); $this->assertEquals([200, 800], $dir->getQuotaInfo()); //200 used, 800 free } + + /** + * @dataProvider moveFailedProvider + * @expectedException \Sabre\DAV\Exception\Forbidden + */ + public function testMoveFailed($source, $destination, $updatables, $deletables) { + $this->moveTest($source, $destination, $updatables, $deletables); + } + + /** + * @dataProvider moveSuccessProvider + */ + public function testMoveSuccess($source, $destination, $updatables, $deletables) { + $this->moveTest($source, $destination, $updatables, $deletables); + $this->assertTrue(true); + } + + /** + * @dataProvider moveFailedInvalidCharsProvider + * @expectedException \OCA\DAV\Connector\Sabre\Exception\InvalidPath + */ + public function testMoveFailedInvalidChars($source, $destination, $updatables, $deletables) { + $this->moveTest($source, $destination, $updatables, $deletables); + } + + public function moveFailedInvalidCharsProvider() { + return [ + ['a/b', 'a/*', ['a' => true, 'a/b' => true, 'a/c*' => false], []], + ]; + } + + public function moveFailedProvider() { + return [ + ['a/b', 'a/c', ['a' => false, 'a/b' => false, 'a/c' => false], []], + ['a/b', 'b/b', ['a' => false, 'a/b' => false, 'b' => false, 'b/b' => false], []], + ['a/b', 'b/b', ['a' => false, 'a/b' => true, 'b' => false, 'b/b' => false], []], + ['a/b', 'b/b', ['a' => true, 'a/b' => true, 'b' => false, 'b/b' => false], []], + ['a/b', 'b/b', ['a' => true, 'a/b' => true, 'b' => true, 'b/b' => false], ['a/b' => false]], + ['a/b', 'a/c', ['a' => false, 'a/b' => true, 'a/c' => false], []], + ]; + } + + public function moveSuccessProvider() { + return [ + ['a/b', 'b/b', ['a' => true, 'a/b' => true, 'b' => true, 'b/b' => false], ['a/b' => true]], + // older files with special chars can still be renamed to valid names + ['a/b*', 'b/b', ['a' => true, 'a/b*' => true, 'b' => true, 'b/b' => false], ['a/b*' => true]], + ]; + } + + /** + * @param $source + * @param $destination + * @param $updatables + */ + private function moveTest($source, $destination, $updatables, $deletables) { + $view = new TestViewDirectory($updatables, $deletables); + + $sourceInfo = new FileInfo($source, null, null, [], null); + $targetInfo = new FileInfo(dirname($destination), null, null, [], null); + + $sourceNode = new Directory($view, $sourceInfo); + $targetNode = $this->getMockBuilder(Directory::class) + ->setMethods(['childExists']) + ->setConstructorArgs([$view, $targetInfo]) + ->getMock(); + $targetNode->expects($this->any())->method('childExists') + ->with(basename($destination)) + ->willReturn(false); + $this->assertTrue($targetNode->moveInto(basename($destination), $source, $sourceNode)); + } + + /** + * @expectedException \Sabre\DAV\Exception\Forbidden + * @expectedExceptionMessage Could not copy directory b, target exists + */ + public function testFailingMove() { + $source = 'a/b'; + $destination = 'c/b'; + $updatables = ['a' => true, 'a/b' => true, 'b' => true, 'c/b' => false]; + $deletables = ['a/b' => true]; + + $view = new TestViewDirectory($updatables, $deletables); + + $sourceInfo = new FileInfo($source, null, null, [], null); + $targetInfo = new FileInfo(dirname($destination), null, null, [], null); + + $sourceNode = new Directory($view, $sourceInfo); + $targetNode = $this->getMockBuilder(Directory::class) + ->setMethods(['childExists']) + ->setConstructorArgs([$view, $targetInfo]) + ->getMock(); + $targetNode->expects($this->once())->method('childExists') + ->with(basename($destination)) + ->willReturn(true); + + $targetNode->moveInto(basename($destination), $source, $sourceNode); + } } diff --git a/apps/dav/tests/unit/Connector/Sabre/FileTest.php b/apps/dav/tests/unit/Connector/Sabre/FileTest.php index 31344b36463..e2666d0de27 100644 --- a/apps/dav/tests/unit/Connector/Sabre/FileTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/FileTest.php @@ -1003,4 +1003,23 @@ class FileTest extends \Test\TestCase { $file->get(); } + + /** + * @expectedException \Sabre\DAV\Exception\NotFound + */ + public function testGetThrowsIfNoPermission() { + $view = $this->getMockBuilder('\OC\Files\View') + ->setMethods(['fopen']) + ->getMock(); + $view->expects($this->never()) + ->method('fopen'); + + $info = new \OC\Files\FileInfo('/test.txt', $this->getMockStorage(), null, [ + 'permissions' => \OCP\Constants::PERMISSION_CREATE // no read perm + ], null); + + $file = new \OCA\DAV\Connector\Sabre\File($view, $info); + + $file->get(); + } } diff --git a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php index 1c9ebdd09b6..739c8f62540 100644 --- a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php @@ -32,6 +32,9 @@ use Sabre\DAV\PropPatch; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; use Test\TestCase; +use OCA\DAV\Upload\FutureFile; +use OCA\DAV\Connector\Sabre\Directory; +use OCP\Files\FileInfo; /** * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com> @@ -107,6 +110,12 @@ class FilesPluginTest extends TestCase { $this->request, $this->previewManager ); + + $response = $this->getMockBuilder(ResponseInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $this->server->httpResponse = $response; + $this->plugin->initialize($this->server); } @@ -140,13 +149,15 @@ class FilesPluginTest extends TestCase { $node->expects($this->any()) ->method('getDavPermissions') ->will($this->returnValue('DWCKMSR')); + + $fileInfo = $this->createMock(FileInfo::class); + $fileInfo->expects($this->any()) + ->method('isReadable') + ->willReturn(true); + $node->expects($this->any()) ->method('getFileInfo') - ->will($this->returnValue( - $this->getMockBuilder('\OCP\Files\FileInfo') - ->disableOriginalConstructor() - ->getMock() - )); + ->willReturn($fileInfo); return $node; } @@ -305,6 +316,15 @@ class FilesPluginTest extends TestCase { ->getMock(); $node->expects($this->any())->method('getPath')->willReturn('/'); + $fileInfo = $this->createMock(FileInfo::class); + $fileInfo->expects($this->any()) + ->method('isReadable') + ->willReturn(true); + + $node->expects($this->any()) + ->method('getFileInfo') + ->willReturn($fileInfo); + $propFind = new PropFind( '/', [ @@ -321,6 +341,39 @@ class FilesPluginTest extends TestCase { $this->assertEquals('my_fingerprint', $propFind->get(self::DATA_FINGERPRINT_PROPERTYNAME)); } + /** + * @expectedException \Sabre\DAV\Exception\NotFound + */ + public function testGetPropertiesWhenNoPermission() { + /** @var \OCA\DAV\Connector\Sabre\Directory | \PHPUnit_Framework_MockObject_MockObject $node */ + $node = $this->getMockBuilder('\OCA\DAV\Connector\Sabre\Directory') + ->disableOriginalConstructor() + ->getMock(); + $node->expects($this->any())->method('getPath')->willReturn('/'); + + $fileInfo = $this->createMock(FileInfo::class); + $fileInfo->expects($this->any()) + ->method('isReadable') + ->willReturn(false); + + $node->expects($this->any()) + ->method('getFileInfo') + ->willReturn($fileInfo); + + $propFind = new PropFind( + '/test', + [ + self::DATA_FINGERPRINT_PROPERTYNAME, + ], + 0 + ); + + $this->plugin->handleGetProperties( + $propFind, + $node + ); + } + public function testUpdateProps() { $node = $this->createTestNode('\OCA\DAV\Connector\Sabre\File'); @@ -535,4 +588,59 @@ class FilesPluginTest extends TestCase { $this->assertEquals("false", $propFind->get(self::HAS_PREVIEW_PROPERTYNAME)); } + + public function testBeforeMoveFutureFileSkip() { + $node = $this->createMock(Directory::class); + + $this->tree->expects($this->any()) + ->method('getNodeForPath') + ->with('source') + ->will($this->returnValue($node)); + $this->server->httpResponse->expects($this->never()) + ->method('setStatus'); + + $this->assertNull($this->plugin->beforeMoveFutureFile('source', 'target')); + } + + public function testBeforeMoveFutureFileSkipNonExisting() { + $sourceNode = $this->createMock(FutureFile::class); + + $this->tree->expects($this->any()) + ->method('getNodeForPath') + ->with('source') + ->will($this->returnValue($sourceNode)); + $this->tree->expects($this->any()) + ->method('nodeExists') + ->with('target') + ->will($this->returnValue(false)); + $this->server->httpResponse->expects($this->never()) + ->method('setStatus'); + + $this->assertNull($this->plugin->beforeMoveFutureFile('source', 'target')); + } + + public function testBeforeMoveFutureFileMoveIt() { + $sourceNode = $this->createMock(FutureFile::class); + + $this->tree->expects($this->any()) + ->method('getNodeForPath') + ->with('source') + ->will($this->returnValue($sourceNode)); + $this->tree->expects($this->any()) + ->method('nodeExists') + ->with('target') + ->will($this->returnValue(true)); + $this->tree->expects($this->once()) + ->method('move') + ->with('source', 'target'); + + $this->server->httpResponse->expects($this->once()) + ->method('setHeader') + ->with('Content-Length', '0'); + $this->server->httpResponse->expects($this->once()) + ->method('setStatus') + ->with(204); + + $this->assertFalse($this->plugin->beforeMoveFutureFile('source', 'target')); + } } diff --git a/apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php index 4d8a87b093f..3ca131dbf6f 100644 --- a/apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php @@ -34,6 +34,7 @@ use OCP\Files\Folder; use OCP\IGroupManager; use OCP\SystemTag\ISystemTagManager; use OCP\ITags; +use OCP\Files\FileInfo; class FilesReportPluginTest extends \Test\TestCase { /** @var \Sabre\DAV\Server|\PHPUnit_Framework_MockObject_MockObject */ @@ -349,6 +350,9 @@ class FilesReportPluginTest extends \Test\TestCase { public function testPrepareResponses() { $requestedProps = ['{DAV:}getcontentlength', '{http://owncloud.org/ns}fileid', '{DAV:}resourcetype']; + $fileInfo = $this->createMock(FileInfo::class); + $fileInfo->method('isReadable')->willReturn(true); + $node1 = $this->getMockBuilder('\OCA\DAV\Connector\Sabre\Directory') ->disableOriginalConstructor() ->getMock(); @@ -362,6 +366,7 @@ class FilesReportPluginTest extends \Test\TestCase { $node1->expects($this->any()) ->method('getPath') ->will($this->returnValue('/node1')); + $node1->method('getFileInfo')->willReturn($fileInfo); $node2->expects($this->once()) ->method('getInternalFileId') ->will($this->returnValue('222')); @@ -371,6 +376,7 @@ class FilesReportPluginTest extends \Test\TestCase { $node2->expects($this->any()) ->method('getPath') ->will($this->returnValue('/sub/node2')); + $node2->method('getFileInfo')->willReturn($fileInfo); $config = $this->getMockBuilder('\OCP\IConfig') ->disableOriginalConstructor() diff --git a/apps/dav/tests/unit/Connector/Sabre/ObjectTreeTest.php b/apps/dav/tests/unit/Connector/Sabre/ObjectTreeTest.php index 17cb598bf6e..53f60bd0f1c 100644 --- a/apps/dav/tests/unit/Connector/Sabre/ObjectTreeTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/ObjectTreeTest.php @@ -30,47 +30,11 @@ namespace OCA\DAV\Tests\unit\Connector\Sabre; use OC\Files\FileInfo; +use OC\Files\Filesystem; use OC\Files\Storage\Temporary; - -class TestDoubleFileView extends \OC\Files\View { - - public function __construct($creatables, $updatables, $deletables, $canRename = true) { - $this->creatables = $creatables; - $this->updatables = $updatables; - $this->deletables = $deletables; - $this->canRename = $canRename; - $this->lockingProvider = \OC::$server->getLockingProvider(); - } - - public function isUpdatable($path) { - return !empty($this->updatables[$path]); - } - - public function isCreatable($path) { - return !empty($this->creatables[$path]); - } - - public function isDeletable($path) { - return !empty($this->deletables[$path]); - } - - public function rename($path1, $path2) { - return $this->canRename; - } - - public function getRelativePath($path) { - return $path; - } - - public function getFileInfo($path, $includeMountPoints = true) { - $objectTreeTest = new ObjectTreeTest(); - return $objectTreeTest->getFileInfoMock( - $this->isCreatable($path), - $this->isUpdatable($path), - $this->isDeletable($path) - ); - } -} +use OC\Files\View; +use OCA\DAV\Connector\Sabre\Directory; +use OCA\DAV\Connector\Sabre\ObjectTree; /** * Class ObjectTreeTest @@ -81,103 +45,100 @@ class TestDoubleFileView extends \OC\Files\View { */ class ObjectTreeTest extends \Test\TestCase { - public function getFileInfoMock($create = true, $update = true, $delete = true) { - $mock = $this->getMockBuilder('\OCP\Files\FileInfo') - ->disableOriginalConstructor() - ->getMock(); - $mock - ->expects($this->any()) - ->method('isCreatable') - ->willReturn($create); - $mock - ->expects($this->any()) - ->method('isUpdateable') - ->willReturn($update); - $mock - ->expects($this->any()) - ->method('isDeletable') - ->willReturn($delete); - - return $mock; + public function copyDataProvider() { + return [ + // copy into same dir + ['a', 'b', ''], + // copy into same dir + ['a/a', 'a/b', 'a'], + // copy into another dir + ['a', 'sub/a', 'sub'], + ]; } /** - * @dataProvider moveFailedProvider - * @expectedException \Sabre\DAV\Exception\Forbidden + * @dataProvider copyDataProvider */ - public function testMoveFailed($source, $destination, $updatables, $deletables) { - $this->moveTest($source, $destination, $updatables, $updatables, $deletables, true); - } + public function testCopy($sourcePath, $targetPath, $targetParent) { + $view = $this->createMock(View::class); + $view->expects($this->once()) + ->method('verifyPath') + ->with($targetParent) + ->will($this->returnValue(true)); + $view->expects($this->once()) + ->method('file_exists') + ->with($targetPath) + ->willReturn(false); + $view->expects($this->once()) + ->method('copy') + ->with($sourcePath, $targetPath) + ->will($this->returnValue(true)); - /** - * @dataProvider moveSuccessProvider - */ - public function testMoveSuccess($source, $destination, $updatables, $deletables) { - $this->moveTest($source, $destination, $updatables, $updatables, $deletables); - $this->assertTrue(true); - } + $info = $this->createMock(FileInfo::class); + $info->expects($this->once()) + ->method('isCreatable') + ->willReturn(true); - /** - * @dataProvider moveFailedInvalidCharsProvider - * @expectedException \OCA\DAV\Connector\Sabre\Exception\InvalidPath - */ - public function testMoveFailedInvalidChars($source, $destination, $updatables, $deletables) { - $this->moveTest($source, $destination, $updatables, $updatables, $deletables); - } + $view->expects($this->once()) + ->method('getFileInfo') + ->with($targetParent === '' ? '.' : $targetParent) + ->willReturn($info); - function moveFailedInvalidCharsProvider() { - return array( - array('a/b', 'a/*', array('a' => true, 'a/b' => true, 'a/c*' => false), array()), - ); - } + $rootDir = new Directory($view, $info); + $objectTree = $this->getMockBuilder(ObjectTree::class) + ->setMethods(['nodeExists', 'getNodeForPath']) + ->setConstructorArgs([$rootDir, $view]) + ->getMock(); - function moveFailedProvider() { - return array( - array('a/b', 'a/c', array('a' => false, 'a/b' => false, 'a/c' => false), array()), - array('a/b', 'b/b', array('a' => false, 'a/b' => false, 'b' => false, 'b/b' => false), array()), - array('a/b', 'b/b', array('a' => false, 'a/b' => true, 'b' => false, 'b/b' => false), array()), - array('a/b', 'b/b', array('a' => true, 'a/b' => true, 'b' => false, 'b/b' => false), array()), - array('a/b', 'b/b', array('a' => true, 'a/b' => true, 'b' => true, 'b/b' => false), array('a/b' => false)), - array('a/b', 'a/c', array('a' => false, 'a/b' => true, 'a/c' => false), array()), - ); - } + $objectTree->expects($this->once()) + ->method('getNodeForPath') + ->with($this->identicalTo($sourcePath)) + ->will($this->returnValue(false)); - function moveSuccessProvider() { - return array( - array('a/b', 'b/b', array('a' => true, 'a/b' => true, 'b' => true, 'b/b' => false), array('a/b' => true)), - // older files with special chars can still be renamed to valid names - array('a/b*', 'b/b', array('a' => true, 'a/b*' => true, 'b' => true, 'b/b' => false), array('a/b*' => true)), - ); + /** @var $objectTree \OCA\DAV\Connector\Sabre\ObjectTree */ + $mountManager = Filesystem::getMountManager(); + $objectTree->init($rootDir, $view, $mountManager); + $objectTree->copy($sourcePath, $targetPath); } /** - * @param $source - * @param $destination - * @param $creatables - * @param $updatables - * @param $deletables - * @param $throwsBeforeGetNode + * @dataProvider copyDataProvider + * @expectedException \Sabre\DAV\Exception\Forbidden */ - private function moveTest($source, $destination, $creatables, $updatables, $deletables, $throwsBeforeGetNode = false) { - $view = new TestDoubleFileView($creatables, $updatables, $deletables); + public function testCopyFailNotCreatable($sourcePath, $targetPath, $targetParent) { + $view = $this->createMock(View::class); + $view->expects($this->never()) + ->method('verifyPath'); + $view->expects($this->once()) + ->method('file_exists') + ->with($targetPath) + ->willReturn(false); + $view->expects($this->never()) + ->method('copy'); + + $info = $this->createMock(FileInfo::class); + $info->expects($this->once()) + ->method('isCreatable') + ->willReturn(false); - $info = new FileInfo('', null, null, array(), null); + $view->expects($this->once()) + ->method('getFileInfo') + ->with($targetParent === '' ? '.' : $targetParent) + ->willReturn($info); - $rootDir = new \OCA\DAV\Connector\Sabre\Directory($view, $info); - $objectTree = $this->getMockBuilder('\OCA\DAV\Connector\Sabre\ObjectTree') + $rootDir = new Directory($view, $info); + $objectTree = $this->getMockBuilder(ObjectTree::class) ->setMethods(['nodeExists', 'getNodeForPath']) ->setConstructorArgs([$rootDir, $view]) ->getMock(); - $objectTree->expects($throwsBeforeGetNode ? $this->never() : $this->once()) - ->method('getNodeForPath') - ->with($this->identicalTo($source)) - ->will($this->returnValue(false)); + $objectTree->expects($this->never()) + ->method('getNodeForPath'); /** @var $objectTree \OCA\DAV\Connector\Sabre\ObjectTree */ - $mountManager = \OC\Files\Filesystem::getMountManager(); + $mountManager = Filesystem::getMountManager(); $objectTree->init($rootDir, $view, $mountManager); - $objectTree->move($source, $destination); + $objectTree->copy($sourcePath, $targetPath); } /** @@ -361,46 +322,4 @@ class ObjectTreeTest extends \Test\TestCase { $this->assertInstanceOf('\Sabre\DAV\INode', $tree->getNodeForPath($path)); } - - /** - * @expectedException \Sabre\DAV\Exception\Forbidden - * @expectedExceptionMessage Could not copy directory nameOfSourceNode, target exists - */ - public function testFailingMove() { - $source = 'a/b'; - $destination = 'b/b'; - $updatables = array('a' => true, 'a/b' => true, 'b' => true, 'b/b' => false); - $deletables = array('a/b' => true); - - $view = new TestDoubleFileView($updatables, $updatables, $deletables); - - $info = new FileInfo('', null, null, array(), null); - - $rootDir = new \OCA\DAV\Connector\Sabre\Directory($view, $info); - $objectTree = $this->getMockBuilder('\OCA\DAV\Connector\Sabre\ObjectTree') - ->setMethods(['nodeExists', 'getNodeForPath']) - ->setConstructorArgs([$rootDir, $view]) - ->getMock(); - - $sourceNode = $this->getMockBuilder('\Sabre\DAV\ICollection') - ->disableOriginalConstructor() - ->getMock(); - $sourceNode->expects($this->once()) - ->method('getName') - ->will($this->returnValue('nameOfSourceNode')); - - $objectTree->expects($this->once()) - ->method('nodeExists') - ->with($this->identicalTo($destination)) - ->will($this->returnValue(true)); - $objectTree->expects($this->once()) - ->method('getNodeForPath') - ->with($this->identicalTo($source)) - ->will($this->returnValue($sourceNode)); - - /** @var $objectTree \OCA\DAV\Connector\Sabre\ObjectTree */ - $mountManager = \OC\Files\Filesystem::getMountManager(); - $objectTree->init($rootDir, $view, $mountManager); - $objectTree->move($source, $destination); - } } diff --git a/apps/dav/tests/unit/Connector/Sabre/RequestTest/DeleteTest.php b/apps/dav/tests/unit/Connector/Sabre/RequestTest/DeleteTest.php index 7468e981020..35fd83f1fe6 100644 --- a/apps/dav/tests/unit/Connector/Sabre/RequestTest/DeleteTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/RequestTest/DeleteTest.php @@ -31,7 +31,7 @@ use OCP\AppFramework\Http; * * @package OCA\DAV\Tests\unit\Connector\Sabre\RequestTest */ -class DeleteTest extends RequestTest { +class DeleteTest extends RequestTestCase { public function testBasicUpload() { $user = $this->getUniqueID(); $view = $this->setupUser($user, 'pass'); diff --git a/apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php b/apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php index 8aac99e8c54..2cb08420f8d 100644 --- a/apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php @@ -34,7 +34,7 @@ use OCP\Lock\ILockingProvider; * * @package OCA\DAV\Tests\unit\Connector\Sabre\RequestTest */ -class DownloadTest extends RequestTest { +class DownloadTest extends RequestTestCase { public function testDownload() { $user = $this->getUniqueID(); $view = $this->setupUser($user, 'pass'); diff --git a/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTest.php b/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php index 63bd3cf19cc..50e228b7e84 100644 --- a/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/RequestTest/RequestTestCase.php @@ -34,7 +34,7 @@ use Test\TestCase; use Test\Traits\MountProviderTrait; use Test\Traits\UserTrait; -abstract class RequestTest extends TestCase { +abstract class RequestTestCase extends TestCase { use UserTrait; use MountProviderTrait; diff --git a/apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php b/apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php index 1db85b1bcaf..5376241c61d 100644 --- a/apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php @@ -35,7 +35,7 @@ use OCP\Lock\ILockingProvider; * * @package OCA\DAV\Tests\unit\Connector\Sabre\RequestTest */ -class UploadTest extends RequestTest { +class UploadTest extends RequestTestCase { public function testBasicUpload() { $user = $this->getUniqueID(); $view = $this->setupUser($user, 'pass'); diff --git a/apps/encryption/l10n/cs.js b/apps/encryption/l10n/cs.js index 00f0dc99e3e..caf843803a0 100644 --- a/apps/encryption/l10n/cs.js +++ b/apps/encryption/l10n/cs.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "jednorázové heslo pro šifrování na straně serveru", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento soubor se nepodařilo dešifrovat, pravděpodobně je sdílený. Požádejte prosím majitele souboru, aby jej s vámi znovu sdílel.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Soubor nelze načíst, pravděpodobně se jedná o sdílený soubor. Požádejte prosím vlastníka souboru, aby vám jej znovu sdílel.", + "Default encryption module" : "Výchozí šifrovací modul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ahoj!\n\nAdministrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla '%s'.\n\nPřihlašte se do webového rozhraní, přejděte do nastavení 'základního šifrovacího modulu' a aktualizujte šifrovací heslo zadáním hesla výše do pole 'původní přihlašovací heslo' a svého aktuálního přihlašovacího hesla.\n\n", "The share will expire on %s." : "Sdílení vyprší %s.", "Cheers!" : "Ať slouží!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ahoj!<br><br>Administrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla <strong>%s<strong>.<br><br>Přihlašte se do webového rozhraní, přejděte do nastavení \"základního šifrovacího modulu\" a aktualizujte šifrovací heslo zadáním hesla výše do pole \"původní přihlašovací heslo\" a svého aktuálního přihlašovacího hesla.<br><br>", - "Default encryption module" : "Výchozí šifrovací modul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale šifrovací klíče ještě nejsou inicializované. Prosím odhlaste se a znovu se přihlaste", "Encrypt the home storage" : "Zašifrovat domovské úložiště", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Povolení tohoto nastavení zašifruje všechny soubory uložené v hlavním úložišti, jinak budou šifrovány pouze soubory na externích úložištích.", diff --git a/apps/encryption/l10n/cs.json b/apps/encryption/l10n/cs.json index 202a1c1c5bf..923847a9773 100644 --- a/apps/encryption/l10n/cs.json +++ b/apps/encryption/l10n/cs.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "jednorázové heslo pro šifrování na straně serveru", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento soubor se nepodařilo dešifrovat, pravděpodobně je sdílený. Požádejte prosím majitele souboru, aby jej s vámi znovu sdílel.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Soubor nelze načíst, pravděpodobně se jedná o sdílený soubor. Požádejte prosím vlastníka souboru, aby vám jej znovu sdílel.", + "Default encryption module" : "Výchozí šifrovací modul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ahoj!\n\nAdministrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla '%s'.\n\nPřihlašte se do webového rozhraní, přejděte do nastavení 'základního šifrovacího modulu' a aktualizujte šifrovací heslo zadáním hesla výše do pole 'původní přihlašovací heslo' a svého aktuálního přihlašovacího hesla.\n\n", "The share will expire on %s." : "Sdílení vyprší %s.", "Cheers!" : "Ať slouží!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ahoj!<br><br>Administrátor povolil šifrování dat na serveru. Vaše soubory byly zašifrovány za použití hesla <strong>%s<strong>.<br><br>Přihlašte se do webového rozhraní, přejděte do nastavení \"základního šifrovacího modulu\" a aktualizujte šifrovací heslo zadáním hesla výše do pole \"původní přihlašovací heslo\" a svého aktuálního přihlašovacího hesla.<br><br>", - "Default encryption module" : "Výchozí šifrovací modul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikace pro šifrování je zapnuta, ale šifrovací klíče ještě nejsou inicializované. Prosím odhlaste se a znovu se přihlaste", "Encrypt the home storage" : "Zašifrovat domovské úložiště", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Povolení tohoto nastavení zašifruje všechny soubory uložené v hlavním úložišti, jinak budou šifrovány pouze soubory na externích úložištích.", diff --git a/apps/encryption/l10n/da.js b/apps/encryption/l10n/da.js index 4009d68b420..af3a850ea41 100644 --- a/apps/encryption/l10n/da.js +++ b/apps/encryption/l10n/da.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "Engangs password for kryptering på serverdelen", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke kryptere denne fil, sandsynligvis fordi filen er delt. Bed venligst filens ejer om at dele den med dig på ny.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke læse denne fil, sandsynligvis fordi det er en delt fil. Bed venligst ejeren af filen om at dele filen med dig på ny.", + "Default encryption module" : "Standard krypterings modul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hejsa,\n\nadministrator aktiveret kryptering på serverdelen. '%s'.\n\nVenligst log på web brugerfladen, gå til sektionen \"grundlæggende krypterings modul\" for din personlige opsætninger og opdater dine krypterings kodeord ved at indtaste dette kodeord i \"gamle kodeord log\" feltet samt dit nuværende kodeord.\n\n", "The share will expire on %s." : "Delingen vil udløbe om %s.", "Cheers!" : "Hej!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hejsa,<br><br>administrator aktiveret kryptering på serverdelen. Dine file er blevet krypteret med kodeordet <strong>%s</strong>.<br><br>Venligst log på web brugerfladen, gå til sektionen \"grundlæggende krypterings modul\" for din personlige opsætninger og opdater dine krypterings kodeord ved at indtaste dette kodeord i \"gamle kodeord log\" feltet samt dit nuværende kodeord.<br><br>", - "Default encryption module" : "Standard krypterings modul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret men dine nøgler er ikke indlæst, log venligst ud og ind igen", "Encrypt the home storage" : "Krypter hjemmelageret", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ved at slå denne valgmulighed til krypteres alle filer i hovedlageret, ellers vil kun filer på eksternt lager blive krypteret", diff --git a/apps/encryption/l10n/da.json b/apps/encryption/l10n/da.json index 68fab4f623f..437e407509f 100644 --- a/apps/encryption/l10n/da.json +++ b/apps/encryption/l10n/da.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "Engangs password for kryptering på serverdelen", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke kryptere denne fil, sandsynligvis fordi filen er delt. Bed venligst filens ejer om at dele den med dig på ny.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke læse denne fil, sandsynligvis fordi det er en delt fil. Bed venligst ejeren af filen om at dele filen med dig på ny.", + "Default encryption module" : "Standard krypterings modul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hejsa,\n\nadministrator aktiveret kryptering på serverdelen. '%s'.\n\nVenligst log på web brugerfladen, gå til sektionen \"grundlæggende krypterings modul\" for din personlige opsætninger og opdater dine krypterings kodeord ved at indtaste dette kodeord i \"gamle kodeord log\" feltet samt dit nuværende kodeord.\n\n", "The share will expire on %s." : "Delingen vil udløbe om %s.", "Cheers!" : "Hej!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hejsa,<br><br>administrator aktiveret kryptering på serverdelen. Dine file er blevet krypteret med kodeordet <strong>%s</strong>.<br><br>Venligst log på web brugerfladen, gå til sektionen \"grundlæggende krypterings modul\" for din personlige opsætninger og opdater dine krypterings kodeord ved at indtaste dette kodeord i \"gamle kodeord log\" feltet samt dit nuværende kodeord.<br><br>", - "Default encryption module" : "Standard krypterings modul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsprogrammet er aktiveret men dine nøgler er ikke indlæst, log venligst ud og ind igen", "Encrypt the home storage" : "Krypter hjemmelageret", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ved at slå denne valgmulighed til krypteres alle filer i hovedlageret, ellers vil kun filer på eksternt lager blive krypteret", diff --git a/apps/encryption/l10n/de.js b/apps/encryption/l10n/de.js index 3da302d3c6f..c960ae6ff2c 100644 --- a/apps/encryption/l10n/de.js +++ b/apps/encryption/l10n/de.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "Einmal-Passwort für serverseitige Verschlüsselung", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht entschlüsselt werden, es handelt sich wahrscheinlich um eine freigegebene Datei. Bitte den Eigentümer der Datei kontaktieren, um die Datei erneut freizugeben.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht gelesen werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit Dir zu teilen.", + "Default encryption module" : "Standard Verschlüsselungsmodul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte über die Web-Oberfläche anmelden und die persönlichen Einstellungen aufrufen. Dort findet sich die Option 'Basisverschlüsselungsmodul' und das Verschlüsselungspasswort kann aktualisiert werden, indem das Passwort in das Feld 'altes Login Passwort' und in das 'aktuelles Login - Passwort'-Feld eingegeben wird.\n\n", "The share will expire on %s." : "Die Freigabe wird am %s ablaufen.", "Cheers!" : "Noch einen schönen Tag!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde dich im Web-Interface an, gehe in deine persönlichen Einstellungen. Dort findest du die Option 'Basisverschlüsselungsmodul' und aktualisiere dort dein Verschlüsselungspasswort indem du das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingibst.<br><br>", - "Default encryption module" : "Standard Verschlüsselungsmodul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte logge Dich aus und wieder ein.", "Encrypt the home storage" : "Verschlüssle den Speicher", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt", diff --git a/apps/encryption/l10n/de.json b/apps/encryption/l10n/de.json index e7f42735ebe..5ff0d826b6d 100644 --- a/apps/encryption/l10n/de.json +++ b/apps/encryption/l10n/de.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "Einmal-Passwort für serverseitige Verschlüsselung", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht entschlüsselt werden, es handelt sich wahrscheinlich um eine freigegebene Datei. Bitte den Eigentümer der Datei kontaktieren, um die Datei erneut freizugeben.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht gelesen werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit Dir zu teilen.", + "Default encryption module" : "Standard Verschlüsselungsmodul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte über die Web-Oberfläche anmelden und die persönlichen Einstellungen aufrufen. Dort findet sich die Option 'Basisverschlüsselungsmodul' und das Verschlüsselungspasswort kann aktualisiert werden, indem das Passwort in das Feld 'altes Login Passwort' und in das 'aktuelles Login - Passwort'-Feld eingegeben wird.\n\n", "The share will expire on %s." : "Die Freigabe wird am %s ablaufen.", "Cheers!" : "Noch einen schönen Tag!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde dich im Web-Interface an, gehe in deine persönlichen Einstellungen. Dort findest du die Option 'Basisverschlüsselungsmodul' und aktualisiere dort dein Verschlüsselungspasswort indem du das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingibst.<br><br>", - "Default encryption module" : "Standard Verschlüsselungsmodul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte logge Dich aus und wieder ein.", "Encrypt the home storage" : "Verschlüssle den Speicher", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt", diff --git a/apps/encryption/l10n/de_DE.js b/apps/encryption/l10n/de_DE.js index 6c011b3fad2..4b587ce03f3 100644 --- a/apps/encryption/l10n/de_DE.js +++ b/apps/encryption/l10n/de_DE.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "Einmalpasswort für Serverseitige Verschlüsselung", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht entschlüsselt werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktieren Sie den Eigentümer der Datei und bitten Sie darum, die Datei noch einmal mit Ihnen zu teilen.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht gelesen werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktieren Sie den Eigentümer der Datei und bitten Sie darum, die Datei noch einmal mit Ihnen zu teilen.", + "Default encryption module" : "Standard Verschlüsselungsmodul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte melden Sie sich im Web-Interface an, gehen Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingeben.\n\n", "The share will expire on %s." : "Die Freigabe wird am %s ablaufen.", "Cheers!" : "Noch einen schönen Tag!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hollo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melden Sie sich im Web-Interface an und gehen Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort Ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Login-Passwort-' und in das 'aktuelles Login-Passwort' Feld eingeben.<br><br>", - "Default encryption module" : "Standard Verschlüsselungsmodul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte melden Sie sich ab und wieder an", "Encrypt the home storage" : "Benutzerverzeichnis verschlüsslen", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt", diff --git a/apps/encryption/l10n/de_DE.json b/apps/encryption/l10n/de_DE.json index dbcdf21203b..3ffb7ffd0b5 100644 --- a/apps/encryption/l10n/de_DE.json +++ b/apps/encryption/l10n/de_DE.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "Einmalpasswort für Serverseitige Verschlüsselung", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht entschlüsselt werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktieren Sie den Eigentümer der Datei und bitten Sie darum, die Datei noch einmal mit Ihnen zu teilen.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht gelesen werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktieren Sie den Eigentümer der Datei und bitten Sie darum, die Datei noch einmal mit Ihnen zu teilen.", + "Default encryption module" : "Standard Verschlüsselungsmodul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hey,\n\nder Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort '%s' verschlüsselt.\n\nBitte melden Sie sich im Web-Interface an, gehen Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Log - in Passwort' und in das 'aktuellen Login - Passwort' Feld eingeben.\n\n", "The share will expire on %s." : "Die Freigabe wird am %s ablaufen.", "Cheers!" : "Noch einen schönen Tag!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hollo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Kennwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melden Sie sich im Web-Interface an und gehen Sie in ihre persönlichen Einstellungen. Dort finden Sie die Option 'Basisverschlüsselungsmodul' und aktualisieren Sie dort Ihr Verschlüsselungspasswort indem Sie das Passwort in das 'alte Login-Passwort-' und in das 'aktuelles Login-Passwort' Feld eingeben.<br><br>", - "Default encryption module" : "Standard Verschlüsselungsmodul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte melden Sie sich ab und wieder an", "Encrypt the home storage" : "Benutzerverzeichnis verschlüsslen", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt", diff --git a/apps/encryption/l10n/el.js b/apps/encryption/l10n/el.js index 215f26fe2e6..9693895870b 100644 --- a/apps/encryption/l10n/el.js +++ b/apps/encryption/l10n/el.js @@ -29,11 +29,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "κωδικός μιας χρήσης για κρυπτογράφηση στο διακομιστή", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Δεν ήταν δυνατό να αποκρυπτογραφηθεί αυτό το αρχείο, πιθανόν πρόκειται για κοινόχρηστο αρχείο. Παρακαλώ ζητήστε από τον ιδιοκτήτη του αρχείου να το ξαναμοιραστεί μαζί σας.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Αδυναμία ανάγνωσης αυτού του αρχείου, πιθανό να είναι διαμοιραζόμενο αρχείο. Παρακαλώ ρωτήστε τον κάτοχο του αρχείου να το διαμοιράσει ξανά μαζί σας.", + "Default encryption module" : "Προεπιλεγμένη μονάδα κρυπτογράφησης", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Χαίρετε,\n\nο διαχειριστής ενεργοποίηση την κρυπτογράφηση στο διακομιστή. Τα αρχεία σας κρυπτογραφήθηκαν με τον κωδικό '%s'.\n\nΠαρακαλούμε συνδεθείτε στη διεπαφή ιστού, πηγαίνετε στην ενότητα 'μονάδα βασικής κρυπτογράφησης' στις προσωπικές σας ρυθμίσεις και ενημερώστε τον κωδικό κρυπτογράφησης εισάγοντας αυτό τον κωδικό στο πεδίο 'παλιός κωδικός σύνδεσης' και τον τωρινό σας κωδικό σύνδεσης.\n", "The share will expire on %s." : "Ο διαμοιρασμός θα λήξει σε %s.", "Cheers!" : "Χαιρετισμούς!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Χαίρετε,<br><br>ο διαχειριστής ενεργοποίησε την κρυπτογράφηση στο διακομιστή. Τα αρχεία σας κρυπτογραφήθηκαν με τον κωδικό <strong>%s</strong>.<br><br>Παρακαλούμε συνδεθείτε στη διεπαφή ιστού, πηγαίνετε στην ενότητα \"μονάδα βασικής κρυπτογράφησης\" τωνπ ροσωπικών σας ρυθμίσεων και ενημερώστε τον κωδικό κρυπτογράφησης εισάγοντας αυτό τον κωδικό στο πεδίο \"παλιός κωδικός σύνδεσης\" και τον τωρινό σας κωδικό σύνδεσης.", - "Default encryption module" : "Προεπιλεγμένη μονάδα κρυπτογράφησης", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.", "Encrypt the home storage" : "Κρυπτογράφηση του κεντρικού χώρου αποθήκευσης", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Η ενεργοποίηση αυτή της επιλογής κρυπτογραφεί όλα τα αρχεία που βρίσκονται στον κύριο αποθηκευτικό χώρο, αλλιώς μόνο τα αρχεία σε εξωτερικούς αποθηκευτικούς χώρους θα κρυπτογραφηθούν.", diff --git a/apps/encryption/l10n/el.json b/apps/encryption/l10n/el.json index 2d92d421c13..c24465c32ad 100644 --- a/apps/encryption/l10n/el.json +++ b/apps/encryption/l10n/el.json @@ -27,11 +27,11 @@ "one-time password for server-side-encryption" : "κωδικός μιας χρήσης για κρυπτογράφηση στο διακομιστή", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Δεν ήταν δυνατό να αποκρυπτογραφηθεί αυτό το αρχείο, πιθανόν πρόκειται για κοινόχρηστο αρχείο. Παρακαλώ ζητήστε από τον ιδιοκτήτη του αρχείου να το ξαναμοιραστεί μαζί σας.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Αδυναμία ανάγνωσης αυτού του αρχείου, πιθανό να είναι διαμοιραζόμενο αρχείο. Παρακαλώ ρωτήστε τον κάτοχο του αρχείου να το διαμοιράσει ξανά μαζί σας.", + "Default encryption module" : "Προεπιλεγμένη μονάδα κρυπτογράφησης", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Χαίρετε,\n\nο διαχειριστής ενεργοποίηση την κρυπτογράφηση στο διακομιστή. Τα αρχεία σας κρυπτογραφήθηκαν με τον κωδικό '%s'.\n\nΠαρακαλούμε συνδεθείτε στη διεπαφή ιστού, πηγαίνετε στην ενότητα 'μονάδα βασικής κρυπτογράφησης' στις προσωπικές σας ρυθμίσεις και ενημερώστε τον κωδικό κρυπτογράφησης εισάγοντας αυτό τον κωδικό στο πεδίο 'παλιός κωδικός σύνδεσης' και τον τωρινό σας κωδικό σύνδεσης.\n", "The share will expire on %s." : "Ο διαμοιρασμός θα λήξει σε %s.", "Cheers!" : "Χαιρετισμούς!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Χαίρετε,<br><br>ο διαχειριστής ενεργοποίησε την κρυπτογράφηση στο διακομιστή. Τα αρχεία σας κρυπτογραφήθηκαν με τον κωδικό <strong>%s</strong>.<br><br>Παρακαλούμε συνδεθείτε στη διεπαφή ιστού, πηγαίνετε στην ενότητα \"μονάδα βασικής κρυπτογράφησης\" τωνπ ροσωπικών σας ρυθμίσεων και ενημερώστε τον κωδικό κρυπτογράφησης εισάγοντας αυτό τον κωδικό στο πεδίο \"παλιός κωδικός σύνδεσης\" και τον τωρινό σας κωδικό σύνδεσης.", - "Default encryption module" : "Προεπιλεγμένη μονάδα κρυπτογράφησης", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Η εφαρμογή κρυπτογράφησης είναι ενεργοποιημένη αλλά τα κλειδιά σας δεν έχουν καταγραφεί, παρακαλώ αποσυνδεθείτε και επανασυνδεθείτε.", "Encrypt the home storage" : "Κρυπτογράφηση του κεντρικού χώρου αποθήκευσης", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Η ενεργοποίηση αυτή της επιλογής κρυπτογραφεί όλα τα αρχεία που βρίσκονται στον κύριο αποθηκευτικό χώρο, αλλιώς μόνο τα αρχεία σε εξωτερικούς αποθηκευτικούς χώρους θα κρυπτογραφηθούν.", diff --git a/apps/encryption/l10n/es.js b/apps/encryption/l10n/es.js index 5b91875f1be..aeb9f47d271 100644 --- a/apps/encryption/l10n/es.js +++ b/apps/encryption/l10n/es.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "Contraseña de un solo uso para el cifrado en el lado servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No se puede leer este archivo, probablemente sea un archivo compartido. Consulte con el propietario del mismo y que lo vuelva a compartir con usted.", + "Default encryption module" : "Módulo de cifrado por defecto", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha activado el cifrado de datos en servidor. Tus archivos han sido cifrados usando la contraseña '%s'.\n\nPor favor, inicia tu sesión desde la interfaz web, ves a la sección 'módulo de cifrado básico' de tu área de ajustes personales y actualiza la contraseña de cifrado. Para ello, deberás introducir esta contraseña en el campo 'contraseña de acceso antigua' junto con tu actual contraseña de acceso.\n\n", "The share will expire on %s." : "El objeto dejará de ser compartido el %s.", "Cheers!" : "¡Saludos!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>el administrador ha activado el cifrado de datos en servidor. Tus archivos han sido cifrados usando la contraseña <strong>%s</strong>.<br><br>Por favor, inicia tu sesión desde la interfaz web, ves a la sección 'módulo de cifrado básico' de tu área de ajustes personales y actualiza la contraseña de cifrado. Para ello, deberás introducir esta contraseña en el campo 'contraseña de acceso antigua' junto con tu actual contraseña de acceso.<br><br>", - "Default encryption module" : "Módulo de cifrado por defecto", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.", "Encrypt the home storage" : "Encriptar el almacenamiento personal", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Al activar esta opción se encriptarán todos los archivos almacenados en la memoria principal, de lo contrario serán cifrados sólo los archivos de almacenamiento externo", diff --git a/apps/encryption/l10n/es.json b/apps/encryption/l10n/es.json index 907b03487a4..528b559ee78 100644 --- a/apps/encryption/l10n/es.json +++ b/apps/encryption/l10n/es.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "Contraseña de un solo uso para el cifrado en el lado servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No se puede leer este archivo, probablemente sea un archivo compartido. Consulte con el propietario del mismo y que lo vuelva a compartir con usted.", + "Default encryption module" : "Módulo de cifrado por defecto", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha activado el cifrado de datos en servidor. Tus archivos han sido cifrados usando la contraseña '%s'.\n\nPor favor, inicia tu sesión desde la interfaz web, ves a la sección 'módulo de cifrado básico' de tu área de ajustes personales y actualiza la contraseña de cifrado. Para ello, deberás introducir esta contraseña en el campo 'contraseña de acceso antigua' junto con tu actual contraseña de acceso.\n\n", "The share will expire on %s." : "El objeto dejará de ser compartido el %s.", "Cheers!" : "¡Saludos!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>el administrador ha activado el cifrado de datos en servidor. Tus archivos han sido cifrados usando la contraseña <strong>%s</strong>.<br><br>Por favor, inicia tu sesión desde la interfaz web, ves a la sección 'módulo de cifrado básico' de tu área de ajustes personales y actualiza la contraseña de cifrado. Para ello, deberás introducir esta contraseña en el campo 'contraseña de acceso antigua' junto con tu actual contraseña de acceso.<br><br>", - "Default encryption module" : "Módulo de cifrado por defecto", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.", "Encrypt the home storage" : "Encriptar el almacenamiento personal", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Al activar esta opción se encriptarán todos los archivos almacenados en la memoria principal, de lo contrario serán cifrados sólo los archivos de almacenamiento externo", diff --git a/apps/encryption/l10n/es_MX.js b/apps/encryption/l10n/es_MX.js index 3aec9628585..ca252c401d0 100644 --- a/apps/encryption/l10n/es_MX.js +++ b/apps/encryption/l10n/es_MX.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "Contraseña de una-sola-vez para la encripción del lado del servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible decriptar este archivo, posiblemente sea un archivo compartido. Favor de solicitar al dueño del archivo que lo vuelva a compartir con usted.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compatido. Favor de solicitar al dueño que vuelva a compartirlo con usted. ", + "Default encryption module" : "Módulo de encripción predeterminado", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha habilitado la encripción de lado del servidor. Sus archivos fueron encriptados usando la contraseña '%s'\n\nFavor de iniciar sesión en la interface web, vaya a la sección \"módulo de encripción básica\" de sus ajustes personales y actualice su contraseña de encripción ingresando esta contraseña en el campo 'contraseña de inicio de sesión anterior' y su contraseña de inicio de sesión actual. \n", "The share will expire on %s." : "El elemento compartido expirará el %s.", "Cheers!" : "¡Saludos!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola, <br><br>el administrador ha habilitado la encripción del lado del servidor. Sus archivos fueron encriptados usando la contraseña <strong>%s</strong>.<br><br> Favor de iniciar sesisón en la interface web, vaya a la sección \"módulo de encripción básica\" de sus ajustes personales y actualice su contraseña de encripción ingresando esta contraseña en el campo \"contraseña de inicio de sesión anterior\" y su contraseña de inicio de sesión actual. <br><br>", - "Default encryption module" : "Módulo de encripción predeterminado", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encripción esta habilitada pero sus llaves no han sido inicializadas, favor de salir y volver a entrar a la sesion", "Encrypt the home storage" : "Encriptar el almacenamiento de inicio", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Habilitar esta opción encripta todos los archivos almacenados en el almacenamiento principal, de otro modo, sólo los archivos en el almacenamiento externo serán encriptados", diff --git a/apps/encryption/l10n/es_MX.json b/apps/encryption/l10n/es_MX.json index d29ac057514..86095ed56c4 100644 --- a/apps/encryption/l10n/es_MX.json +++ b/apps/encryption/l10n/es_MX.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "Contraseña de una-sola-vez para la encripción del lado del servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible decriptar este archivo, posiblemente sea un archivo compartido. Favor de solicitar al dueño del archivo que lo vuelva a compartir con usted.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es posible leer este archivo, posiblemente sea un archivo compatido. Favor de solicitar al dueño que vuelva a compartirlo con usted. ", + "Default encryption module" : "Módulo de encripción predeterminado", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hola,\n\nel administrador ha habilitado la encripción de lado del servidor. Sus archivos fueron encriptados usando la contraseña '%s'\n\nFavor de iniciar sesión en la interface web, vaya a la sección \"módulo de encripción básica\" de sus ajustes personales y actualice su contraseña de encripción ingresando esta contraseña en el campo 'contraseña de inicio de sesión anterior' y su contraseña de inicio de sesión actual. \n", "The share will expire on %s." : "El elemento compartido expirará el %s.", "Cheers!" : "¡Saludos!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola, <br><br>el administrador ha habilitado la encripción del lado del servidor. Sus archivos fueron encriptados usando la contraseña <strong>%s</strong>.<br><br> Favor de iniciar sesisón en la interface web, vaya a la sección \"módulo de encripción básica\" de sus ajustes personales y actualice su contraseña de encripción ingresando esta contraseña en el campo \"contraseña de inicio de sesión anterior\" y su contraseña de inicio de sesión actual. <br><br>", - "Default encryption module" : "Módulo de encripción predeterminado", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "La aplicación de encripción esta habilitada pero sus llaves no han sido inicializadas, favor de salir y volver a entrar a la sesion", "Encrypt the home storage" : "Encriptar el almacenamiento de inicio", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Habilitar esta opción encripta todos los archivos almacenados en el almacenamiento principal, de otro modo, sólo los archivos en el almacenamiento externo serán encriptados", diff --git a/apps/encryption/l10n/fi.js b/apps/encryption/l10n/fi.js index 0a1887a5f3d..6498d1bc37a 100644 --- a/apps/encryption/l10n/fi.js +++ b/apps/encryption/l10n/fi.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "kertakäyttöinen salasana palvelinpään salausta varten", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tämän tiedoston salauksen purkaminen ei onnistu. Kyseessä on luultavasti jaettu tiedosto. Pyydä tiedoston omistajaa jakamaan tiedosto kanssasi uudelleen.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tiedostoa ei voi lukea, se on luultavasti jaettu tiedosto. Pyydä tiedoston omistajaa jakamaan tiedosto uudelleen kanssasi.", + "Default encryption module" : "Oletus salausmoduuli", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hei,\n\nYlläpiäjä on ottanut käyttöön palvelimen salauksen. Tiedostosi salattiin salasanalla '%s'.\n\nOle hyvä ja kirjaudu palveluun verkkokäyttöliittymän kautta, siirry henkilökohtaisten asetustesi kohtaan \"perussalausmoduuli\" ja päivitä salaukseen käytettävä salasanasi syöttämällä yllä mainittu salasana \"vanha kirjautumissalasana\"-kenttään ja nykyinen kirjautumissalasanasi.\n\n", "The share will expire on %s." : "Jakaminen päättyy %s.", "Cheers!" : "Kiitos!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hei,<br><br>Ylläpiäjä on ottanut käyttöön palvelimen salauksen. Tiedostosi salattiin salasanalla <strong>%s</srong>.<br><br>Ole hyvä ja kirjaudu palveluun verkkokäyttöliittymän kautta, siirry henkilökohtaisten asetustesi kohtaan \"perussalausmoduuli\" ja päivitä salaukseen käytettävä salasanasi syöttämällä yllä mainittu salasana \"vanha kirjautumissalasana\"-kenttään ja nykyinen kirjautumissalasanasi.<br><br>", - "Default encryption module" : "Oletus salausmoduuli", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on aktivoitu, mutta avaimia ei ole alustettu, kirjaudu uudelleen sisään", "Encrypt the home storage" : "Salaa oma kotitila", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Tämän valinnan ollessa valittuna salataan kaikki päätallennustilaan tallennetut tiedostot. Muussa tapauksessa ainoastaan ulkoisessa tallennustilassa sijaitsevat tiedostot salataan.", diff --git a/apps/encryption/l10n/fi.json b/apps/encryption/l10n/fi.json index 5768d7a9d82..85ff9de3975 100644 --- a/apps/encryption/l10n/fi.json +++ b/apps/encryption/l10n/fi.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "kertakäyttöinen salasana palvelinpään salausta varten", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tämän tiedoston salauksen purkaminen ei onnistu. Kyseessä on luultavasti jaettu tiedosto. Pyydä tiedoston omistajaa jakamaan tiedosto kanssasi uudelleen.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tiedostoa ei voi lukea, se on luultavasti jaettu tiedosto. Pyydä tiedoston omistajaa jakamaan tiedosto uudelleen kanssasi.", + "Default encryption module" : "Oletus salausmoduuli", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hei,\n\nYlläpiäjä on ottanut käyttöön palvelimen salauksen. Tiedostosi salattiin salasanalla '%s'.\n\nOle hyvä ja kirjaudu palveluun verkkokäyttöliittymän kautta, siirry henkilökohtaisten asetustesi kohtaan \"perussalausmoduuli\" ja päivitä salaukseen käytettävä salasanasi syöttämällä yllä mainittu salasana \"vanha kirjautumissalasana\"-kenttään ja nykyinen kirjautumissalasanasi.\n\n", "The share will expire on %s." : "Jakaminen päättyy %s.", "Cheers!" : "Kiitos!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hei,<br><br>Ylläpiäjä on ottanut käyttöön palvelimen salauksen. Tiedostosi salattiin salasanalla <strong>%s</srong>.<br><br>Ole hyvä ja kirjaudu palveluun verkkokäyttöliittymän kautta, siirry henkilökohtaisten asetustesi kohtaan \"perussalausmoduuli\" ja päivitä salaukseen käytettävä salasanasi syöttämällä yllä mainittu salasana \"vanha kirjautumissalasana\"-kenttään ja nykyinen kirjautumissalasanasi.<br><br>", - "Default encryption module" : "Oletus salausmoduuli", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Salaussovellus on aktivoitu, mutta avaimia ei ole alustettu, kirjaudu uudelleen sisään", "Encrypt the home storage" : "Salaa oma kotitila", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Tämän valinnan ollessa valittuna salataan kaikki päätallennustilaan tallennetut tiedostot. Muussa tapauksessa ainoastaan ulkoisessa tallennustilassa sijaitsevat tiedostot salataan.", diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js index 4bc0670874e..daecb1c404e 100644 --- a/apps/encryption/l10n/fr.js +++ b/apps/encryption/l10n/fr.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "Mot de passe à usage unique pour le chiffrement côté serveur", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ", + "Default encryption module" : "Module de chiffrement par défaut", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n%s\n\nVeuillez suivre ces instructions :\n\n1. Connectez-vous à l'interface web et trouvez la section \"Module de chiffrement de base d'\" dans vos paramètres personnels;\n\n2. Entrez le mot de passe fourni ci-dessus dans le champ \"Ancien mot de passe de connexion\";\n\n3. Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ \"Actuel mot de passe de connexion\";\n\n4. Validez en cliquant sur le bouton \"Mettre à jour le mot de passe de votre clef privée\".\n", "The share will expire on %s." : "Le partage expirera le %s.", "Cheers!" : "À bientôt !", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour,\n<br><br>\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n<p style=\"font-family: monospace;\"><b>%s</b></p>\n\n<p>\nVeuillez suivre ces instructions :\n<ol>\n<li>Connectez-vous à l'interface web et trouvez la section <em>\"Module de chiffrement de base d'\"</em> dans vos paramètres personnels;</li>\n<li>Entrez le mot de passe fourni ci-dessus dans le champ <em>\"Ancien mot de passe de connexion\"</em>;</li>\n<li>Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ <em>\"Actuel mot de passe de connexion\"</em>;</li>\n<li>Validez en cliquant sur le bouton <em>\"Mettre à jour le mot de passe de votre clef privée\"</em>.</li>\n</ol>\n</p>", - "Default encryption module" : "Module de chiffrement par défaut", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.", "Encrypt the home storage" : "Chiffrer l'espace de stockage principal", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'activation de cette option chiffre tous les fichiers du stockage principal, sinon seuls les espaces de stockage externes seront chiffrés", diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json index bb194bcfb14..30727c5c610 100644 --- a/apps/encryption/l10n/fr.json +++ b/apps/encryption/l10n/fr.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "Mot de passe à usage unique pour le chiffrement côté serveur", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ", + "Default encryption module" : "Module de chiffrement par défaut", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n%s\n\nVeuillez suivre ces instructions :\n\n1. Connectez-vous à l'interface web et trouvez la section \"Module de chiffrement de base d'\" dans vos paramètres personnels;\n\n2. Entrez le mot de passe fourni ci-dessus dans le champ \"Ancien mot de passe de connexion\";\n\n3. Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ \"Actuel mot de passe de connexion\";\n\n4. Validez en cliquant sur le bouton \"Mettre à jour le mot de passe de votre clef privée\".\n", "The share will expire on %s." : "Le partage expirera le %s.", "Cheers!" : "À bientôt !", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour,\n<br><br>\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n<p style=\"font-family: monospace;\"><b>%s</b></p>\n\n<p>\nVeuillez suivre ces instructions :\n<ol>\n<li>Connectez-vous à l'interface web et trouvez la section <em>\"Module de chiffrement de base d'\"</em> dans vos paramètres personnels;</li>\n<li>Entrez le mot de passe fourni ci-dessus dans le champ <em>\"Ancien mot de passe de connexion\"</em>;</li>\n<li>Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ <em>\"Actuel mot de passe de connexion\"</em>;</li>\n<li>Validez en cliquant sur le bouton <em>\"Mettre à jour le mot de passe de votre clef privée\"</em>.</li>\n</ol>\n</p>", - "Default encryption module" : "Module de chiffrement par défaut", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.", "Encrypt the home storage" : "Chiffrer l'espace de stockage principal", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'activation de cette option chiffre tous les fichiers du stockage principal, sinon seuls les espaces de stockage externes seront chiffrés", diff --git a/apps/encryption/l10n/hu.js b/apps/encryption/l10n/hu.js index 0b93142bfd4..ded3e0ebbb5 100644 --- a/apps/encryption/l10n/hu.js +++ b/apps/encryption/l10n/hu.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "szerver-oldali titkosítás egyszer használható jelszava", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "A fájlt nem sikerült visszafejteni, valószínűleg ez egy megosztott fájl. Kérje meg a fájl tulajdonosát, hogy újra ossza meg veled ezt az állományt!", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Ez a fájl nem olvasható, valószínűleg ez egy megosztott fájl. Kérd meg a tulajdonosát, hogy ossza meg veled újra ezt a fájlt.", + "Default encryption module" : "Alapértelmezett titkosítási modul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Szia!\n\nAz adminisztrátor bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: '%s'.\n\nKérlek jelentkezz be a webes felületre és a személyes beállítások 'alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.\n\n", "The share will expire on %s." : "A megosztás lejár ekkor %s", "Cheers!" : "Üdv.", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Szia!<br><br>Az adminisztrátor bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: <strong>%s</strong>.<br><br>Kérlek jelentkezz be a webes felületre és a személyes beállítások 'alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.<br><br>", - "Default encryption module" : "Alapértelmezett titkosítási modul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "A titkosító alkalmazás engedélyezve van, de a kulcsaid még nincsenek inicializálva. Kérlek lépj ki, majd lépj be újra", "Encrypt the home storage" : "Helyi tároló titkosítása", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "A lehetőség engedélyezésekor minden fájlt titkosít a fő tárolóban, egyébként csak a külső tárolókon lévő fájlok lesznek titkosítva", diff --git a/apps/encryption/l10n/hu.json b/apps/encryption/l10n/hu.json index 7f6814fa533..8eb3ecdc056 100644 --- a/apps/encryption/l10n/hu.json +++ b/apps/encryption/l10n/hu.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "szerver-oldali titkosítás egyszer használható jelszava", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "A fájlt nem sikerült visszafejteni, valószínűleg ez egy megosztott fájl. Kérje meg a fájl tulajdonosát, hogy újra ossza meg veled ezt az állományt!", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Ez a fájl nem olvasható, valószínűleg ez egy megosztott fájl. Kérd meg a tulajdonosát, hogy ossza meg veled újra ezt a fájlt.", + "Default encryption module" : "Alapértelmezett titkosítási modul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Szia!\n\nAz adminisztrátor bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: '%s'.\n\nKérlek jelentkezz be a webes felületre és a személyes beállítások 'alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.\n\n", "The share will expire on %s." : "A megosztás lejár ekkor %s", "Cheers!" : "Üdv.", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Szia!<br><br>Az adminisztrátor bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: <strong>%s</strong>.<br><br>Kérlek jelentkezz be a webes felületre és a személyes beállítások 'alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.<br><br>", - "Default encryption module" : "Alapértelmezett titkosítási modul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "A titkosító alkalmazás engedélyezve van, de a kulcsaid még nincsenek inicializálva. Kérlek lépj ki, majd lépj be újra", "Encrypt the home storage" : "Helyi tároló titkosítása", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "A lehetőség engedélyezésekor minden fájlt titkosít a fő tárolóban, egyébként csak a külső tárolókon lévő fájlok lesznek titkosítva", diff --git a/apps/encryption/l10n/id.js b/apps/encryption/l10n/id.js index 2da45ac1dd4..bffb92a4dcd 100644 --- a/apps/encryption/l10n/id.js +++ b/apps/encryption/l10n/id.js @@ -23,17 +23,18 @@ OC.L10N.register( "Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Anda perlu mengganti kunci enkripsi Anda dari enkripsi lama (ownCloud <= 8.0) ke yang baru. Mohon jalankan 'occ encryption:migrate' atau hubungi administrator Anda", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk aplikasi enkripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienkripsi.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Apl Enkripsi telah aktif, tapi kunci anda tidak diinisialisasikan. Harap keluar-log dan masuk-log kembali.", "Encryption app is enabled and ready" : "Apl enkripsi aktif dan siap", "Bad Signature" : "Tanda salah", "Missing Signature" : "Tanda hilang", "one-time password for server-side-encryption" : "Sandi sekali pakai untuk server-side-encryption", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat mendekripsi berkas ini, mungkin ini adalah berkas bersama. Silakan meminta pemilik berkas ini untuk membagikan kembali dengan Anda.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat membaca berkas ini, kemungkinan merupakan berkas berbagi. Silakan minta pemilik berkas untuk membagikan ulang kepada Anda.", + "Default encryption module" : "Modul bawaan enkripsi", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hai,\n\nadmin mengaktifkan server-side-encryption. Berkas-berkas Anda dienkripsi menggunakan sandi '%s'.\n\nSilakan masuk di antarmuka web, pergi ke bagian 'modul enkripsi dasar' pada pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini kedalam kolom 'sandi masuk yang lama' dan sandi-masuk saat ini.\n\n", "The share will expire on %s." : "Pembagian akan berakhir pada %s.", "Cheers!" : "Horee!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hai,<br><br>admin mengaktifkan server-side-encryption. Berkas-berkas Anda dienkripsi menggunakan sandi <strong>%s</strong>.<br><br>Silakan masuk di antarmuka web, pergi ke bagian 'modul enkripsi dasar' pada pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini kedalam kolom 'sandi masuk yang lama' dan sandi masuk yang baru.<br><br>", - "Default encryption module" : "Modul bawaan enkripsi", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi enkripsi telah diaktifkan tetapi kunci tidak terinisialisasi, silakan log-out dan log-in lagi", "Encrypt the home storage" : "Enkripsi penyimpanan rumah", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Mengaktifkan opsi ini akan mengenkripsi semua berkas yang disimpan pada penyimpanan utama, jika tidak diaktifkan maka hanya berkas pada penyimpanan eksternal saja yang akan dienkripsi.", diff --git a/apps/encryption/l10n/id.json b/apps/encryption/l10n/id.json index 1f139e2ea21..e0600c7afa0 100644 --- a/apps/encryption/l10n/id.json +++ b/apps/encryption/l10n/id.json @@ -21,17 +21,18 @@ "Private key password successfully updated." : "Sandi kunci privat berhasil diperbarui.", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "Anda perlu mengganti kunci enkripsi Anda dari enkripsi lama (ownCloud <= 8.0) ke yang baru. Mohon jalankan 'occ encryption:migrate' atau hubungi administrator Anda", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Kunci privat tidak sah untuk aplikasi enkripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienkripsi.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Apl Enkripsi telah aktif, tapi kunci anda tidak diinisialisasikan. Harap keluar-log dan masuk-log kembali.", "Encryption app is enabled and ready" : "Apl enkripsi aktif dan siap", "Bad Signature" : "Tanda salah", "Missing Signature" : "Tanda hilang", "one-time password for server-side-encryption" : "Sandi sekali pakai untuk server-side-encryption", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat mendekripsi berkas ini, mungkin ini adalah berkas bersama. Silakan meminta pemilik berkas ini untuk membagikan kembali dengan Anda.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tidak dapat membaca berkas ini, kemungkinan merupakan berkas berbagi. Silakan minta pemilik berkas untuk membagikan ulang kepada Anda.", + "Default encryption module" : "Modul bawaan enkripsi", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hai,\n\nadmin mengaktifkan server-side-encryption. Berkas-berkas Anda dienkripsi menggunakan sandi '%s'.\n\nSilakan masuk di antarmuka web, pergi ke bagian 'modul enkripsi dasar' pada pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini kedalam kolom 'sandi masuk yang lama' dan sandi-masuk saat ini.\n\n", "The share will expire on %s." : "Pembagian akan berakhir pada %s.", "Cheers!" : "Horee!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hai,<br><br>admin mengaktifkan server-side-encryption. Berkas-berkas Anda dienkripsi menggunakan sandi <strong>%s</strong>.<br><br>Silakan masuk di antarmuka web, pergi ke bagian 'modul enkripsi dasar' pada pengaturan pribadi Anda dan perbarui sandi enkripsi Anda dengan memasukkan sandi ini kedalam kolom 'sandi masuk yang lama' dan sandi masuk yang baru.<br><br>", - "Default encryption module" : "Modul bawaan enkripsi", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikasi enkripsi telah diaktifkan tetapi kunci tidak terinisialisasi, silakan log-out dan log-in lagi", "Encrypt the home storage" : "Enkripsi penyimpanan rumah", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Mengaktifkan opsi ini akan mengenkripsi semua berkas yang disimpan pada penyimpanan utama, jika tidak diaktifkan maka hanya berkas pada penyimpanan eksternal saja yang akan dienkripsi.", diff --git a/apps/encryption/l10n/it.js b/apps/encryption/l10n/it.js index 004559ddc88..ce5a75dfa7d 100644 --- a/apps/encryption/l10n/it.js +++ b/apps/encryption/l10n/it.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "password monouso per la cifratura lato server", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossibile decifrare questo file, probabilmente è un file condiviso. Chiedi al proprietario del file di condividere nuovamente il file con te.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossibile leggere questo file, probabilmente è un file condiviso. Chiedi al proprietario del file di condividere nuovamente il file con te.", + "Default encryption module" : "Modulo di cifratura predefinito", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ciao,\n\nl'amministratore ha abilitato la cifratura lato server. I tuoi file sono stati\ncifrati utilizzando la password '%s'.\n\nAccedi all'interfaccia web, vai alla sezione 'modulo di cifratura base di' dalle nelle tue impostazioni personali e aggiorna la tua password di cifratura digitando la password nel campo 'vecchia password di accesso' e la tua nuova password.\n\n", "The share will expire on %s." : "La condivisione scadrà il %s.", "Cheers!" : "Saluti!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ciao,<br><br>l'amministratore ha abilitato la cifratura lato server. I tuoi file sono stati cifrati utilizzando la password <strong>%s</strong>.<br><br>Accedi all'interfaccia web, vai alla sezione \"modulo di cifratura base di\" dalle nelle tue impostazioni personali e aggiorna la tua password di cifratura digitando la password nel campo \"vecchia password di accesso\" e la tua nuova password.", - "Default encryption module" : "Modulo di cifratura predefinito", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate, disconnettiti ed effettua nuovamente l'accesso", "Encrypt the home storage" : "Cifra l'archiviazione principale", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'abilitazione di questa opzione cifra tutti i file memorizzati sull'archiviazione principale, altrimenti saranno cifrati solo i file sull'archiviazione esterna.", diff --git a/apps/encryption/l10n/it.json b/apps/encryption/l10n/it.json index 5f48dce72bd..5a7539c9dc7 100644 --- a/apps/encryption/l10n/it.json +++ b/apps/encryption/l10n/it.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "password monouso per la cifratura lato server", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossibile decifrare questo file, probabilmente è un file condiviso. Chiedi al proprietario del file di condividere nuovamente il file con te.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossibile leggere questo file, probabilmente è un file condiviso. Chiedi al proprietario del file di condividere nuovamente il file con te.", + "Default encryption module" : "Modulo di cifratura predefinito", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Ciao,\n\nl'amministratore ha abilitato la cifratura lato server. I tuoi file sono stati\ncifrati utilizzando la password '%s'.\n\nAccedi all'interfaccia web, vai alla sezione 'modulo di cifratura base di' dalle nelle tue impostazioni personali e aggiorna la tua password di cifratura digitando la password nel campo 'vecchia password di accesso' e la tua nuova password.\n\n", "The share will expire on %s." : "La condivisione scadrà il %s.", "Cheers!" : "Saluti!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Ciao,<br><br>l'amministratore ha abilitato la cifratura lato server. I tuoi file sono stati cifrati utilizzando la password <strong>%s</strong>.<br><br>Accedi all'interfaccia web, vai alla sezione \"modulo di cifratura base di\" dalle nelle tue impostazioni personali e aggiorna la tua password di cifratura digitando la password nel campo \"vecchia password di accesso\" e la tua nuova password.", - "Default encryption module" : "Modulo di cifratura predefinito", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'applicazione di cifratura è abilitata, ma le chiavi non sono state inizializzate, disconnettiti ed effettua nuovamente l'accesso", "Encrypt the home storage" : "Cifra l'archiviazione principale", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'abilitazione di questa opzione cifra tutti i file memorizzati sull'archiviazione principale, altrimenti saranno cifrati solo i file sull'archiviazione esterna.", diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js index c013d1f9114..5ebe12d7365 100644 --- a/apps/encryption/l10n/ja.js +++ b/apps/encryption/l10n/ja.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "サーバーサイド暗号化のワンタイムパスワード", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを復号化できません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを読み取ることができません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", + "Default encryption module" : "デフォルトの暗号化モジュール", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは、\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n", "The share will expire on %s." : "共有は %s で有効期限が切れます。", "Cheers!" : "それでは!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "こんにちは、<br><br>管理者がサーバーサイド暗号化を有効にしました。<strong>%s</strong>というパスワードであなたのファイルが暗号化されました。<br><br>Web画面からログインして、個人設定画面の\"基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。<br><br>", - "Default encryption module" : "デフォルトの暗号化モジュール", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください", "Encrypt the home storage" : "メインストレージ暗号化", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "このオプションを有効にすると、外部ストレージ接続ストレージだけが暗号化されるのではなく、メインストレージのファイル全てが暗号化されます。", diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json index 1ca8c504433..4408f7882d6 100644 --- a/apps/encryption/l10n/ja.json +++ b/apps/encryption/l10n/ja.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "サーバーサイド暗号化のワンタイムパスワード", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを復号化できません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを読み取ることができません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", + "Default encryption module" : "デフォルトの暗号化モジュール", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは、\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n", "The share will expire on %s." : "共有は %s で有効期限が切れます。", "Cheers!" : "それでは!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "こんにちは、<br><br>管理者がサーバーサイド暗号化を有効にしました。<strong>%s</strong>というパスワードであなたのファイルが暗号化されました。<br><br>Web画面からログインして、個人設定画面の\"基本暗号化モジュール\"のセクションにいき、暗号化パスワードの更新をお願いします。 \"旧ログインパスワード”部分に上記パスワードを入力し、現在のログインパスワードで更新します。<br><br>", - "Default encryption module" : "デフォルトの暗号化モジュール", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "暗号化アプリは有効ですが、あなたの暗号化キーは初期化されていません。ログアウトした後に、再度ログインしてください", "Encrypt the home storage" : "メインストレージ暗号化", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "このオプションを有効にすると、外部ストレージ接続ストレージだけが暗号化されるのではなく、メインストレージのファイル全てが暗号化されます。", diff --git a/apps/encryption/l10n/ko.js b/apps/encryption/l10n/ko.js index 8d45f8ef227..f5817c10af1 100644 --- a/apps/encryption/l10n/ko.js +++ b/apps/encryption/l10n/ko.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Missing recovery key password" : "잊어버린 복구 키 암호 복구", "Please repeat the recovery key password" : "복구 키 암호를 다시 입력하십시오", - "Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 일치하지 않습니다", + "Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 서로 다릅니다", "Recovery key successfully enabled" : "복구 키가 성공적으로 활성화되었습니다", "Could not enable recovery key. Please check your recovery key password!" : "복구 키를 활성화 할 수 없습니다. 복구 키의 암호를 확인해 주십시오!", "Recovery key successfully disabled" : "복구 키가 성공적으로 비활성화 되었습니다", @@ -21,19 +21,20 @@ OC.L10N.register( "The old password was not correct, please try again." : "이전 암호가 잘못되었습니다. 다시 시도하십시오.", "The current log-in password was not correct, please try again." : "현재 로그인 암호가 잘못되었습니다. 다시 시도하십시오.", "Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 되었습니다.", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. 'occ encryption:migrate'를 실행하거나 시스템 관리자에게 연락하십시오", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. 'occ encryption:migrate'를 실행하거나 시스템 관리자에게 연락하십시오 ", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "암호화 앱이 활성화되었으나 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오.", "Encryption app is enabled and ready" : "암호화 앱이 활성화되었고 준비됨", "Bad Signature" : "잘못된 서명", "Missing Signature" : "서명 없음", "one-time password for server-side-encryption" : "서버 측 암호화용 일회용 암호", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "이 파일을 복호화할 수 없습니다. 공유된 파일일 수도 있습니다. 파일 소유자에게 공유를 다시 요청하십시오.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "이 파일을 읽을 수 없습니다. 공유된 파일이라면 파일 소유자에게 연락하여 다시 공유해 달라고 요청하십시오.", + "Default encryption module" : "기본 암호화 모듈", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "안녕하세요,\n\n시스템 관리자가 서버 측 암호화를 활성화했습니다. 저장된 파일이 암호 '%s'으(로) 암호화되었습니다.\n\n웹 인터페이스에 로그인하여 개인 설정의 '기본 암호화 모듈'로 이동한 다음, '이전 로그인 암호' 필드에 위 암호를 입력하고 현재 로그인 암호로 변경하여 암호화 암호를 업데이트하십시오.\n\n", - "The share will expire on %s." : "이 공유는 %s 까지 유지됩니다.", + "The share will expire on %s." : "이 공유는 %s에 만료됩니다.", "Cheers!" : "감사합니다!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "안녕하세요,<br><br>시스템 관리자가 서버 측 암호화를 활성화했습니다. 저장된 파일이 암호 <strong>%s</strong>으(로) 암호화되었습니다.<br><br>웹 인터페이스에 로그인하여 개인 설정의 '기본 암호화 모듈'로 이동한 다음, '이전 로그인 암호' 필드에 위 암호를 입력하고 현재 로그인 암호로 변경하여 암호화 암호를 업데이트하십시오.<br><br>", - "Default encryption module" : "기본 암호화 모듈", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오", "Encrypt the home storage" : "홈 저장소 암호화", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "이 옵션을 사용하면 주 저장소에 있는 모드 파일을 암호화하며, 사용하지 않으면 외부 저장소의 파일만 암호화합니다", diff --git a/apps/encryption/l10n/ko.json b/apps/encryption/l10n/ko.json index ea8f5027c62..477ea4eec05 100644 --- a/apps/encryption/l10n/ko.json +++ b/apps/encryption/l10n/ko.json @@ -1,7 +1,7 @@ { "translations": { "Missing recovery key password" : "잊어버린 복구 키 암호 복구", "Please repeat the recovery key password" : "복구 키 암호를 다시 입력하십시오", - "Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 일치하지 않습니다", + "Repeated recovery key password does not match the provided recovery key password" : "입력한 복구 키 암호가 서로 다릅니다", "Recovery key successfully enabled" : "복구 키가 성공적으로 활성화되었습니다", "Could not enable recovery key. Please check your recovery key password!" : "복구 키를 활성화 할 수 없습니다. 복구 키의 암호를 확인해 주십시오!", "Recovery key successfully disabled" : "복구 키가 성공적으로 비활성화 되었습니다", @@ -19,19 +19,20 @@ "The old password was not correct, please try again." : "이전 암호가 잘못되었습니다. 다시 시도하십시오.", "The current log-in password was not correct, please try again." : "현재 로그인 암호가 잘못되었습니다. 다시 시도하십시오.", "Private key password successfully updated." : "개인 키 암호가 성공적으로 업데이트 되었습니다.", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. 'occ encryption:migrate'를 실행하거나 시스템 관리자에게 연락하십시오", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please run 'occ encryption:migrate' or contact your administrator" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. 'occ encryption:migrate'를 실행하거나 시스템 관리자에게 연락하십시오 ", "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "암호화 앱이 활성화되었으나 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오.", "Encryption app is enabled and ready" : "암호화 앱이 활성화되었고 준비됨", "Bad Signature" : "잘못된 서명", "Missing Signature" : "서명 없음", "one-time password for server-side-encryption" : "서버 측 암호화용 일회용 암호", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "이 파일을 복호화할 수 없습니다. 공유된 파일일 수도 있습니다. 파일 소유자에게 공유를 다시 요청하십시오.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "이 파일을 읽을 수 없습니다. 공유된 파일이라면 파일 소유자에게 연락하여 다시 공유해 달라고 요청하십시오.", + "Default encryption module" : "기본 암호화 모듈", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "안녕하세요,\n\n시스템 관리자가 서버 측 암호화를 활성화했습니다. 저장된 파일이 암호 '%s'으(로) 암호화되었습니다.\n\n웹 인터페이스에 로그인하여 개인 설정의 '기본 암호화 모듈'로 이동한 다음, '이전 로그인 암호' 필드에 위 암호를 입력하고 현재 로그인 암호로 변경하여 암호화 암호를 업데이트하십시오.\n\n", - "The share will expire on %s." : "이 공유는 %s 까지 유지됩니다.", + "The share will expire on %s." : "이 공유는 %s에 만료됩니다.", "Cheers!" : "감사합니다!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "안녕하세요,<br><br>시스템 관리자가 서버 측 암호화를 활성화했습니다. 저장된 파일이 암호 <strong>%s</strong>으(로) 암호화되었습니다.<br><br>웹 인터페이스에 로그인하여 개인 설정의 '기본 암호화 모듈'로 이동한 다음, '이전 로그인 암호' 필드에 위 암호를 입력하고 현재 로그인 암호로 변경하여 암호화 암호를 업데이트하십시오.<br><br>", - "Default encryption module" : "기본 암호화 모듈", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "암호화 앱이 활성화되어 있지만 키가 초기화되지 않았습니다. 로그아웃한 후 다시 로그인하십시오", "Encrypt the home storage" : "홈 저장소 암호화", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "이 옵션을 사용하면 주 저장소에 있는 모드 파일을 암호화하며, 사용하지 않으면 외부 저장소의 파일만 암호화합니다", diff --git a/apps/encryption/l10n/lt_LT.js b/apps/encryption/l10n/lt_LT.js index b40b285458b..68d716eb2e9 100644 --- a/apps/encryption/l10n/lt_LT.js +++ b/apps/encryption/l10n/lt_LT.js @@ -27,9 +27,9 @@ OC.L10N.register( "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta iššifruoti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta perskaityti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", + "Default encryption module" : "Numatytasis šifravimo modulis", "The share will expire on %s." : "Bendrinimo laikas pasibaigs %s.", "Cheers!" : "Sveikinimai!", - "Default encryption module" : "Numatytasis šifravimo modulis", "Encrypt the home storage" : "Šifruoti namų saugyklą", "Enable recovery key" : "Įjungti atstatymo raktą", "Disable recovery key" : "Išjungti atstatymo raktą", diff --git a/apps/encryption/l10n/lt_LT.json b/apps/encryption/l10n/lt_LT.json index 7f40f03978a..85cc95c9302 100644 --- a/apps/encryption/l10n/lt_LT.json +++ b/apps/encryption/l10n/lt_LT.json @@ -25,9 +25,9 @@ "one-time password for server-side-encryption" : "Vienkartinis slaptažodis šifravimui serverio pusėje", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta iššifruoti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nepavyksta perskaityti šio failo, tikriausiai, tai yra bendrinamas failas. Paprašykite failo savininko iš naujo pradėti bendrinti su jumis šį failą.", + "Default encryption module" : "Numatytasis šifravimo modulis", "The share will expire on %s." : "Bendrinimo laikas pasibaigs %s.", "Cheers!" : "Sveikinimai!", - "Default encryption module" : "Numatytasis šifravimo modulis", "Encrypt the home storage" : "Šifruoti namų saugyklą", "Enable recovery key" : "Įjungti atstatymo raktą", "Disable recovery key" : "Išjungti atstatymo raktą", diff --git a/apps/encryption/l10n/nb.js b/apps/encryption/l10n/nb.js index d78770c9828..8c1ae4e59aa 100644 --- a/apps/encryption/l10n/nb.js +++ b/apps/encryption/l10n/nb.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "engangspassord for tjenerkryptering", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke dekryptere denne filen. Dette er sannsynligvis en delt fil. Spør eieren av filen om å dele den med deg på nytt.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke lese denne filen, som sannsynligvis er en delt fil. Be eieren av filen om å dele den med deg på nytt.", + "Default encryption module" : "Standard krypteringsmodul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hei,\n\nAdministratoren har aktivert tjenerkryptering. Filene dine er blitt kryptert med passordet '%s'.\n\nlogg inn på vev-grensesnittet, gå til seksjonen 'grunnleggende krypteringsmodul' i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet 'gammelt påloggingspassord' sammen med ditt nåværende påloggingspassord.\n", "The share will expire on %s." : "Delingen vil opphøre %s.", "Cheers!" : "Ha det!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hei,<br><br>Administratoren har skrudd på tjenerkryptering. Filene dine er blitt kryptert med passordet <strong>%s</strong>.<br><br>Logg inn på vev-grensesnittet, gå til seksjonen \"grunnleggende krypteringsmodul\" i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet \"gammelt påloggingspassord\" sammen med ditt nåværende påloggingspassord.<br><br>", - "Default encryption module" : "Standard krypteringsmodul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.", "Encrypt the home storage" : "Krypter hjemmelageret", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av dette valget krypterer alle filer som er lagret på hovedlageret. Ellers vil kun filer på eksterne lagre bli kryptert.", diff --git a/apps/encryption/l10n/nb.json b/apps/encryption/l10n/nb.json index 27bc9150b70..6bd09db1dc3 100644 --- a/apps/encryption/l10n/nb.json +++ b/apps/encryption/l10n/nb.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "engangspassord for tjenerkryptering", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke dekryptere denne filen. Dette er sannsynligvis en delt fil. Spør eieren av filen om å dele den med deg på nytt.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ikke lese denne filen, som sannsynligvis er en delt fil. Be eieren av filen om å dele den med deg på nytt.", + "Default encryption module" : "Standard krypteringsmodul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hei,\n\nAdministratoren har aktivert tjenerkryptering. Filene dine er blitt kryptert med passordet '%s'.\n\nlogg inn på vev-grensesnittet, gå til seksjonen 'grunnleggende krypteringsmodul' i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet 'gammelt påloggingspassord' sammen med ditt nåværende påloggingspassord.\n", "The share will expire on %s." : "Delingen vil opphøre %s.", "Cheers!" : "Ha det!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hei,<br><br>Administratoren har skrudd på tjenerkryptering. Filene dine er blitt kryptert med passordet <strong>%s</strong>.<br><br>Logg inn på vev-grensesnittet, gå til seksjonen \"grunnleggende krypteringsmodul\" i dine personlige innstillinger og oppdater krypteringspassordet ditt ved å legge inn dette passordet i feltet \"gammelt påloggingspassord\" sammen med ditt nåværende påloggingspassord.<br><br>", - "Default encryption module" : "Standard krypteringsmodul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "App for kryptering er aktivert men nøklene dine er ikke satt opp. Logg ut og logg inn igjen.", "Encrypt the home storage" : "Krypter hjemmelageret", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av dette valget krypterer alle filer som er lagret på hovedlageret. Ellers vil kun filer på eksterne lagre bli kryptert.", diff --git a/apps/encryption/l10n/nl.js b/apps/encryption/l10n/nl.js index 441326493e4..edf8be08e4f 100644 --- a/apps/encryption/l10n/nl.js +++ b/apps/encryption/l10n/nl.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "eenmalig wachtwoord voor server-side versleuteling", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan dit bestand niet ontcijferen, waarschijnlijk is het een gedeeld bestand, Vraag de eigenaar om het bestand opnieuw met je te delen.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan dit bestand niet lezen, waarschijnlijk is het een gedeeld bestand. Vraag de eigenaar om het bestand opnieuw met je te delen.", + "Default encryption module" : "Standaard cryptomodule", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hallo daar,\n\nde beheerder heeft server-side versleuteling ingeschakeld. Je bestanden werden versleuteld met het wachtwoord '%s'.\n\nLogin op de webinterface, ga naar 'basis cryptomodule' in je persoonlijke instellingen en pas je cryptowachtwoord aan door dit wachtwoord in het 'oude inlog wachtwoord' veld in te vullen alsmede in je huidige inlogwachtwoord.\n", "The share will expire on %s." : "De share vervalt op %s.", "Cheers!" : "Proficiat!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallo daar,<br><br>de beheerder heeft server-side versleuteling ingeschakeld. Je bestanden werden versleuteld met het wachtwoord <strong>%s</strong>.<br><br>Login op de webinterface, ga naar 'basis cryptomodule' in je persoonlijke instellingen en pas je cryptowachtwoord aan door dit wachtwoord in het \"oude inlog wachtwoord\" veld in te vullen alsmede in je huidige inlogwachtwoord.<br><br>", - "Default encryption module" : "Standaard cryptomodule", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Crypto app is ingeschakeld, maar je sleutels werden niet geïnitialiseerd. Log uit en log daarna opnieuw in.", "Encrypt the home storage" : "Versleutel de eigen serveropslag", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Het inschakelen van deze optie zorgt voor versleutelen van alle bestanden op do hoofdopslag, anders worden alleen bestanden op externe opslag versleuteld", diff --git a/apps/encryption/l10n/nl.json b/apps/encryption/l10n/nl.json index a8c477566f8..8194099ad82 100644 --- a/apps/encryption/l10n/nl.json +++ b/apps/encryption/l10n/nl.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "eenmalig wachtwoord voor server-side versleuteling", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan dit bestand niet ontcijferen, waarschijnlijk is het een gedeeld bestand, Vraag de eigenaar om het bestand opnieuw met je te delen.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan dit bestand niet lezen, waarschijnlijk is het een gedeeld bestand. Vraag de eigenaar om het bestand opnieuw met je te delen.", + "Default encryption module" : "Standaard cryptomodule", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hallo daar,\n\nde beheerder heeft server-side versleuteling ingeschakeld. Je bestanden werden versleuteld met het wachtwoord '%s'.\n\nLogin op de webinterface, ga naar 'basis cryptomodule' in je persoonlijke instellingen en pas je cryptowachtwoord aan door dit wachtwoord in het 'oude inlog wachtwoord' veld in te vullen alsmede in je huidige inlogwachtwoord.\n", "The share will expire on %s." : "De share vervalt op %s.", "Cheers!" : "Proficiat!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallo daar,<br><br>de beheerder heeft server-side versleuteling ingeschakeld. Je bestanden werden versleuteld met het wachtwoord <strong>%s</strong>.<br><br>Login op de webinterface, ga naar 'basis cryptomodule' in je persoonlijke instellingen en pas je cryptowachtwoord aan door dit wachtwoord in het \"oude inlog wachtwoord\" veld in te vullen alsmede in je huidige inlogwachtwoord.<br><br>", - "Default encryption module" : "Standaard cryptomodule", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Crypto app is ingeschakeld, maar je sleutels werden niet geïnitialiseerd. Log uit en log daarna opnieuw in.", "Encrypt the home storage" : "Versleutel de eigen serveropslag", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Het inschakelen van deze optie zorgt voor versleutelen van alle bestanden op do hoofdopslag, anders worden alleen bestanden op externe opslag versleuteld", diff --git a/apps/encryption/l10n/pl.js b/apps/encryption/l10n/pl.js index c3d937559d8..38b7327c45e 100644 --- a/apps/encryption/l10n/pl.js +++ b/apps/encryption/l10n/pl.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "jednorazowe hasło do serwera szyfrowania strony", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nie można odszyfrować tego pliku, prawdopodobnie jest to plik udostępniony. Poproś właściciela pliku o ponowne udostępnianie pliku Tobie.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nie można odczytać tego pliku, prawdopodobnie plik nie jest współdzielony. Proszę zwrócić się do właściciela pliku, aby udostępnił go dla Ciebie.", + "Default encryption module" : "Domyślny moduł szyfrujący", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hej tam,\n\nadmin włączył szyfrowanie po stronie serwera. Twoje pliki zostały zaszyfrowane przy użyciu hasła '%s'.\n\nProszę zalogować się do interfejsu internetowego, przejdź do sekcji Nextcloud podstawowy moduł szyfrowania, następnie osobiste ustawienia i zaktualizuj hasło szyfrowania wpisując aktualny login, w polu stare hasło logowania wpisz stare hasło, a następnie aktualne hasło.\n\n", "The share will expire on %s." : "Ten zasób wygaśnie %s", "Cheers!" : "Dzięki!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hej tam,<br><br>admin włączył szyfrowanie po stronie serwera. Twoje pliki zostały zaszyfrowane przy użyciu hasła <strong>%s</strong>.<br><br>Proszę zalogować się do interfejsu internetowego, przejdź do sekcji Nextcloud podstawowy moduł szyfrowania, następnie osobiste ustawienia i zaktualizuj hasło szyfrowania wpisując aktualny login, w polu stare hasło logowania wpisz stare hasło, a następnie aktualne hasło.<br><br>", - "Default encryption module" : "Domyślny moduł szyfrujący", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Szyfrowanie w aplikacji jest włączone, ale klucze nie są zainicjowane. Prosimy wylogować się i ponownie zalogować się.", "Encrypt the home storage" : "Szyfrowanie przechowywanie w domu", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Włączenie tej opcji spowoduje szyfrowanie wszystkich plików zapisanych na pamięci wewnętrznej. W innym wypadku szyfrowane będą tylko pliki na pamięci zewnętrznej.", diff --git a/apps/encryption/l10n/pl.json b/apps/encryption/l10n/pl.json index 62e1668ce6d..5b63fcba4dc 100644 --- a/apps/encryption/l10n/pl.json +++ b/apps/encryption/l10n/pl.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "jednorazowe hasło do serwera szyfrowania strony", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nie można odszyfrować tego pliku, prawdopodobnie jest to plik udostępniony. Poproś właściciela pliku o ponowne udostępnianie pliku Tobie.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nie można odczytać tego pliku, prawdopodobnie plik nie jest współdzielony. Proszę zwrócić się do właściciela pliku, aby udostępnił go dla Ciebie.", + "Default encryption module" : "Domyślny moduł szyfrujący", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hej tam,\n\nadmin włączył szyfrowanie po stronie serwera. Twoje pliki zostały zaszyfrowane przy użyciu hasła '%s'.\n\nProszę zalogować się do interfejsu internetowego, przejdź do sekcji Nextcloud podstawowy moduł szyfrowania, następnie osobiste ustawienia i zaktualizuj hasło szyfrowania wpisując aktualny login, w polu stare hasło logowania wpisz stare hasło, a następnie aktualne hasło.\n\n", "The share will expire on %s." : "Ten zasób wygaśnie %s", "Cheers!" : "Dzięki!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hej tam,<br><br>admin włączył szyfrowanie po stronie serwera. Twoje pliki zostały zaszyfrowane przy użyciu hasła <strong>%s</strong>.<br><br>Proszę zalogować się do interfejsu internetowego, przejdź do sekcji Nextcloud podstawowy moduł szyfrowania, następnie osobiste ustawienia i zaktualizuj hasło szyfrowania wpisując aktualny login, w polu stare hasło logowania wpisz stare hasło, a następnie aktualne hasło.<br><br>", - "Default encryption module" : "Domyślny moduł szyfrujący", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Szyfrowanie w aplikacji jest włączone, ale klucze nie są zainicjowane. Prosimy wylogować się i ponownie zalogować się.", "Encrypt the home storage" : "Szyfrowanie przechowywanie w domu", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Włączenie tej opcji spowoduje szyfrowanie wszystkich plików zapisanych na pamięci wewnętrznej. W innym wypadku szyfrowane będą tylko pliki na pamięci zewnętrznej.", diff --git a/apps/encryption/l10n/pt_BR.js b/apps/encryption/l10n/pt_BR.js index eccc6a2ada3..b21e483c86d 100644 --- a/apps/encryption/l10n/pt_BR.js +++ b/apps/encryption/l10n/pt_BR.js @@ -29,12 +29,12 @@ OC.L10N.register( "Missing Signature" : "Assinatura faltante", "one-time password for server-side-encryption" : "senha de uso único para criptografia do lado do servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Este arquivo não pode ser descriptografado pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para recompartilhá-lo com você.", - "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possível ler este arquivo pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para recompartilhá-lo com você.", - "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Olá,\n\nO administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login na interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.\n\n", - "The share will expire on %s." : "O compartilhamento irá expirar em %s.", - "Cheers!" : "Saúde!", - "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Olá,<br><br>o administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha <strong>%s</strong>.<br><br>Por favor, faça o login na interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.<br><br>", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não foi possível ler este arquivo pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para recompartilhá-lo com você.", "Default encryption module" : "Módulo de criptografia padrão", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Olá,\n\nO administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login na interface web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.\n\n", + "The share will expire on %s." : "O compartilhamento irá expirar em %s.", + "Cheers!" : "Saudações!", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Olá,<br><br>o administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha <strong>%s</strong>.<br><br>Por favor, faça o login na interface web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.<br><br>", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "O aplicativo de criptografia está habilitado, mas suas chaves não foram inicializadas. Por favor, saia e entre novamente.", "Encrypt the home storage" : "Criptografar a pasta de armazenamento home", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ativar essa opção irá criptografar todos os arquivos do armazenamento principal, caso contrário, apenas arquivos no armazenamento externo serão criptografados", diff --git a/apps/encryption/l10n/pt_BR.json b/apps/encryption/l10n/pt_BR.json index 5e697001fc2..2d97b1c5e57 100644 --- a/apps/encryption/l10n/pt_BR.json +++ b/apps/encryption/l10n/pt_BR.json @@ -27,12 +27,12 @@ "Missing Signature" : "Assinatura faltante", "one-time password for server-side-encryption" : "senha de uso único para criptografia do lado do servidor", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Este arquivo não pode ser descriptografado pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para recompartilhá-lo com você.", - "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não é possível ler este arquivo pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para recompartilhá-lo com você.", - "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Olá,\n\nO administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login na interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.\n\n", - "The share will expire on %s." : "O compartilhamento irá expirar em %s.", - "Cheers!" : "Saúde!", - "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Olá,<br><br>o administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha <strong>%s</strong>.<br><br>Por favor, faça o login na interface da Web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.<br><br>", + "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Não foi possível ler este arquivo pois provavelmente é um arquivo compartilhado. Por favor, peça ao dono do arquivo para recompartilhá-lo com você.", "Default encryption module" : "Módulo de criptografia padrão", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Olá,\n\nO administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha '%s'.\n\nPor favor faça o login na interface web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.\n\n", + "The share will expire on %s." : "O compartilhamento irá expirar em %s.", + "Cheers!" : "Saudações!", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Olá,<br><br>o administrador habilitou a criptografia do lado do servidor. Os seus arquivos foram criptografados usando a senha <strong>%s</strong>.<br><br>Por favor, faça o login na interface web, vá para a seção 'módulo de criptografia básico' das suas definições pessoais e atualize sua senha de criptografia, inserindo esta senha no campo 'senha antiga de log-in' e sua senha de login atual.<br><br>", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "O aplicativo de criptografia está habilitado, mas suas chaves não foram inicializadas. Por favor, saia e entre novamente.", "Encrypt the home storage" : "Criptografar a pasta de armazenamento home", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ativar essa opção irá criptografar todos os arquivos do armazenamento principal, caso contrário, apenas arquivos no armazenamento externo serão criptografados", diff --git a/apps/encryption/l10n/ru.js b/apps/encryption/l10n/ru.js index 772cb8e172b..e75543b8a96 100644 --- a/apps/encryption/l10n/ru.js +++ b/apps/encryption/l10n/ru.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "одноразовый пароль для шифрования на стороне сервера", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удалось расшифровать файл, возможно это опубликованный файл. Попросите владельца файла повторно открыть к нему доступ.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удается прочитать файл, возможно это публичный файл. Пожалуйста попросите владельца открыть доступ снова.", + "Default encryption module" : "Модуль шифрования по-умолчанию", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Привет,\n\nадминистратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с использованием пароля «%s».\n\nПожалуйста войдите в веб-приложение, в разделе «простой модуль шифрования» в личных настройках вам нужно обновить пароль шифрования, указав этот пароль в поле \"старый пароль\".\n", "The share will expire on %s." : "Доступ будет закрыт %s", "Cheers!" : "Всего наилучшего!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Привет,<br><br>администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля <strong>%s</strong>.<br><br>Пожалуйста войдите в веб-приложение, в разделе «простой модуль шифрования» в личных настройках вам нужно обновить пароль шифрования, указав этот пароль в поле \"старый пароль\".<br><br>", - "Default encryption module" : "Модуль шифрования по-умолчанию", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново", "Encrypt the home storage" : "Шифровать домашнюю директорию", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "При включении данного параметра будут зашифрованы все файлы, хранящиеся в основном хранилище. В противном случае шифруются только файлы на внешних хранилищах.", diff --git a/apps/encryption/l10n/ru.json b/apps/encryption/l10n/ru.json index 1fd205fa063..1ed8a5f3471 100644 --- a/apps/encryption/l10n/ru.json +++ b/apps/encryption/l10n/ru.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "одноразовый пароль для шифрования на стороне сервера", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удалось расшифровать файл, возможно это опубликованный файл. Попросите владельца файла повторно открыть к нему доступ.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Не удается прочитать файл, возможно это публичный файл. Пожалуйста попросите владельца открыть доступ снова.", + "Default encryption module" : "Модуль шифрования по-умолчанию", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Привет,\n\nадминистратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с использованием пароля «%s».\n\nПожалуйста войдите в веб-приложение, в разделе «простой модуль шифрования» в личных настройках вам нужно обновить пароль шифрования, указав этот пароль в поле \"старый пароль\".\n", "The share will expire on %s." : "Доступ будет закрыт %s", "Cheers!" : "Всего наилучшего!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Привет,<br><br>администратор включил шифрование на стороне сервера. Ваши файлы были зашифрованы с помощью пароля <strong>%s</strong>.<br><br>Пожалуйста войдите в веб-приложение, в разделе «простой модуль шифрования» в личных настройках вам нужно обновить пароль шифрования, указав этот пароль в поле \"старый пароль\".<br><br>", - "Default encryption module" : "Модуль шифрования по-умолчанию", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Приложение шифрования активно, но ваши ключи не инициализированы, выйдите из системы и войдите заново", "Encrypt the home storage" : "Шифровать домашнюю директорию", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "При включении данного параметра будут зашифрованы все файлы, хранящиеся в основном хранилище. В противном случае шифруются только файлы на внешних хранилищах.", diff --git a/apps/encryption/l10n/sk.js b/apps/encryption/l10n/sk.js index 91b90843699..a64516950cb 100644 --- a/apps/encryption/l10n/sk.js +++ b/apps/encryption/l10n/sk.js @@ -29,11 +29,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "jednorazové heslo na šifrovanie na strane servera", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor nie je možné rozšifrovať, môže ísť o súbor sprístupnený iným používateľom. Požiadajte majiteľa súboru, aby vám ho sprístupnil ešte raz.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor nie je možné prečítať, môže ísť o súbor sprístupnený iným používateľom. Požiadajte majiteľa súboru, aby vám ho sprístupnil ešte raz.", + "Default encryption module" : "Predvolený šifrovací modul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Dobrý deň,\n\nAdministrátor povolil šifrovanie na strane servera. Vaše súbory boli zašifrované pomocou hesla '%s'.\n\nPrihláste sa prosím cez webový prehliadač, choďte do sekcie základného šifrovacieho modulu v osobných nastaveniach a zadajte horeuvedené heslo do políčka 'staré prihlasovacie heslo' a vaše súčasné prihlasovacie heslo.\n\n", "The share will expire on %s." : "Sprístupnenie vyprší %s.", "Cheers!" : "Pekný deň!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Dobrý deň,<br><br>Administrátor povolil šifrovanie na strane servera. Vaše súbory boli zašifrované pomocou hesla <strong>%s</strong>.<br><br>Prihláste sa prosím cez webový prehliadač, choďte do sekcie základného šifrovacieho modulu v osobných nastaveniach a zadajte horeuvedené heslo do políčka 'staré prihlasovacie heslo' a vaše súčasné prihlasovacie heslo.<br><br>", - "Default encryption module" : "Predvolený šifrovací modul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia pre šifrovanie je povolená, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.", "Encrypt the home storage" : "Šifrovať domáce úložisko", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Zapnutím tejto voľby zašifrujete všetky súbory v hlavnom úložisku, v opačnom prípade zašifrujete iba súbory na externom úložisku.", diff --git a/apps/encryption/l10n/sk.json b/apps/encryption/l10n/sk.json index aa753b04d90..0aeda976681 100644 --- a/apps/encryption/l10n/sk.json +++ b/apps/encryption/l10n/sk.json @@ -27,11 +27,11 @@ "one-time password for server-side-encryption" : "jednorazové heslo na šifrovanie na strane servera", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor nie je možné rozšifrovať, môže ísť o súbor sprístupnený iným používateľom. Požiadajte majiteľa súboru, aby vám ho sprístupnil ešte raz.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Tento súbor nie je možné prečítať, môže ísť o súbor sprístupnený iným používateľom. Požiadajte majiteľa súboru, aby vám ho sprístupnil ešte raz.", + "Default encryption module" : "Predvolený šifrovací modul", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Dobrý deň,\n\nAdministrátor povolil šifrovanie na strane servera. Vaše súbory boli zašifrované pomocou hesla '%s'.\n\nPrihláste sa prosím cez webový prehliadač, choďte do sekcie základného šifrovacieho modulu v osobných nastaveniach a zadajte horeuvedené heslo do políčka 'staré prihlasovacie heslo' a vaše súčasné prihlasovacie heslo.\n\n", "The share will expire on %s." : "Sprístupnenie vyprší %s.", "Cheers!" : "Pekný deň!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Dobrý deň,<br><br>Administrátor povolil šifrovanie na strane servera. Vaše súbory boli zašifrované pomocou hesla <strong>%s</strong>.<br><br>Prihláste sa prosím cez webový prehliadač, choďte do sekcie základného šifrovacieho modulu v osobných nastaveniach a zadajte horeuvedené heslo do políčka 'staré prihlasovacie heslo' a vaše súčasné prihlasovacie heslo.<br><br>", - "Default encryption module" : "Predvolený šifrovací modul", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikácia pre šifrovanie je povolená, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.", "Encrypt the home storage" : "Šifrovať domáce úložisko", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Zapnutím tejto voľby zašifrujete všetky súbory v hlavnom úložisku, v opačnom prípade zašifrujete iba súbory na externom úložisku.", diff --git a/apps/encryption/l10n/sq.js b/apps/encryption/l10n/sq.js index 9eb88f10c4e..df44d8b4154 100644 --- a/apps/encryption/l10n/sq.js +++ b/apps/encryption/l10n/sq.js @@ -29,11 +29,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "fjalëkalim vetëm për një herë, për fshehtëzim-më-anë-shërbyesi", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nuk shfshehtëzohet dot kjo kartelë, ndoshta është kartelë e ndarë me të tjerët. Ju lutemi, kërkojini të zotit të kartelës ta rindajë kartelën me ju.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "S’lexohet dot kjo kartelë, ndoshta është kartelë e ndarë me të tjerët. Ju lutemi, kërkojini të zotit të kartelës ta rindajë kartelën me ju.", + "Default encryption module" : "Modul i parazgjedhur fshehtëzimi", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Njatjeta,\n\npërgjegjësi aktivizoi fshehtëzim më anë shërbyesi. Kartelat tuaja qenë fshehtëzuar duke përdorur fjalëkalimin '%s'.\n\nJu lutemi, bëni hyrjen te ndërfaqja web, kaloni te ndarja 'modul i thjeshtëpër fshehtëzime' e rregullimeve tuaja personale dhe përditësoni fjalëkalimin tuaj për fshehtëzime duke dhënë këtë fjalëkalim te fusha 'old log-in password' dhe fjalëkalimin tuaj të tanishëm për hyrjet.\n\n", "The share will expire on %s." : "Ndarja do të skadojë më %s.", "Cheers!" : "Gëzuar!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Njatjeta,<br><br>përgjegjësi aktivizoi fshehtëzim më anë shërbyesi. Kartelat tuaja qenë fshehtëzuar duke përdorur fjalëkalimin <strong>%s</strong>.<br><br>Ju lutemi, bëni hyrjen te ndërfaqja web, kaloni te ndarja \"modul i thjeshtëpër fshehtëzime\" e rregullimeve tuaja personale dhe përditësoni fjalëkalimin tuaj për fshehtëzime duke dhënë këtë fjalëkalim te fusha \"old log-in password\" dhe fjalëkalimin tuaj të tanishëm për hyrjet.<br><br>", - "Default encryption module" : "Modul i parazgjedhur fshehtëzimi", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen", "Encrypt the home storage" : "Fshehtëzo depozitën bazë", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivizimi i kësaj mundësie fshehtëzon krejt kartelat e depozituara në depon bazë, përndryshe do të fshehtëzohen vetëm kartelat në depozitën e jashtme", diff --git a/apps/encryption/l10n/sq.json b/apps/encryption/l10n/sq.json index 5af3a598eaf..9805faaf3dd 100644 --- a/apps/encryption/l10n/sq.json +++ b/apps/encryption/l10n/sq.json @@ -27,11 +27,11 @@ "one-time password for server-side-encryption" : "fjalëkalim vetëm për një herë, për fshehtëzim-më-anë-shërbyesi", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Nuk shfshehtëzohet dot kjo kartelë, ndoshta është kartelë e ndarë me të tjerët. Ju lutemi, kërkojini të zotit të kartelës ta rindajë kartelën me ju.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "S’lexohet dot kjo kartelë, ndoshta është kartelë e ndarë me të tjerët. Ju lutemi, kërkojini të zotit të kartelës ta rindajë kartelën me ju.", + "Default encryption module" : "Modul i parazgjedhur fshehtëzimi", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Njatjeta,\n\npërgjegjësi aktivizoi fshehtëzim më anë shërbyesi. Kartelat tuaja qenë fshehtëzuar duke përdorur fjalëkalimin '%s'.\n\nJu lutemi, bëni hyrjen te ndërfaqja web, kaloni te ndarja 'modul i thjeshtëpër fshehtëzime' e rregullimeve tuaja personale dhe përditësoni fjalëkalimin tuaj për fshehtëzime duke dhënë këtë fjalëkalim te fusha 'old log-in password' dhe fjalëkalimin tuaj të tanishëm për hyrjet.\n\n", "The share will expire on %s." : "Ndarja do të skadojë më %s.", "Cheers!" : "Gëzuar!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Njatjeta,<br><br>përgjegjësi aktivizoi fshehtëzim më anë shërbyesi. Kartelat tuaja qenë fshehtëzuar duke përdorur fjalëkalimin <strong>%s</strong>.<br><br>Ju lutemi, bëni hyrjen te ndërfaqja web, kaloni te ndarja \"modul i thjeshtëpër fshehtëzime\" e rregullimeve tuaja personale dhe përditësoni fjalëkalimin tuaj për fshehtëzime duke dhënë këtë fjalëkalim te fusha \"old log-in password\" dhe fjalëkalimin tuaj të tanishëm për hyrjet.<br><br>", - "Default encryption module" : "Modul i parazgjedhur fshehtëzimi", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Aplikacioni i fshehtëzimeve është i aktivizuar, por kyçet tuaj s’janë vënë në punë, ju lutemi, dilni dhe ribëni hyrjen", "Encrypt the home storage" : "Fshehtëzo depozitën bazë", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivizimi i kësaj mundësie fshehtëzon krejt kartelat e depozituara në depon bazë, përndryshe do të fshehtëzohen vetëm kartelat në depozitën e jashtme", diff --git a/apps/encryption/l10n/sv.js b/apps/encryption/l10n/sv.js index 4e0656dcc37..093363aa3fd 100644 --- a/apps/encryption/l10n/sv.js +++ b/apps/encryption/l10n/sv.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "engångslösenord för kryptering på serversidan", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ej dekryptera denna fil, förmodligen är det en delad fil. Be ägaren av filen att dela den med dig.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Filen kan inte läsas, troligtvis är det en delad fil. Be ägaren av filen att dela den med dig igen.", + "Default encryption module" : "Krypteringsfunktion", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hallå där, \n\nAdministratören aktiverade serverkryptering. Alla dina filer har blivit krypterade med lösenordet: %s\n\nGå till i din profil för att ändra krypteringslösenordet till ditt egna lösenord. Ange lösenordet ovan som \"Gammalt lösenord\" och ange sedan ditt egna lösenord.\n\n", "The share will expire on %s." : "Utdelningen kommer att upphöra %s.", "Cheers!" : "Ha de fint!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallå där, <br> Administratören aktiverade serverkryptering. Alla dina filer har blivit krypterade med lösenordet: <strong>%s</ strong>. <br> Gå till i din profil för att ändra krypteringslösenordet till ditt egna lösenord. Ange lösenordet ovan som \"Gammalt lösenord\" och ange sedan ditt egna lösenord.<br>", - "Default encryption module" : "Krypteringsfunktion", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsappen är aktiverad men dina krypteringsnycklar har inte aktiverats, logga ut och logga in igen.", "Encrypt the home storage" : "Kryptera alla filer i molnet", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av det här alternativet krypterar alla filer som är lagrade på huvudlagringsplatsen, annars kommer bara filer på extern lagringsplats att krypteras", diff --git a/apps/encryption/l10n/sv.json b/apps/encryption/l10n/sv.json index 1ed22831c32..4f4368b811a 100644 --- a/apps/encryption/l10n/sv.json +++ b/apps/encryption/l10n/sv.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "engångslösenord för kryptering på serversidan", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Kan ej dekryptera denna fil, förmodligen är det en delad fil. Be ägaren av filen att dela den med dig.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Filen kan inte läsas, troligtvis är det en delad fil. Be ägaren av filen att dela den med dig igen.", + "Default encryption module" : "Krypteringsfunktion", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Hallå där, \n\nAdministratören aktiverade serverkryptering. Alla dina filer har blivit krypterade med lösenordet: %s\n\nGå till i din profil för att ändra krypteringslösenordet till ditt egna lösenord. Ange lösenordet ovan som \"Gammalt lösenord\" och ange sedan ditt egna lösenord.\n\n", "The share will expire on %s." : "Utdelningen kommer att upphöra %s.", "Cheers!" : "Ha de fint!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hallå där, <br> Administratören aktiverade serverkryptering. Alla dina filer har blivit krypterade med lösenordet: <strong>%s</ strong>. <br> Gå till i din profil för att ändra krypteringslösenordet till ditt egna lösenord. Ange lösenordet ovan som \"Gammalt lösenord\" och ange sedan ditt egna lösenord.<br>", - "Default encryption module" : "Krypteringsfunktion", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Krypteringsappen är aktiverad men dina krypteringsnycklar har inte aktiverats, logga ut och logga in igen.", "Encrypt the home storage" : "Kryptera alla filer i molnet", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aktivering av det här alternativet krypterar alla filer som är lagrade på huvudlagringsplatsen, annars kommer bara filer på extern lagringsplats att krypteras", diff --git a/apps/encryption/l10n/tr.js b/apps/encryption/l10n/tr.js index ac1da486c1d..2956760ff29 100644 --- a/apps/encryption/l10n/tr.js +++ b/apps/encryption/l10n/tr.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "sunucu tarafında şifreleme için tek kullanımlık parola", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Bu dosya büyük olasılıkla paylaşılıyor olduğundan şifresi çözülemiyor. Lütfen dosya sahibi ile görüşerek sizinle yeniden paylaşmasını isteyin.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Bu dosya büyük olasılıkla paylaşılıyor olduğundan okunamıyor. Lütfen dosya sahibi ile görüşerek sizinle yeniden paylaşmasını isteyin.", + "Default encryption module" : "Varsayılan şifreleme modülü", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Selam,\n\nSistem yöneticisi sunucu tarafında şifrelemeyi etkinleştirdi. Dosyalarınız '%s' parolası kullanılarak şifrelendi.\n\nLütfen web arayüzünde oturum açın ve kişisel ayarlarınızdan 'temel şifreleme modülü'ne giderek 'eski oturum açma parolası' alanına bu parolayı ve geçerli oturum açma parolanızı yazarak şifreleme parolanızı güncelleyin.\n\n", "The share will expire on %s." : "Bu paylaşım %s tarihinde sona erecek.", "Cheers!" : "Hoşçakalın!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Selam,<br><br>Sistem yöneticisi sunucu tarafında şifrelemeyi etkinleştirdi. Dosyalarınız <strong>%s</strong> parolası kullanılarak şifrelendi.<br><br>Lütfen web arayüzünde oturum açın ve kişisel ayarlarınızdan 'temel şifreleme modülü'ne giderek 'eski oturum açma parolası' alanına bu parolayı ve geçerli oturum açma parolanızı yazarak şifreleme parolanızı güncelleyin.<br><br>", - "Default encryption module" : "Varsayılan şifreleme modülü", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme uygulaması etkin ancak anahtarlarınız hazırlanmamış. Lütfen oturumunuzu kapatıp yeniden açın.", "Encrypt the home storage" : "Ana depolama şifrelensin", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Bu seçenek etkinleştirildiğinde, ana depolama alanındaki tüm dosyalar şifrelenir. Devre dışı bırakıldığında yalnız dış depolama alanındaki dosyalar şifrelenir", diff --git a/apps/encryption/l10n/tr.json b/apps/encryption/l10n/tr.json index 51e9c6d7bda..d2a9803ee74 100644 --- a/apps/encryption/l10n/tr.json +++ b/apps/encryption/l10n/tr.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "sunucu tarafında şifreleme için tek kullanımlık parola", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Bu dosya büyük olasılıkla paylaşılıyor olduğundan şifresi çözülemiyor. Lütfen dosya sahibi ile görüşerek sizinle yeniden paylaşmasını isteyin.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Bu dosya büyük olasılıkla paylaşılıyor olduğundan okunamıyor. Lütfen dosya sahibi ile görüşerek sizinle yeniden paylaşmasını isteyin.", + "Default encryption module" : "Varsayılan şifreleme modülü", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Selam,\n\nSistem yöneticisi sunucu tarafında şifrelemeyi etkinleştirdi. Dosyalarınız '%s' parolası kullanılarak şifrelendi.\n\nLütfen web arayüzünde oturum açın ve kişisel ayarlarınızdan 'temel şifreleme modülü'ne giderek 'eski oturum açma parolası' alanına bu parolayı ve geçerli oturum açma parolanızı yazarak şifreleme parolanızı güncelleyin.\n\n", "The share will expire on %s." : "Bu paylaşım %s tarihinde sona erecek.", "Cheers!" : "Hoşçakalın!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Selam,<br><br>Sistem yöneticisi sunucu tarafında şifrelemeyi etkinleştirdi. Dosyalarınız <strong>%s</strong> parolası kullanılarak şifrelendi.<br><br>Lütfen web arayüzünde oturum açın ve kişisel ayarlarınızdan 'temel şifreleme modülü'ne giderek 'eski oturum açma parolası' alanına bu parolayı ve geçerli oturum açma parolanızı yazarak şifreleme parolanızı güncelleyin.<br><br>", - "Default encryption module" : "Varsayılan şifreleme modülü", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Şifreleme uygulaması etkin ancak anahtarlarınız hazırlanmamış. Lütfen oturumunuzu kapatıp yeniden açın.", "Encrypt the home storage" : "Ana depolama şifrelensin", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Bu seçenek etkinleştirildiğinde, ana depolama alanındaki tüm dosyalar şifrelenir. Devre dışı bırakıldığında yalnız dış depolama alanındaki dosyalar şifrelenir", diff --git a/apps/encryption/l10n/zh_CN.js b/apps/encryption/l10n/zh_CN.js index 9fa407bdac4..11d40b02a9f 100644 --- a/apps/encryption/l10n/zh_CN.js +++ b/apps/encryption/l10n/zh_CN.js @@ -30,11 +30,11 @@ OC.L10N.register( "one-time password for server-side-encryption" : "用于服务器端加密的一次性密码", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : " 无法解密这个文件(或许这是一个共享文件?),请询问文件所有者重新与您分享这个文件。", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请让文件所有者重新共享该文件。", + "Default encryption module" : "默认加密模块", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "您好,\n管理员已启用服务器端加密,您的文件已使用密码 '%s' 加密。\n\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。\n", "The share will expire on %s." : "此分享将在 %s 过期。", "Cheers!" : "干杯!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "您好,<br><br>管理员已启用服务器端加密,您的文件已使用密码 <strong>%s</strong> 加密。<br><br>\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。<br><br>", - "Default encryption module" : "默认加密模块", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用程序已启用,但您的密钥未初始化,请注销并再次登录", "Encrypt the home storage" : "加密主目录储存", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "启用此选项将加密存储在主存储上的所有文件,否则只会加密外部存储上的文件.", diff --git a/apps/encryption/l10n/zh_CN.json b/apps/encryption/l10n/zh_CN.json index 55288744ebc..fb7a1ac9e16 100644 --- a/apps/encryption/l10n/zh_CN.json +++ b/apps/encryption/l10n/zh_CN.json @@ -28,11 +28,11 @@ "one-time password for server-side-encryption" : "用于服务器端加密的一次性密码", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : " 无法解密这个文件(或许这是一个共享文件?),请询问文件所有者重新与您分享这个文件。", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请让文件所有者重新共享该文件。", + "Default encryption module" : "默认加密模块", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "您好,\n管理员已启用服务器端加密,您的文件已使用密码 '%s' 加密。\n\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。\n", "The share will expire on %s." : "此分享将在 %s 过期。", "Cheers!" : "干杯!", "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "您好,<br><br>管理员已启用服务器端加密,您的文件已使用密码 <strong>%s</strong> 加密。<br><br>\n请登陆网页界面,进入个人设置中的“基础加密模块”部分,在“旧登陆密码”处输入上述密码并输入您的当前登陆密码,即可更新加密密码。<br><br>", - "Default encryption module" : "默认加密模块", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用程序已启用,但您的密钥未初始化,请注销并再次登录", "Encrypt the home storage" : "加密主目录储存", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "启用此选项将加密存储在主存储上的所有文件,否则只会加密外部存储上的文件.", diff --git a/apps/encryption/templates/settings-personal.php b/apps/encryption/templates/settings-personal.php index e2bcb6813b6..7d0a26eea93 100644 --- a/apps/encryption/templates/settings-personal.php +++ b/apps/encryption/templates/settings-personal.php @@ -5,7 +5,7 @@ script('encryption', 'settings-personal'); script('core', 'multiselect'); ?> <form id="ocDefaultEncryptionModule" class="section"> - <h2><?php p($l->t('Basic encryption module')); ?></h2> + <h2 data-anchor-name="basic-encryption-module"><?php p($l->t('Basic encryption module')); ?></h2> <?php if ($_["initialized"] === \OCA\Encryption\Session::NOT_INITIALIZED ): ?> diff --git a/apps/federatedfilesharing/js/settings-personal.js b/apps/federatedfilesharing/js/settings-personal.js index 04096cb0416..c954f74f323 100644 --- a/apps/federatedfilesharing/js/settings-personal.js +++ b/apps/federatedfilesharing/js/settings-personal.js @@ -20,6 +20,9 @@ $(document).ready(function() { } }); + /* Verification icon tooltip */ + $('#personal-settings-container .verify img').tooltip({placement: 'bottom', trigger: 'hover'}); + $('#fileSharingSettings .clipboardButton').tooltip({placement: 'bottom', title: t('core', 'Copy'), trigger: 'hover'}); // Clipboard! diff --git a/apps/federatedfilesharing/l10n/cs.js b/apps/federatedfilesharing/l10n/cs.js index 66ba39701ed..0b2586e37ea 100644 --- a/apps/federatedfilesharing/l10n/cs.js +++ b/apps/federatedfilesharing/l10n/cs.js @@ -37,16 +37,22 @@ OC.L10N.register( "Decline" : "Zamítnout", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Sdílej se mnou pomocí mého #Nextcloud sdruženého cloud ID, více na %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Sdílej se mnou pomocí mého #Nextcloud sdruženého cloud ID", + "Federated file sharing" : "Propojené sdílení souborů", "Federated Cloud Sharing" : "Propojené cloudové sdílení", "Open documentation" : "Otevřít dokumentaci", + "Adjust how people can share between servers." : "Upravte, jak mohou lidé mezi servery sdílet.", "Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery", "Allow users on this server to receive shares from other servers" : "Povolit uživatelům na tomto serveru přijímat sdílení z jiných serverů", + "Search global and public address book for users and let local users publish their data" : "Hledat uživatele v globálním a veřejném adresáři a dovolit místním uživatelům publikovat jejich údaje", + "Allow users to publish their data to a global and public address book" : "Povolit uživatelům publikování jejich dat do globálního a sdíleného adresáře", "Federated Cloud" : "Sdružený cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Můžete sdílet s kýmkoliv, kdo používá Nextcloud, ownCloud, nebo Pydio! Jen zadejte jejich sdružené cloud ID do dialogu pro sdílení. Vypadá jako person@cloud.example.com", "Your Federated Cloud ID:" : "Vaše sdružené cloud ID:", - "Share it:" : "Sdílet:", + "Share it so your friends can share files with you:" : "Nasdílejte to, aby mohli vaši přátelé sdílet soubory s vámi:", "Add to your website" : "Přidat na svou webovou stránku", "Share with me via Nextcloud" : "Sdíleno se mnou přes Nextcloud", "HTML Code:" : "HTML kód:", - "Search global and public address book for users" : "Hledat uživatele v globálním a veřejném adresáři" + "Search global and public address book for users" : "Hledat uživatele v globálním a veřejném adresáři", + "Share it:" : "Sdílet:" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/federatedfilesharing/l10n/cs.json b/apps/federatedfilesharing/l10n/cs.json index 1455b337314..6ec6f47bfb7 100644 --- a/apps/federatedfilesharing/l10n/cs.json +++ b/apps/federatedfilesharing/l10n/cs.json @@ -35,16 +35,22 @@ "Decline" : "Zamítnout", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Sdílej se mnou pomocí mého #Nextcloud sdruženého cloud ID, více na %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Sdílej se mnou pomocí mého #Nextcloud sdruženého cloud ID", + "Federated file sharing" : "Propojené sdílení souborů", "Federated Cloud Sharing" : "Propojené cloudové sdílení", "Open documentation" : "Otevřít dokumentaci", + "Adjust how people can share between servers." : "Upravte, jak mohou lidé mezi servery sdílet.", "Allow users on this server to send shares to other servers" : "Povolit uživatelům z tohoto serveru zasílat sdílení na jiné servery", "Allow users on this server to receive shares from other servers" : "Povolit uživatelům na tomto serveru přijímat sdílení z jiných serverů", + "Search global and public address book for users and let local users publish their data" : "Hledat uživatele v globálním a veřejném adresáři a dovolit místním uživatelům publikovat jejich údaje", + "Allow users to publish their data to a global and public address book" : "Povolit uživatelům publikování jejich dat do globálního a sdíleného adresáře", "Federated Cloud" : "Sdružený cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Můžete sdílet s kýmkoliv, kdo používá Nextcloud, ownCloud, nebo Pydio! Jen zadejte jejich sdružené cloud ID do dialogu pro sdílení. Vypadá jako person@cloud.example.com", "Your Federated Cloud ID:" : "Vaše sdružené cloud ID:", - "Share it:" : "Sdílet:", + "Share it so your friends can share files with you:" : "Nasdílejte to, aby mohli vaši přátelé sdílet soubory s vámi:", "Add to your website" : "Přidat na svou webovou stránku", "Share with me via Nextcloud" : "Sdíleno se mnou přes Nextcloud", "HTML Code:" : "HTML kód:", - "Search global and public address book for users" : "Hledat uživatele v globálním a veřejném adresáři" + "Search global and public address book for users" : "Hledat uživatele v globálním a veřejném adresáři", + "Share it:" : "Sdílet:" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js index 2f2387c01be..6f385f2aff3 100644 --- a/apps/federatedfilesharing/l10n/de.js +++ b/apps/federatedfilesharing/l10n/de.js @@ -37,18 +37,22 @@ OC.L10N.register( "Decline" : "Abgelehnt", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Über meine #Nextcloud Federated-Cloud-ID teilen, siehe %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Teile mit mir über meine #Nextcloud Federated-Cloud-ID", + "Federated file sharing" : "Federated Datei-Freigabe", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "Open documentation" : "Dokumentation öffnen", + "Adjust how people can share between servers." : "Definiere wie die Benutzer Inhalte mit anderen Servern teilen können.", "Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben", "Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben", "Search global and public address book for users and let local users publish their data" : "Globales und öffentliches Adressbuch nach Nutzern durchsuchen und lokale Nutzer ihre Daten veröffentlichen lassen", - "Allow users to publish their data to a global and public address book" : "Erlaube Benutzern ihre Daten an ein globales und öffentliches Adressbuche zu veröffentlichen", + "Allow users to publish their data to a global and public address book" : "Erlaube Benutzern ihre Daten an ein globales und öffentliches Adressbuch zu veröffentlichen", "Federated Cloud" : "Federated Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Du kannst mit allen Leuten teilen, welche Nextcloud, ownCloud oder Pydio nutzen! Gebe einfach deren Federated Cloud ID in den Teilen-Dialog ein. Diese sieht wie folgt aus person@cloud.example.com", "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:", - "Share it:" : "Zum Teilen:", + "Share it so your friends can share files with you:" : "Teile es, so dass Deine Freunde Dateien mit Dir teilen können:", "Add to your website" : "Zu deiner Webseite hinzufügen", "Share with me via Nextcloud" : "Teile mit mir über Nextcloud", "HTML Code:" : "HTML-Code:", - "Search global and public address book for users" : "Globale Suche und ein öffentliches Adressbuch für Benutzer" + "Search global and public address book for users" : "Globale Suche und ein öffentliches Adressbuch für Benutzer", + "Share it:" : "Zum Teilen:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json index fe1f884181c..f1c10754853 100644 --- a/apps/federatedfilesharing/l10n/de.json +++ b/apps/federatedfilesharing/l10n/de.json @@ -35,18 +35,22 @@ "Decline" : "Abgelehnt", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Über meine #Nextcloud Federated-Cloud-ID teilen, siehe %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Teile mit mir über meine #Nextcloud Federated-Cloud-ID", + "Federated file sharing" : "Federated Datei-Freigabe", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "Open documentation" : "Dokumentation öffnen", + "Adjust how people can share between servers." : "Definiere wie die Benutzer Inhalte mit anderen Servern teilen können.", "Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben", "Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben", "Search global and public address book for users and let local users publish their data" : "Globales und öffentliches Adressbuch nach Nutzern durchsuchen und lokale Nutzer ihre Daten veröffentlichen lassen", - "Allow users to publish their data to a global and public address book" : "Erlaube Benutzern ihre Daten an ein globales und öffentliches Adressbuche zu veröffentlichen", + "Allow users to publish their data to a global and public address book" : "Erlaube Benutzern ihre Daten an ein globales und öffentliches Adressbuch zu veröffentlichen", "Federated Cloud" : "Federated Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Du kannst mit allen Leuten teilen, welche Nextcloud, ownCloud oder Pydio nutzen! Gebe einfach deren Federated Cloud ID in den Teilen-Dialog ein. Diese sieht wie folgt aus person@cloud.example.com", "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:", - "Share it:" : "Zum Teilen:", + "Share it so your friends can share files with you:" : "Teile es, so dass Deine Freunde Dateien mit Dir teilen können:", "Add to your website" : "Zu deiner Webseite hinzufügen", "Share with me via Nextcloud" : "Teile mit mir über Nextcloud", "HTML Code:" : "HTML-Code:", - "Search global and public address book for users" : "Globale Suche und ein öffentliches Adressbuch für Benutzer" + "Search global and public address book for users" : "Globale Suche und ein öffentliches Adressbuch für Benutzer", + "Share it:" : "Zum Teilen:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js index 11983a5e2fd..646b4817db0 100644 --- a/apps/federatedfilesharing/l10n/de_DE.js +++ b/apps/federatedfilesharing/l10n/de_DE.js @@ -37,18 +37,22 @@ OC.L10N.register( "Decline" : "Ablehnen", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Teilen Sie mit mir über meine #Nextcloud Federated-Cloud-ID, siehe %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Teilen Sie mit mir über meine #Nextcloud Federated-Cloud-ID", + "Federated file sharing" : "Federated Datei-Freigabe", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "Open documentation" : "Dokumentation öffnen", + "Adjust how people can share between servers." : "Definiere wie die Benutzer Inhalte mit anderen Servern teilen können.", "Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben", "Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben", "Search global and public address book for users and let local users publish their data" : "Globales und öffentliches Adressbuch nach Nutzern durchsuchen und lokale Nutzer ihre Daten veröffentlichen lassen", - "Allow users to publish their data to a global and public address book" : "Erlaube Benutzern ihre Daten an ein globales und öffentliches Adressbuche zu veröffentlichen", + "Allow users to publish their data to a global and public address book" : "Erlaube Benutzern ihre Daten an ein globales und öffentliches Adressbuch zu veröffentlichen", "Federated Cloud" : "Federated Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Sie können mit allen Leuten teilen, welche Nextcloud, ownCloud oder Pydio nutzen! Geben Sie einfach deren Federated Cloud ID in den Teilen-Dialog ein. Diese sieht wie folgt aus person@cloud.example.com", "Your Federated Cloud ID:" : "Ihre Federated-Cloud-ID:", - "Share it:" : "Teilen:", + "Share it so your friends can share files with you:" : "Teilen SIe es, so dass Ihre Freunde Dateien mit Ihnen teilen können:", "Add to your website" : "Zu Ihrer Web-Seite hinzufügen", "Share with me via Nextcloud" : "Teilen Sie mit mir über Nextcloud", "HTML Code:" : "HTML-Code:", - "Search global and public address book for users" : "Durchsuche globales und öffentliches Adressbuch nach Nutzern" + "Search global and public address book for users" : "Durchsuche globales und öffentliches Adressbuch nach Nutzern", + "Share it:" : "Teilen:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json index ad6d84c8171..cab800de9d9 100644 --- a/apps/federatedfilesharing/l10n/de_DE.json +++ b/apps/federatedfilesharing/l10n/de_DE.json @@ -35,18 +35,22 @@ "Decline" : "Ablehnen", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Teilen Sie mit mir über meine #Nextcloud Federated-Cloud-ID, siehe %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Teilen Sie mit mir über meine #Nextcloud Federated-Cloud-ID", + "Federated file sharing" : "Federated Datei-Freigabe", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "Open documentation" : "Dokumentation öffnen", + "Adjust how people can share between servers." : "Definiere wie die Benutzer Inhalte mit anderen Servern teilen können.", "Allow users on this server to send shares to other servers" : "Benutzern auf diesem Server das Senden von Freigaben an andere Server erlauben", "Allow users on this server to receive shares from other servers" : "Benutzern auf diesem Server das Empfangen von Freigaben von anderen Servern erlauben", "Search global and public address book for users and let local users publish their data" : "Globales und öffentliches Adressbuch nach Nutzern durchsuchen und lokale Nutzer ihre Daten veröffentlichen lassen", - "Allow users to publish their data to a global and public address book" : "Erlaube Benutzern ihre Daten an ein globales und öffentliches Adressbuche zu veröffentlichen", + "Allow users to publish their data to a global and public address book" : "Erlaube Benutzern ihre Daten an ein globales und öffentliches Adressbuch zu veröffentlichen", "Federated Cloud" : "Federated Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Sie können mit allen Leuten teilen, welche Nextcloud, ownCloud oder Pydio nutzen! Geben Sie einfach deren Federated Cloud ID in den Teilen-Dialog ein. Diese sieht wie folgt aus person@cloud.example.com", "Your Federated Cloud ID:" : "Ihre Federated-Cloud-ID:", - "Share it:" : "Teilen:", + "Share it so your friends can share files with you:" : "Teilen SIe es, so dass Ihre Freunde Dateien mit Ihnen teilen können:", "Add to your website" : "Zu Ihrer Web-Seite hinzufügen", "Share with me via Nextcloud" : "Teilen Sie mit mir über Nextcloud", "HTML Code:" : "HTML-Code:", - "Search global and public address book for users" : "Durchsuche globales und öffentliches Adressbuch nach Nutzern" + "Search global and public address book for users" : "Durchsuche globales und öffentliches Adressbuch nach Nutzern", + "Share it:" : "Teilen:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/es.js b/apps/federatedfilesharing/l10n/es.js index 881e0e17ee4..fae8b6380fa 100644 --- a/apps/federatedfilesharing/l10n/es.js +++ b/apps/federatedfilesharing/l10n/es.js @@ -39,16 +39,19 @@ OC.L10N.register( "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud", "Federated Cloud Sharing" : "Compartido en Cloud Federado", "Open documentation" : "Documentación abierta", + "Adjust how people can share between servers." : "Ajusta cómo la gente puede compartir entre servidores.", "Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores", "Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir archivos de usuarios de otros servidores", "Search global and public address book for users and let local users publish their data" : "Buscar libreta de direcciones global y pública para usuarios y permitir a los usuarios locales publicar su información", "Allow users to publish their data to a global and public address book" : "Permitir a los usuarios publicar su información en la libreta de direcciones global y pública", "Federated Cloud" : "Nube Federada", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de nube federada en el diálogo de compartir. Es algo como person@cloud.example.com", "Your Federated Cloud ID:" : "Su ID Nube Federada:", - "Share it:" : "Compartir:", + "Share it so your friends can share files with you:" : "Compártelo para que tus amigos puedan compartir archivos contigo:", "Add to your website" : "Añadir a su sitio web", "Share with me via Nextcloud" : "Compartirlo conmigo vía Nextcloud", "HTML Code:" : "Código HTML:", - "Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios" + "Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios", + "Share it:" : "Compartir:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/es.json b/apps/federatedfilesharing/l10n/es.json index da75410734e..b81409477b5 100644 --- a/apps/federatedfilesharing/l10n/es.json +++ b/apps/federatedfilesharing/l10n/es.json @@ -37,16 +37,19 @@ "Share with me through my #Nextcloud Federated Cloud ID" : "Compartirlo conmigo a través de mi ID Nube Federada #Nextcloud", "Federated Cloud Sharing" : "Compartido en Cloud Federado", "Open documentation" : "Documentación abierta", + "Adjust how people can share between servers." : "Ajusta cómo la gente puede compartir entre servidores.", "Allow users on this server to send shares to other servers" : "Permitir a usuarios de este servidor compartir con usuarios de otros servidores", "Allow users on this server to receive shares from other servers" : "Permitir a usuarios de este servidor recibir archivos de usuarios de otros servidores", "Search global and public address book for users and let local users publish their data" : "Buscar libreta de direcciones global y pública para usuarios y permitir a los usuarios locales publicar su información", "Allow users to publish their data to a global and public address book" : "Permitir a los usuarios publicar su información en la libreta de direcciones global y pública", "Federated Cloud" : "Nube Federada", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "¡Puedes compartir con cualquiera que use Nextcloud, ownCloud o Pydio! Simplemente, pon su ID de nube federada en el diálogo de compartir. Es algo como person@cloud.example.com", "Your Federated Cloud ID:" : "Su ID Nube Federada:", - "Share it:" : "Compartir:", + "Share it so your friends can share files with you:" : "Compártelo para que tus amigos puedan compartir archivos contigo:", "Add to your website" : "Añadir a su sitio web", "Share with me via Nextcloud" : "Compartirlo conmigo vía Nextcloud", "HTML Code:" : "Código HTML:", - "Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios" + "Search global and public address book for users" : "Buscar libretas de contactos globales y públicas para usuarios", + "Share it:" : "Compartir:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/es_MX.js b/apps/federatedfilesharing/l10n/es_MX.js index 94bc1a2683a..12bdf7c6274 100644 --- a/apps/federatedfilesharing/l10n/es_MX.js +++ b/apps/federatedfilesharing/l10n/es_MX.js @@ -37,18 +37,22 @@ OC.L10N.register( "Decline" : "Rechazar", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartir conmigo a través de mi ID de Nube Federada #Nextcloud, ver %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Compartir conmigo a través de mi ID de Nube Federada #Nextcloud", + "Federated file sharing" : "Compartir archivos en federación", "Federated Cloud Sharing" : "Compartir en la Nube Federada", "Open documentation" : "Abrir documentación", + "Adjust how people can share between servers." : "Ajustar cómo las personas pueden compartir entre servidores. ", "Allow users on this server to send shares to other servers" : "Permitirle a los usuarios de este servidor enviar elementos compartidos a otros servidores", "Allow users on this server to receive shares from other servers" : "Permitir que los usuarios de este servidor recibir elementos compartidos de otros servidores", "Search global and public address book for users and let local users publish their data" : "Buscar una libreta de direcciones global y pública para los usuarios y permitir a los usuarios locales publicar sus datos", "Allow users to publish their data to a global and public address book" : "Permitir a los usuarios publicar sus datos a una libreta de direcciones global y pública", "Federated Cloud" : "Nube Federada", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "¡Puede compartir con cualquiera que use NextCloud, ownCloud o Pydio! Solo ingrese su ID de Nube Federada en ventana de diálogo de compartir. Se ve algo así como person@cloud.example.com", "Your Federated Cloud ID:" : "Su ID de Nube Federada:", - "Share it:" : "Compartirlo:", + "Share it so your friends can share files with you:" : "Compártalo para que sus amigos puedan compartir archivos con usted. ", "Add to your website" : "Agregar a su sitio web", "Share with me via Nextcloud" : "Compartir conmigo vía Nextcloud", "HTML Code:" : "Código HTML:", - "Search global and public address book for users" : "Buscar usuarios en las libretas de contactos globales y públicas" + "Search global and public address book for users" : "Buscar usuarios en las libretas de contactos globales y públicas", + "Share it:" : "Compartirlo:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/es_MX.json b/apps/federatedfilesharing/l10n/es_MX.json index cab49642c5c..463af48b758 100644 --- a/apps/federatedfilesharing/l10n/es_MX.json +++ b/apps/federatedfilesharing/l10n/es_MX.json @@ -35,18 +35,22 @@ "Decline" : "Rechazar", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartir conmigo a través de mi ID de Nube Federada #Nextcloud, ver %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Compartir conmigo a través de mi ID de Nube Federada #Nextcloud", + "Federated file sharing" : "Compartir archivos en federación", "Federated Cloud Sharing" : "Compartir en la Nube Federada", "Open documentation" : "Abrir documentación", + "Adjust how people can share between servers." : "Ajustar cómo las personas pueden compartir entre servidores. ", "Allow users on this server to send shares to other servers" : "Permitirle a los usuarios de este servidor enviar elementos compartidos a otros servidores", "Allow users on this server to receive shares from other servers" : "Permitir que los usuarios de este servidor recibir elementos compartidos de otros servidores", "Search global and public address book for users and let local users publish their data" : "Buscar una libreta de direcciones global y pública para los usuarios y permitir a los usuarios locales publicar sus datos", "Allow users to publish their data to a global and public address book" : "Permitir a los usuarios publicar sus datos a una libreta de direcciones global y pública", "Federated Cloud" : "Nube Federada", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "¡Puede compartir con cualquiera que use NextCloud, ownCloud o Pydio! Solo ingrese su ID de Nube Federada en ventana de diálogo de compartir. Se ve algo así como person@cloud.example.com", "Your Federated Cloud ID:" : "Su ID de Nube Federada:", - "Share it:" : "Compartirlo:", + "Share it so your friends can share files with you:" : "Compártalo para que sus amigos puedan compartir archivos con usted. ", "Add to your website" : "Agregar a su sitio web", "Share with me via Nextcloud" : "Compartir conmigo vía Nextcloud", "HTML Code:" : "Código HTML:", - "Search global and public address book for users" : "Buscar usuarios en las libretas de contactos globales y públicas" + "Search global and public address book for users" : "Buscar usuarios en las libretas de contactos globales y públicas", + "Share it:" : "Compartirlo:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/fi.js b/apps/federatedfilesharing/l10n/fi.js index 8274af6c25a..a9ca7cbed9e 100644 --- a/apps/federatedfilesharing/l10n/fi.js +++ b/apps/federatedfilesharing/l10n/fi.js @@ -45,10 +45,10 @@ OC.L10N.register( "Allow users to publish their data to a global and public address book" : "Salli käyttäjien julkaista tietojaan maailmanlaajuisessa ja julkisessa osoitekirjassa", "Federated Cloud" : "Federoitu pilvi", "Your Federated Cloud ID:" : "Federoidun pilvesi tunniste:", - "Share it:" : "Jaa se:", "Add to your website" : "Lisää verkkosivuillesi", "Share with me via Nextcloud" : "Jaa kanssani Nextcloudin kautta", "HTML Code:" : "HTML-koodi:", - "Search global and public address book for users" : "Etsi käyttäjiä maailmanlaajuisesta ja julkisesta osoitekirjasta" + "Search global and public address book for users" : "Etsi käyttäjiä maailmanlaajuisesta ja julkisesta osoitekirjasta", + "Share it:" : "Jaa se:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/fi.json b/apps/federatedfilesharing/l10n/fi.json index 0a2dc0193ce..bbe09b8df1f 100644 --- a/apps/federatedfilesharing/l10n/fi.json +++ b/apps/federatedfilesharing/l10n/fi.json @@ -43,10 +43,10 @@ "Allow users to publish their data to a global and public address book" : "Salli käyttäjien julkaista tietojaan maailmanlaajuisessa ja julkisessa osoitekirjassa", "Federated Cloud" : "Federoitu pilvi", "Your Federated Cloud ID:" : "Federoidun pilvesi tunniste:", - "Share it:" : "Jaa se:", "Add to your website" : "Lisää verkkosivuillesi", "Share with me via Nextcloud" : "Jaa kanssani Nextcloudin kautta", "HTML Code:" : "HTML-koodi:", - "Search global and public address book for users" : "Etsi käyttäjiä maailmanlaajuisesta ja julkisesta osoitekirjasta" + "Search global and public address book for users" : "Etsi käyttäjiä maailmanlaajuisesta ja julkisesta osoitekirjasta", + "Share it:" : "Jaa se:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js index 2d2f087a04a..35c65b84fae 100644 --- a/apps/federatedfilesharing/l10n/fr.js +++ b/apps/federatedfilesharing/l10n/fr.js @@ -37,18 +37,22 @@ OC.L10N.register( "Decline" : "Refuser", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Partagez avec moi grâce à mon identifiant Federated Cloud #Nextcloud %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant Federated Cloud #Nextcloud", + "Federated file sharing" : "Partage de fichiers fédérés", "Federated Cloud Sharing" : "Federated Cloud Sharing", "Open documentation" : "Voir la documentation", + "Adjust how people can share between servers." : "Réglez comment les personnes peuvent partager entre les serveurs.", "Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs", "Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs", "Search global and public address book for users and let local users publish their data" : "Rechercher dans le carnet d'adresse global et public pour les utilisateurs et laisser les utilisateurs publier leurs données", "Allow users to publish their data to a global and public address book" : "Autoriser les utilisateurs à publier leurs données dans un carnet d'adresse global et public", "Federated Cloud" : "Federated Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Vous pouvez partager avec n'importe qui qui utilise Nextcloud, ownCloud ou Pydio ! Renseignez simplement leur Federated Cloud ID dans la boîte de dialogue de partage. Cela ressemble à person@cloud.example.com", "Your Federated Cloud ID:" : "Votre identifiant Federated Cloud :", - "Share it:" : "Partager :", + "Share it so your friends can share files with you:" : "Partagez-le afin que vos amis puissent partager des fichiers avec vous :", "Add to your website" : "Ajouter à votre site web", "Share with me via Nextcloud" : "Partagez avec moi via Nextcloud", "HTML Code:" : "Code HTML :", - "Search global and public address book for users" : "Rechercher dans le carnet d'adresse global et public pour les utilisateurs" + "Search global and public address book for users" : "Rechercher dans le carnet d'adresse global et public pour les utilisateurs", + "Share it:" : "Partager :" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json index 65f6a55b862..eecd8ae00f4 100644 --- a/apps/federatedfilesharing/l10n/fr.json +++ b/apps/federatedfilesharing/l10n/fr.json @@ -35,18 +35,22 @@ "Decline" : "Refuser", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Partagez avec moi grâce à mon identifiant Federated Cloud #Nextcloud %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant Federated Cloud #Nextcloud", + "Federated file sharing" : "Partage de fichiers fédérés", "Federated Cloud Sharing" : "Federated Cloud Sharing", "Open documentation" : "Voir la documentation", + "Adjust how people can share between servers." : "Réglez comment les personnes peuvent partager entre les serveurs.", "Allow users on this server to send shares to other servers" : "Autoriser les utilisateurs de ce serveur à envoyer des partages vers d'autres serveurs", "Allow users on this server to receive shares from other servers" : "Autoriser les utilisateurs de ce serveur à recevoir des partages d'autres serveurs", "Search global and public address book for users and let local users publish their data" : "Rechercher dans le carnet d'adresse global et public pour les utilisateurs et laisser les utilisateurs publier leurs données", "Allow users to publish their data to a global and public address book" : "Autoriser les utilisateurs à publier leurs données dans un carnet d'adresse global et public", "Federated Cloud" : "Federated Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Vous pouvez partager avec n'importe qui qui utilise Nextcloud, ownCloud ou Pydio ! Renseignez simplement leur Federated Cloud ID dans la boîte de dialogue de partage. Cela ressemble à person@cloud.example.com", "Your Federated Cloud ID:" : "Votre identifiant Federated Cloud :", - "Share it:" : "Partager :", + "Share it so your friends can share files with you:" : "Partagez-le afin que vos amis puissent partager des fichiers avec vous :", "Add to your website" : "Ajouter à votre site web", "Share with me via Nextcloud" : "Partagez avec moi via Nextcloud", "HTML Code:" : "Code HTML :", - "Search global and public address book for users" : "Rechercher dans le carnet d'adresse global et public pour les utilisateurs" + "Search global and public address book for users" : "Rechercher dans le carnet d'adresse global et public pour les utilisateurs", + "Share it:" : "Partager :" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/hu.js b/apps/federatedfilesharing/l10n/hu.js index 8b9f29f5673..ed692f70a7b 100644 --- a/apps/federatedfilesharing/l10n/hu.js +++ b/apps/federatedfilesharing/l10n/hu.js @@ -43,10 +43,10 @@ OC.L10N.register( "Allow users on this server to receive shares from other servers" : "Engedélyezze ezen szerver felhasználóinak, hogy megosztásokat fogadjanak más szerverektől", "Federated Cloud" : "Egyesített felhő", "Your Federated Cloud ID:" : "Egyesített felhő azonosító:", - "Share it:" : "Oszd meg:", "Add to your website" : "Adja hozzá saját weboldalához", "Share with me via Nextcloud" : "Ossza meg velem Nextcloud-on keresztül", "HTML Code:" : "HTML kód:", - "Search global and public address book for users" : "Felhasználók keresése a globális és a nyilvános névjegyekben" + "Search global and public address book for users" : "Felhasználók keresése a globális és a nyilvános névjegyekben", + "Share it:" : "Oszd meg:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/hu.json b/apps/federatedfilesharing/l10n/hu.json index b530e6b7a9d..52621eb6785 100644 --- a/apps/federatedfilesharing/l10n/hu.json +++ b/apps/federatedfilesharing/l10n/hu.json @@ -41,10 +41,10 @@ "Allow users on this server to receive shares from other servers" : "Engedélyezze ezen szerver felhasználóinak, hogy megosztásokat fogadjanak más szerverektől", "Federated Cloud" : "Egyesített felhő", "Your Federated Cloud ID:" : "Egyesített felhő azonosító:", - "Share it:" : "Oszd meg:", "Add to your website" : "Adja hozzá saját weboldalához", "Share with me via Nextcloud" : "Ossza meg velem Nextcloud-on keresztül", "HTML Code:" : "HTML kód:", - "Search global and public address book for users" : "Felhasználók keresése a globális és a nyilvános névjegyekben" + "Search global and public address book for users" : "Felhasználók keresése a globális és a nyilvános névjegyekben", + "Share it:" : "Oszd meg:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/ia.js b/apps/federatedfilesharing/l10n/ia.js index e0ad7702824..c4843d69e08 100644 --- a/apps/federatedfilesharing/l10n/ia.js +++ b/apps/federatedfilesharing/l10n/ia.js @@ -43,10 +43,10 @@ OC.L10N.register( "Allow users on this server to receive shares from other servers" : "Permitter usatores in iste servitor a reciper elementos compartite ex altere servitores", "Federated Cloud" : "Nube Federate", "Your Federated Cloud ID:" : "Tu ID de Nube Federate:", - "Share it:" : "Comparti lo:", "Add to your website" : "Adde a tu sito web", "Share with me via Nextcloud" : "Comparti con me via Nextcloud", "HTML Code:" : "Codice HTML:", - "Search global and public address book for users" : "Cercar pro usatores in adressarios global e public" + "Search global and public address book for users" : "Cercar pro usatores in adressarios global e public", + "Share it:" : "Comparti lo:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/ia.json b/apps/federatedfilesharing/l10n/ia.json index 3180fd5604d..88f1cd470f9 100644 --- a/apps/federatedfilesharing/l10n/ia.json +++ b/apps/federatedfilesharing/l10n/ia.json @@ -41,10 +41,10 @@ "Allow users on this server to receive shares from other servers" : "Permitter usatores in iste servitor a reciper elementos compartite ex altere servitores", "Federated Cloud" : "Nube Federate", "Your Federated Cloud ID:" : "Tu ID de Nube Federate:", - "Share it:" : "Comparti lo:", "Add to your website" : "Adde a tu sito web", "Share with me via Nextcloud" : "Comparti con me via Nextcloud", "HTML Code:" : "Codice HTML:", - "Search global and public address book for users" : "Cercar pro usatores in adressarios global e public" + "Search global and public address book for users" : "Cercar pro usatores in adressarios global e public", + "Share it:" : "Comparti lo:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/id.js b/apps/federatedfilesharing/l10n/id.js index 7173d30b1f3..0f61b9fc8dc 100644 --- a/apps/federatedfilesharing/l10n/id.js +++ b/apps/federatedfilesharing/l10n/id.js @@ -43,10 +43,10 @@ OC.L10N.register( "Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya.", "Federated Cloud" : "Federated Cloud", "Your Federated Cloud ID:" : "Federated Cloud ID Anda:", - "Share it:" : "Bagikan:", "Add to your website" : "Tambahkan pada situs web Anda", "Share with me via Nextcloud" : "Dibagikan pada saya via Nextcloud", "HTML Code:" : "Kode HTML:", - "Search global and public address book for users" : "Cari alamat buku global dan alamat publik untuk pengguna" + "Search global and public address book for users" : "Cari alamat buku global dan alamat publik untuk pengguna", + "Share it:" : "Bagikan:" }, "nplurals=1; plural=0;"); diff --git a/apps/federatedfilesharing/l10n/id.json b/apps/federatedfilesharing/l10n/id.json index bb8070e2505..ae8a103981d 100644 --- a/apps/federatedfilesharing/l10n/id.json +++ b/apps/federatedfilesharing/l10n/id.json @@ -41,10 +41,10 @@ "Allow users on this server to receive shares from other servers" : "Izinkan para pengguna di server ini untuk menerima berbagi ke server lainnya.", "Federated Cloud" : "Federated Cloud", "Your Federated Cloud ID:" : "Federated Cloud ID Anda:", - "Share it:" : "Bagikan:", "Add to your website" : "Tambahkan pada situs web Anda", "Share with me via Nextcloud" : "Dibagikan pada saya via Nextcloud", "HTML Code:" : "Kode HTML:", - "Search global and public address book for users" : "Cari alamat buku global dan alamat publik untuk pengguna" + "Search global and public address book for users" : "Cari alamat buku global dan alamat publik untuk pengguna", + "Share it:" : "Bagikan:" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/is.js b/apps/federatedfilesharing/l10n/is.js index 16bbef5aa01..5191af33c50 100644 --- a/apps/federatedfilesharing/l10n/is.js +++ b/apps/federatedfilesharing/l10n/is.js @@ -37,18 +37,22 @@ OC.L10N.register( "Decline" : "Hafna", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Deila með mér í gegnum víðværa skýjasambandsauðkennið mitt #Nextcloud Federated Cloud ID, sjá %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Deila með mér í gegnum víðværa skýjasambandsauðkennið mitt #Nextcloud Federated Cloud ID", + "Federated file sharing" : "Deiling skráa milli þjóna", "Federated Cloud Sharing" : "Deiling með skýjasambandi", "Open documentation" : "Opna hjálparskjöl", + "Adjust how people can share between servers." : "Stilltu hvernig fólk getur deilt á milli þjóna.", "Allow users on this server to send shares to other servers" : "Leyfa notendum á þessum þjóni að senda sameignir til annarra þjóna", "Allow users on this server to receive shares from other servers" : "Leyfa notendum á þessum þjóni að taka á móti sameignum frá öðrum þjónum", "Search global and public address book for users and let local users publish their data" : "Leita að notendum í víðværri og opinberri vistfangaskrá og leyfa staðværum notendum að birta gögnin sín", "Allow users to publish their data to a global and public address book" : "Leifa notendum að birta gögnin sín í víðværri og opinberri vistfangaskrá", "Federated Cloud" : "Skýjasamband (federated)", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Þú getur deilt með hverjum þeim sem notar Nextcloud, ownCloud eða Pydio! Settu bara skýjasambandsauðkennið þeirra (Federated Cloud ID) inn í deilingargluggann. Það lítur út svipað og einstaklingur@tölvuský.dæmi.is", "Your Federated Cloud ID:" : "Skýjasambandsauðkennið þitt (Federated Cloud ID):", - "Share it:" : "Deila því:", + "Share it so your friends can share files with you:" : "Deildu þessu svo að vinir þínir geti deilt skrám með þér:", "Add to your website" : "Bæta við vefsvæðið þitt", "Share with me via Nextcloud" : "Deila með mér í gegnum Nextcloud", "HTML Code:" : "HTML-kóði:", - "Search global and public address book for users" : "Leita að notendum í víðværri og opinberri vistfangaskrá" + "Search global and public address book for users" : "Leita að notendum í víðværri og opinberri vistfangaskrá", + "Share it:" : "Deila því:" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/federatedfilesharing/l10n/is.json b/apps/federatedfilesharing/l10n/is.json index fedef654b5c..3049e14cb05 100644 --- a/apps/federatedfilesharing/l10n/is.json +++ b/apps/federatedfilesharing/l10n/is.json @@ -35,18 +35,22 @@ "Decline" : "Hafna", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Deila með mér í gegnum víðværa skýjasambandsauðkennið mitt #Nextcloud Federated Cloud ID, sjá %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Deila með mér í gegnum víðværa skýjasambandsauðkennið mitt #Nextcloud Federated Cloud ID", + "Federated file sharing" : "Deiling skráa milli þjóna", "Federated Cloud Sharing" : "Deiling með skýjasambandi", "Open documentation" : "Opna hjálparskjöl", + "Adjust how people can share between servers." : "Stilltu hvernig fólk getur deilt á milli þjóna.", "Allow users on this server to send shares to other servers" : "Leyfa notendum á þessum þjóni að senda sameignir til annarra þjóna", "Allow users on this server to receive shares from other servers" : "Leyfa notendum á þessum þjóni að taka á móti sameignum frá öðrum þjónum", "Search global and public address book for users and let local users publish their data" : "Leita að notendum í víðværri og opinberri vistfangaskrá og leyfa staðværum notendum að birta gögnin sín", "Allow users to publish their data to a global and public address book" : "Leifa notendum að birta gögnin sín í víðværri og opinberri vistfangaskrá", "Federated Cloud" : "Skýjasamband (federated)", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Þú getur deilt með hverjum þeim sem notar Nextcloud, ownCloud eða Pydio! Settu bara skýjasambandsauðkennið þeirra (Federated Cloud ID) inn í deilingargluggann. Það lítur út svipað og einstaklingur@tölvuský.dæmi.is", "Your Federated Cloud ID:" : "Skýjasambandsauðkennið þitt (Federated Cloud ID):", - "Share it:" : "Deila því:", + "Share it so your friends can share files with you:" : "Deildu þessu svo að vinir þínir geti deilt skrám með þér:", "Add to your website" : "Bæta við vefsvæðið þitt", "Share with me via Nextcloud" : "Deila með mér í gegnum Nextcloud", "HTML Code:" : "HTML-kóði:", - "Search global and public address book for users" : "Leita að notendum í víðværri og opinberri vistfangaskrá" + "Search global and public address book for users" : "Leita að notendum í víðværri og opinberri vistfangaskrá", + "Share it:" : "Deila því:" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/it.js b/apps/federatedfilesharing/l10n/it.js index 4d6b132e14b..4690f6e38a6 100644 --- a/apps/federatedfilesharing/l10n/it.js +++ b/apps/federatedfilesharing/l10n/it.js @@ -43,10 +43,10 @@ OC.L10N.register( "Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server", "Federated Cloud" : "Cloud federata", "Your Federated Cloud ID:" : "Il tuo ID di cloud federata:", - "Share it:" : "Condividilo:", "Add to your website" : "Aggiungi al tuo sito web", "Share with me via Nextcloud" : "Condividi con me tramite Nextcloud", "HTML Code:" : "Codice HTML:", - "Search global and public address book for users" : "Cerca gli utenti nella rubrica globale e pubblica" + "Search global and public address book for users" : "Cerca gli utenti nella rubrica globale e pubblica", + "Share it:" : "Condividilo:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/it.json b/apps/federatedfilesharing/l10n/it.json index 392f68e686b..edcb497a559 100644 --- a/apps/federatedfilesharing/l10n/it.json +++ b/apps/federatedfilesharing/l10n/it.json @@ -41,10 +41,10 @@ "Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server", "Federated Cloud" : "Cloud federata", "Your Federated Cloud ID:" : "Il tuo ID di cloud federata:", - "Share it:" : "Condividilo:", "Add to your website" : "Aggiungi al tuo sito web", "Share with me via Nextcloud" : "Condividi con me tramite Nextcloud", "HTML Code:" : "Codice HTML:", - "Search global and public address book for users" : "Cerca gli utenti nella rubrica globale e pubblica" + "Search global and public address book for users" : "Cerca gli utenti nella rubrica globale e pubblica", + "Share it:" : "Condividilo:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/ko.js b/apps/federatedfilesharing/l10n/ko.js index 05e5db39dc6..142e6c2c535 100644 --- a/apps/federatedfilesharing/l10n/ko.js +++ b/apps/federatedfilesharing/l10n/ko.js @@ -7,33 +7,51 @@ OC.L10N.register( "Remote share password" : "원격 공유 암호", "Cancel" : "취소", "Add remote share" : "원격 공유 추가", - "Copied!" : "복사됨!", + "Copy" : "복사", + "Copied!" : "복사 성공!", "Not supported!" : "지원하지 않음!", - "Press ⌘-C to copy." : "⌘-C 복사", - "Press Ctrl-C to copy." : "⌘-C 복사", + "Press ⌘-C to copy." : "복사하려면 ⌘-C 키를 누르십시오.", + "Press Ctrl-C to copy." : "복사하려면 Ctrl-C 키를 누르십시오.", "Invalid Federated Cloud ID" : "잘못된 연합 클라우드 ID", "Server to server sharing is not enabled on this server" : "이 서버에서 서버간 공유를 사용할 수 없음", - "Couldn't establish a federated share." : "연합 공유를 설정할 수 없음", + "Couldn't establish a federated share." : "연합 공유를 설정할 수 없습니다.", + "Couldn't establish a federated share, maybe the password was wrong." : "연합 공유를 설정할 수 없습니다. 암호가 잘못되었을 수도 있습니다.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "연합 공유 요청이 성공했으며 초대장을 받을 것입니다. 알림을 확인하십시오.", "The mountpoint name contains invalid characters." : "마운트 지점 이름에 잘못된 글자가 포함되어 있습니다.", "Not allowed to create a federated share with the owner." : "소유자와 연합 공유를 만들 수 없음", "Invalid or untrusted SSL certificate" : "유효하지 않거나 신뢰할 수없는 SSL 인증서", - "Storage not valid" : "유효하지 않은 스토리지", + "Could not authenticate to remote share, password might be wrong" : "원격 공유에 인증할 수 없습니다. 암호가 잘못되었을 수도 있습니다", + "Storage not valid" : "유효하지 않은 저장소", + "Federated Share successfully added" : "연합 공유를 성공적으로 추가함", + "Couldn't add remote share" : "원격 공유를 추가할 수 없음", "Sharing %s failed, because this item is already shared with %s" : "%s을(를) 공유할 수 없습니다. 이미 %s 님과 공유되어 있습니다", "Not allowed to create a federated share with the same user" : "같은 사용자와 연합 공유를 만들 수 없음", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s을(를) 공유할 수 없습니다. %s을(를) 찾을 수 없습니다. 서버에 접근하지 못할 수도 있습니다.", + "File is already shared with %s" : "파일이 %s와(과) 이미 공유됨", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "%s을(를) 공유할 수 없습니다. %s을(를) 찾을 수 없습니다. 서버에 접근할 수 없거나 자가 서명된 인증서를 사용하고 있을 수도 있습니다.", + "Could not find share" : "공유를 찾을 수 없음", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "%1$s(%2$s 대신) 님으로부터 \"%3$s\"을(를) 원격 공유로 받음", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "{user}({behalf} 대신) 님으로부터 {share}을(를) 원격 공유로 받음", + "You received \"%3$s\" as a remote share from %1$s" : "%1$s 님으로부터 \"%3$s\"을(를) 원격 공유로 받음", + "You received {share} as a remote share from {user}" : "{user} 님으로부터 {share}을(를) 원격 공유로 받음", "Accept" : "수락", "Decline" : "거절", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "내 #Nextcloud 연합 클라우드 ID를 통해서 공유됨, 더 알아보기: %s", "Share with me through my #Nextcloud Federated Cloud ID" : "내 #Nextcloud 연합 클라우드 ID를 통해서 공유됨", "Federated Cloud Sharing" : "클라우드 연합 공유", "Open documentation" : "문서 열기", + "Adjust how people can share between servers." : "서버간 파일 공유를 설정합니다.", "Allow users on this server to send shares to other servers" : "이 서버의 사용자가 다른 서버와 공유할 수 있도록 허용", "Allow users on this server to receive shares from other servers" : "이 서버의 사용자가 다른 서버에서 공유한 파일을 받을 수 있도록 허용", + "Search global and public address book for users and let local users publish their data" : "전역 및 공개 주소록에서 검색하고 로컬 사용자가 정보를 공개할 수 있도록 허용", + "Allow users to publish their data to a global and public address book" : "사용자가 데이터를 전역 및 공개 주소록에 업로드할 수 있도록 허용", "Federated Cloud" : "연합 클라우드", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud, ownCloud, Pydio를 사용하는 누구나와 공유할 수 있습니다! 공유 대화 상자에서 연합 클라우드 ID를 입력하십시오. person@cloud.example.com 형식입니다", "Your Federated Cloud ID:" : "내 연합 클라우드 ID:", - "Share it:" : "공유하기:", + "Share it so your friends can share files with you:" : "친구들과 파일을 공유할 수 있도록 공유하십시오:", "Add to your website" : "내 웹 사이트에 추가", "Share with me via Nextcloud" : "Nextcloud로 나와 공유하기", - "HTML Code:" : "HTML 코드:" + "HTML Code:" : "HTML 코드:", + "Search global and public address book for users" : "전역 및 공개 주소록에서 사용자 검색", + "Share it:" : "공유하기:" }, "nplurals=1; plural=0;"); diff --git a/apps/federatedfilesharing/l10n/ko.json b/apps/federatedfilesharing/l10n/ko.json index 5a85d76fa6b..5c88ac92f19 100644 --- a/apps/federatedfilesharing/l10n/ko.json +++ b/apps/federatedfilesharing/l10n/ko.json @@ -5,33 +5,51 @@ "Remote share password" : "원격 공유 암호", "Cancel" : "취소", "Add remote share" : "원격 공유 추가", - "Copied!" : "복사됨!", + "Copy" : "복사", + "Copied!" : "복사 성공!", "Not supported!" : "지원하지 않음!", - "Press ⌘-C to copy." : "⌘-C 복사", - "Press Ctrl-C to copy." : "⌘-C 복사", + "Press ⌘-C to copy." : "복사하려면 ⌘-C 키를 누르십시오.", + "Press Ctrl-C to copy." : "복사하려면 Ctrl-C 키를 누르십시오.", "Invalid Federated Cloud ID" : "잘못된 연합 클라우드 ID", "Server to server sharing is not enabled on this server" : "이 서버에서 서버간 공유를 사용할 수 없음", - "Couldn't establish a federated share." : "연합 공유를 설정할 수 없음", + "Couldn't establish a federated share." : "연합 공유를 설정할 수 없습니다.", + "Couldn't establish a federated share, maybe the password was wrong." : "연합 공유를 설정할 수 없습니다. 암호가 잘못되었을 수도 있습니다.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "연합 공유 요청이 성공했으며 초대장을 받을 것입니다. 알림을 확인하십시오.", "The mountpoint name contains invalid characters." : "마운트 지점 이름에 잘못된 글자가 포함되어 있습니다.", "Not allowed to create a federated share with the owner." : "소유자와 연합 공유를 만들 수 없음", "Invalid or untrusted SSL certificate" : "유효하지 않거나 신뢰할 수없는 SSL 인증서", - "Storage not valid" : "유효하지 않은 스토리지", + "Could not authenticate to remote share, password might be wrong" : "원격 공유에 인증할 수 없습니다. 암호가 잘못되었을 수도 있습니다", + "Storage not valid" : "유효하지 않은 저장소", + "Federated Share successfully added" : "연합 공유를 성공적으로 추가함", + "Couldn't add remote share" : "원격 공유를 추가할 수 없음", "Sharing %s failed, because this item is already shared with %s" : "%s을(를) 공유할 수 없습니다. 이미 %s 님과 공유되어 있습니다", "Not allowed to create a federated share with the same user" : "같은 사용자와 연합 공유를 만들 수 없음", - "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s을(를) 공유할 수 없습니다. %s을(를) 찾을 수 없습니다. 서버에 접근하지 못할 수도 있습니다.", + "File is already shared with %s" : "파일이 %s와(과) 이미 공유됨", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "%s을(를) 공유할 수 없습니다. %s을(를) 찾을 수 없습니다. 서버에 접근할 수 없거나 자가 서명된 인증서를 사용하고 있을 수도 있습니다.", + "Could not find share" : "공유를 찾을 수 없음", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "%1$s(%2$s 대신) 님으로부터 \"%3$s\"을(를) 원격 공유로 받음", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "{user}({behalf} 대신) 님으로부터 {share}을(를) 원격 공유로 받음", + "You received \"%3$s\" as a remote share from %1$s" : "%1$s 님으로부터 \"%3$s\"을(를) 원격 공유로 받음", + "You received {share} as a remote share from {user}" : "{user} 님으로부터 {share}을(를) 원격 공유로 받음", "Accept" : "수락", "Decline" : "거절", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "내 #Nextcloud 연합 클라우드 ID를 통해서 공유됨, 더 알아보기: %s", "Share with me through my #Nextcloud Federated Cloud ID" : "내 #Nextcloud 연합 클라우드 ID를 통해서 공유됨", "Federated Cloud Sharing" : "클라우드 연합 공유", "Open documentation" : "문서 열기", + "Adjust how people can share between servers." : "서버간 파일 공유를 설정합니다.", "Allow users on this server to send shares to other servers" : "이 서버의 사용자가 다른 서버와 공유할 수 있도록 허용", "Allow users on this server to receive shares from other servers" : "이 서버의 사용자가 다른 서버에서 공유한 파일을 받을 수 있도록 허용", + "Search global and public address book for users and let local users publish their data" : "전역 및 공개 주소록에서 검색하고 로컬 사용자가 정보를 공개할 수 있도록 허용", + "Allow users to publish their data to a global and public address book" : "사용자가 데이터를 전역 및 공개 주소록에 업로드할 수 있도록 허용", "Federated Cloud" : "연합 클라우드", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud, ownCloud, Pydio를 사용하는 누구나와 공유할 수 있습니다! 공유 대화 상자에서 연합 클라우드 ID를 입력하십시오. person@cloud.example.com 형식입니다", "Your Federated Cloud ID:" : "내 연합 클라우드 ID:", - "Share it:" : "공유하기:", + "Share it so your friends can share files with you:" : "친구들과 파일을 공유할 수 있도록 공유하십시오:", "Add to your website" : "내 웹 사이트에 추가", "Share with me via Nextcloud" : "Nextcloud로 나와 공유하기", - "HTML Code:" : "HTML 코드:" + "HTML Code:" : "HTML 코드:", + "Search global and public address book for users" : "전역 및 공개 주소록에서 사용자 검색", + "Share it:" : "공유하기:" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/nb.js b/apps/federatedfilesharing/l10n/nb.js index e5515edc143..20edbf22fb3 100644 --- a/apps/federatedfilesharing/l10n/nb.js +++ b/apps/federatedfilesharing/l10n/nb.js @@ -39,16 +39,19 @@ OC.L10N.register( "Share with me through my #Nextcloud Federated Cloud ID" : "Del med meg gjennom min #Nextcloud-ID for sammenknyttet sky", "Federated Cloud Sharing" : "Sammenknyttet sky-deling", "Open documentation" : "Åpne dokumentasjonen", + "Adjust how people can share between servers." : "Juster hvordan folk kan dele mellom tjenere.", "Allow users on this server to send shares to other servers" : "Tillat at brukere på denne tjeneren sender delinger til andre tjenere", "Allow users on this server to receive shares from other servers" : "Tillat at brukere på denne tjeneren mottar delinger fra andre tjenere", "Search global and public address book for users and let local users publish their data" : "Søk i verdensomspennende og offentlig adressebok for brukere og la lokale brukere offentliggjøre deres data", "Allow users to publish their data to a global and public address book" : "Tillat brukere å offentliggjøre deres data til en verdensomspennende og offentlig adressebok", "Federated Cloud" : "Sammenknyttet sky", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Du kan dele med alle som bruker Nextcloud, ownCloud eller Pydio! Bare putt deres federerte sky-ID i delingsdialogvinduet. Det ser ut som person.sky.eksempel.no", "Your Federated Cloud ID:" : "Din ID for sammenknyttet sky:", - "Share it:" : "Del den:", + "Share it so your friends can share files with you:" : "Del den slik at venner kan dele filer med deg:", "Add to your website" : "Legg på nettsiden din", "Share with me via Nextcloud" : "Del med meg via Nextcloud", "HTML Code:" : "HTML-kode:", - "Search global and public address book for users" : "Søk global og offentlige adressebøker etter brukere" + "Search global and public address book for users" : "Søk global og offentlige adressebøker etter brukere", + "Share it:" : "Del den:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/nb.json b/apps/federatedfilesharing/l10n/nb.json index 986739a0e14..711905c7d19 100644 --- a/apps/federatedfilesharing/l10n/nb.json +++ b/apps/federatedfilesharing/l10n/nb.json @@ -37,16 +37,19 @@ "Share with me through my #Nextcloud Federated Cloud ID" : "Del med meg gjennom min #Nextcloud-ID for sammenknyttet sky", "Federated Cloud Sharing" : "Sammenknyttet sky-deling", "Open documentation" : "Åpne dokumentasjonen", + "Adjust how people can share between servers." : "Juster hvordan folk kan dele mellom tjenere.", "Allow users on this server to send shares to other servers" : "Tillat at brukere på denne tjeneren sender delinger til andre tjenere", "Allow users on this server to receive shares from other servers" : "Tillat at brukere på denne tjeneren mottar delinger fra andre tjenere", "Search global and public address book for users and let local users publish their data" : "Søk i verdensomspennende og offentlig adressebok for brukere og la lokale brukere offentliggjøre deres data", "Allow users to publish their data to a global and public address book" : "Tillat brukere å offentliggjøre deres data til en verdensomspennende og offentlig adressebok", "Federated Cloud" : "Sammenknyttet sky", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Du kan dele med alle som bruker Nextcloud, ownCloud eller Pydio! Bare putt deres federerte sky-ID i delingsdialogvinduet. Det ser ut som person.sky.eksempel.no", "Your Federated Cloud ID:" : "Din ID for sammenknyttet sky:", - "Share it:" : "Del den:", + "Share it so your friends can share files with you:" : "Del den slik at venner kan dele filer med deg:", "Add to your website" : "Legg på nettsiden din", "Share with me via Nextcloud" : "Del med meg via Nextcloud", "HTML Code:" : "HTML-kode:", - "Search global and public address book for users" : "Søk global og offentlige adressebøker etter brukere" + "Search global and public address book for users" : "Søk global og offentlige adressebøker etter brukere", + "Share it:" : "Del den:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/nl.js b/apps/federatedfilesharing/l10n/nl.js index b6eb9737dba..71c6adaf6f5 100644 --- a/apps/federatedfilesharing/l10n/nl.js +++ b/apps/federatedfilesharing/l10n/nl.js @@ -39,16 +39,19 @@ OC.L10N.register( "Share with me through my #Nextcloud Federated Cloud ID" : "Deel met mij via mijn #Nextcloud federated Cloud ID", "Federated Cloud Sharing" : "Federated Cloud Sharing", "Open documentation" : "Open documentatie", + "Adjust how people can share between servers." : "Aanpassen hoe mensen tussen servers kunnen delen.", "Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers", "Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers", "Search global and public address book for users and let local users publish their data" : "Openbare adresboeken voor gebruikers doorzoeken en laat lokale gebruikers de data plubliceren", "Allow users to publish their data to a global and public address book" : "Publiek maken van data met een openbaar adresboek toestaan", "Federated Cloud" : "Gefedereerde Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Je kunt met iedereeen delen die Nextcloud, ownCloud of Pydio gebruikt! Gebruik gewoon hun federatieID in de deel-dialoog. Het ziet eruit als iemand@cloud.voorbeeld.com", "Your Federated Cloud ID:" : "Je Federated Cloud ID:", - "Share it:" : "Deel het:", + "Share it so your friends can share files with you:" : "Deel het, zodat anderen bestanden met jou kunnen delen:", "Add to your website" : "Toevoegen aan je website", "Share with me via Nextcloud" : "Deel met mij via Nextcloud", "HTML Code:" : "HTML Code:", - "Search global and public address book for users" : "Doorzoeken van openbare adresboeken voor gebruikers" + "Search global and public address book for users" : "Doorzoeken van openbare adresboeken voor gebruikers", + "Share it:" : "Deel het:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/nl.json b/apps/federatedfilesharing/l10n/nl.json index fa1348d634d..aee02702266 100644 --- a/apps/federatedfilesharing/l10n/nl.json +++ b/apps/federatedfilesharing/l10n/nl.json @@ -37,16 +37,19 @@ "Share with me through my #Nextcloud Federated Cloud ID" : "Deel met mij via mijn #Nextcloud federated Cloud ID", "Federated Cloud Sharing" : "Federated Cloud Sharing", "Open documentation" : "Open documentatie", + "Adjust how people can share between servers." : "Aanpassen hoe mensen tussen servers kunnen delen.", "Allow users on this server to send shares to other servers" : "Toestaan dat gebruikers op deze server shares sturen naar andere servers", "Allow users on this server to receive shares from other servers" : "Toestaan dat gebruikers op deze server shares ontvangen van andere servers", "Search global and public address book for users and let local users publish their data" : "Openbare adresboeken voor gebruikers doorzoeken en laat lokale gebruikers de data plubliceren", "Allow users to publish their data to a global and public address book" : "Publiek maken van data met een openbaar adresboek toestaan", "Federated Cloud" : "Gefedereerde Cloud", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Je kunt met iedereeen delen die Nextcloud, ownCloud of Pydio gebruikt! Gebruik gewoon hun federatieID in de deel-dialoog. Het ziet eruit als iemand@cloud.voorbeeld.com", "Your Federated Cloud ID:" : "Je Federated Cloud ID:", - "Share it:" : "Deel het:", + "Share it so your friends can share files with you:" : "Deel het, zodat anderen bestanden met jou kunnen delen:", "Add to your website" : "Toevoegen aan je website", "Share with me via Nextcloud" : "Deel met mij via Nextcloud", "HTML Code:" : "HTML Code:", - "Search global and public address book for users" : "Doorzoeken van openbare adresboeken voor gebruikers" + "Search global and public address book for users" : "Doorzoeken van openbare adresboeken voor gebruikers", + "Share it:" : "Deel het:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/pl.js b/apps/federatedfilesharing/l10n/pl.js index 8c98322256e..b618a18d28d 100644 --- a/apps/federatedfilesharing/l10n/pl.js +++ b/apps/federatedfilesharing/l10n/pl.js @@ -37,18 +37,22 @@ OC.L10N.register( "Decline" : "Utrata", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Podziel się ze mną przez mój ID #Nextcloud Stowarzyszonej Chmury, zobacz %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Podziel się ze mną przez mój ID #Nextcloud Stowarzyszonej Chmury", + "Federated file sharing" : "Udostępnianie plików chmury stowarzyszonej", "Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą", "Open documentation" : "Otwórz dokumentację", + "Adjust how people can share between servers." : "Dostosuj ustawienia współdzielenia między serwerami.", "Allow users on this server to send shares to other servers" : "Zezwalaj użytkownikom na tym serwerze wysłać udostępnienia do innych serwerów", "Allow users on this server to receive shares from other servers" : "Zezwalaj użytkownikom na tym serwerze do otrzymania udostępnień z innych serwerów", "Search global and public address book for users and let local users publish their data" : "Szukaj użytkowników w globalnej i publicznej książce adresowej i pozwól lokalnym użytkownikom na publikowanie swoich danych", "Allow users to publish their data to a global and public address book" : "Pozwól użytkownikom na publikację ich danych do globalnej i publicznej książki adresowej", "Federated Cloud" : "Stowarzyszona Chmura", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Możesz współdzielić z każdym kto używa Nextclouda, ownClouda lub Pydio. Wystarczy, że wpiszesz ich ID chmury stowarzyszonej w pole współdzielenia. Wygląda jak osoba@przyklad.chmury.com", "Your Federated Cloud ID:" : "Twoje ID Stowarzyszonej Chmury:", - "Share it:" : "Udostępnij to:", + "Share it so your friends can share files with you:" : "Współdziel to, aby twoi przyjaciele mogli współdzielić pliki z tobą:", "Add to your website" : "Dodaj do swojej strony", "Share with me via Nextcloud" : "Podziel się ze mną poprzez Nextcloud", "HTML Code:" : "Kod HTML:", - "Search global and public address book for users" : "Szukaj użytkowników w globalnej i publicznej książce adresowej" + "Search global and public address book for users" : "Szukaj użytkowników w globalnej i publicznej książce adresowej", + "Share it:" : "Udostępnij to:" }, "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/federatedfilesharing/l10n/pl.json b/apps/federatedfilesharing/l10n/pl.json index 02a73c5e571..b4be22c2f44 100644 --- a/apps/federatedfilesharing/l10n/pl.json +++ b/apps/federatedfilesharing/l10n/pl.json @@ -35,18 +35,22 @@ "Decline" : "Utrata", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Podziel się ze mną przez mój ID #Nextcloud Stowarzyszonej Chmury, zobacz %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Podziel się ze mną przez mój ID #Nextcloud Stowarzyszonej Chmury", + "Federated file sharing" : "Udostępnianie plików chmury stowarzyszonej", "Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą", "Open documentation" : "Otwórz dokumentację", + "Adjust how people can share between servers." : "Dostosuj ustawienia współdzielenia między serwerami.", "Allow users on this server to send shares to other servers" : "Zezwalaj użytkownikom na tym serwerze wysłać udostępnienia do innych serwerów", "Allow users on this server to receive shares from other servers" : "Zezwalaj użytkownikom na tym serwerze do otrzymania udostępnień z innych serwerów", "Search global and public address book for users and let local users publish their data" : "Szukaj użytkowników w globalnej i publicznej książce adresowej i pozwól lokalnym użytkownikom na publikowanie swoich danych", "Allow users to publish their data to a global and public address book" : "Pozwól użytkownikom na publikację ich danych do globalnej i publicznej książki adresowej", "Federated Cloud" : "Stowarzyszona Chmura", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Możesz współdzielić z każdym kto używa Nextclouda, ownClouda lub Pydio. Wystarczy, że wpiszesz ich ID chmury stowarzyszonej w pole współdzielenia. Wygląda jak osoba@przyklad.chmury.com", "Your Federated Cloud ID:" : "Twoje ID Stowarzyszonej Chmury:", - "Share it:" : "Udostępnij to:", + "Share it so your friends can share files with you:" : "Współdziel to, aby twoi przyjaciele mogli współdzielić pliki z tobą:", "Add to your website" : "Dodaj do swojej strony", "Share with me via Nextcloud" : "Podziel się ze mną poprzez Nextcloud", "HTML Code:" : "Kod HTML:", - "Search global and public address book for users" : "Szukaj użytkowników w globalnej i publicznej książce adresowej" + "Search global and public address book for users" : "Szukaj użytkowników w globalnej i publicznej książce adresowej", + "Share it:" : "Udostępnij to:" },"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/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js index 807acf49f35..89333412064 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.js +++ b/apps/federatedfilesharing/l10n/pt_BR.js @@ -29,26 +29,30 @@ OC.L10N.register( "File is already shared with %s" : "O arquivo já é compartilhado com %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Compartilhamento %s falhou, não foi possível encontrar %s. Talvez o servidor esteja inacessível ou esteja sendo utilizado um certificado de auto-assinatura", "Could not find share" : "Não foi possível encontrar o compartilhamento", - "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Voce recebeu \"%3$s\" como um compartilhamento remoto de %1$s ( em nome de %2$s )", - "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Voce recebeu {share} como um compartilhamento remoto do {user} (em nome de {behalf})", - "You received \"%3$s\" as a remote share from %1$s" : "Voce recebeu \"%3$s\" como um compartilhamento remoto de %1$s", - "You received {share} as a remote share from {user}" : "Voce recebeu {share} como um compartilhamento remoto de {user}", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Você recebeu \"%3$s\" como um compartilhamento remoto de %1$s ( em nome de %2$s )", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Você recebeu {share} como um compartilhamento remoto do {user} (em nome de {behalf})", + "You received \"%3$s\" as a remote share from %1$s" : "Você recebeu \"%3$s\" como um compartilhamento remoto de %1$s", + "You received {share} as a remote share from {user}" : "Você recebeu {share} como um compartilhamento remoto de {user}", "Accept" : "Aceitar", "Decline" : "Rejeitar", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu ID de Nuvem Federada #Nexcloud, veja %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Compartilhe comigo através do meu ID de Nuvem Federada #Nexcloud", + "Federated file sharing" : "Compartilhamento Federado de arquivos", "Federated Cloud Sharing" : "Compartilhamento de Nuvem Federada", "Open documentation" : "Abrir documentação", + "Adjust how people can share between servers." : "Ajustar como as pessoas podem compartilhar entre servidores.", "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", "Allow users on this server to receive shares from other servers" : "Permitir que os usuários deste servidor recebam compartilhamentos de outros servidores", "Search global and public address book for users and let local users publish their data" : "Pesquise o catálogo de endereços global e público para usuários e deixe os usuários locais publicarem seus dados", "Allow users to publish their data to a global and public address book" : "Permitir que os usuários publiquem seus dados em um catálogo de endereços global e público", "Federated Cloud" : "Nuvem Federada", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Você pode compartilhar com qualquer um que use Nextcloud, ownCloud ou Pydio! Apenas coloque a ID de Nuvem Federada no diálogo de compartilhamento. Isto é algo como person@cloud.example.com", "Your Federated Cloud ID:" : "Sua ID de Nuvem Federada:", - "Share it:" : "Compartilhe-a:", + "Share it so your friends can share files with you:" : "Compartilhe e seus amigos poderão compartilhar arquivos com você:", "Add to your website" : "Adicione ao seu website", "Share with me via Nextcloud" : "Compartilhe comigo via Nextcloud", "HTML Code:" : "Código HTML:", - "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público" + "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público", + "Share it:" : "Compartilhe-a:" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json index 9444aa2b27d..6155a8b1b41 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.json +++ b/apps/federatedfilesharing/l10n/pt_BR.json @@ -27,26 +27,30 @@ "File is already shared with %s" : "O arquivo já é compartilhado com %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Compartilhamento %s falhou, não foi possível encontrar %s. Talvez o servidor esteja inacessível ou esteja sendo utilizado um certificado de auto-assinatura", "Could not find share" : "Não foi possível encontrar o compartilhamento", - "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Voce recebeu \"%3$s\" como um compartilhamento remoto de %1$s ( em nome de %2$s )", - "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Voce recebeu {share} como um compartilhamento remoto do {user} (em nome de {behalf})", - "You received \"%3$s\" as a remote share from %1$s" : "Voce recebeu \"%3$s\" como um compartilhamento remoto de %1$s", - "You received {share} as a remote share from {user}" : "Voce recebeu {share} como um compartilhamento remoto de {user}", + "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Você recebeu \"%3$s\" como um compartilhamento remoto de %1$s ( em nome de %2$s )", + "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Você recebeu {share} como um compartilhamento remoto do {user} (em nome de {behalf})", + "You received \"%3$s\" as a remote share from %1$s" : "Você recebeu \"%3$s\" como um compartilhamento remoto de %1$s", + "You received {share} as a remote share from {user}" : "Você recebeu {share} como um compartilhamento remoto de {user}", "Accept" : "Aceitar", "Decline" : "Rejeitar", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Compartilhe comigo através do meu ID de Nuvem Federada #Nexcloud, veja %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Compartilhe comigo através do meu ID de Nuvem Federada #Nexcloud", + "Federated file sharing" : "Compartilhamento Federado de arquivos", "Federated Cloud Sharing" : "Compartilhamento de Nuvem Federada", "Open documentation" : "Abrir documentação", + "Adjust how people can share between servers." : "Ajustar como as pessoas podem compartilhar entre servidores.", "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", "Allow users on this server to receive shares from other servers" : "Permitir que os usuários deste servidor recebam compartilhamentos de outros servidores", "Search global and public address book for users and let local users publish their data" : "Pesquise o catálogo de endereços global e público para usuários e deixe os usuários locais publicarem seus dados", "Allow users to publish their data to a global and public address book" : "Permitir que os usuários publiquem seus dados em um catálogo de endereços global e público", "Federated Cloud" : "Nuvem Federada", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Você pode compartilhar com qualquer um que use Nextcloud, ownCloud ou Pydio! Apenas coloque a ID de Nuvem Federada no diálogo de compartilhamento. Isto é algo como person@cloud.example.com", "Your Federated Cloud ID:" : "Sua ID de Nuvem Federada:", - "Share it:" : "Compartilhe-a:", + "Share it so your friends can share files with you:" : "Compartilhe e seus amigos poderão compartilhar arquivos com você:", "Add to your website" : "Adicione ao seu website", "Share with me via Nextcloud" : "Compartilhe comigo via Nextcloud", "HTML Code:" : "Código HTML:", - "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público" + "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público", + "Share it:" : "Compartilhe-a:" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/ru.js b/apps/federatedfilesharing/l10n/ru.js index 216a904018b..b17c1214559 100644 --- a/apps/federatedfilesharing/l10n/ru.js +++ b/apps/federatedfilesharing/l10n/ru.js @@ -37,18 +37,22 @@ OC.L10N.register( "Decline" : "Отклонить", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ, смотрите %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ", + "Federated file sharing" : "Федеративный обмен файлами", "Federated Cloud Sharing" : "Федерация облачных хранилищ", "Open documentation" : "Открыть документацию", + "Adjust how people can share between servers." : "Настройте общий доступ между серверами.", "Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов", "Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов", "Search global and public address book for users and let local users publish their data" : "Поиск пользователей в глобальной и общедоступной адресной книге и резрешение публикации своих данных локальным пользователям ", "Allow users to publish their data to a global and public address book" : "Резрешить пользователям публиковать свои данные в глобальной и общедосупной адресной книге", "Federated Cloud" : "Федерация облачных хранилищ", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Можно поделиться с любым пользователем Nextcloud, ownCloud или Pydio! Просто введите его идентификатор федеративного облачного хранилища в диалоге предоставления общего доступа. Идектификатор указывается в виде «person@cloud.example.com».", "Your Federated Cloud ID:" : "Ваш ID в федерации облачных хранилищ:", - "Share it:" : "Поделиться:", + "Share it so your friends can share files with you:" : "Сообщите его друзьям, что бы они могли поделиться с вами файлами:", "Add to your website" : "Добавить к себе на сайт", "Share with me via Nextcloud" : "Поделитесь со мной через Nextcloud", "HTML Code:" : "HTML код:", - "Search global and public address book for users" : "Искать пользователей в глобальной и открытой адресной книге" + "Search global and public address book for users" : "Искать пользователей в глобальной и открытой адресной книге", + "Share it:" : "Поделиться:" }, "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); diff --git a/apps/federatedfilesharing/l10n/ru.json b/apps/federatedfilesharing/l10n/ru.json index c6b337ff03b..ac61835fbec 100644 --- a/apps/federatedfilesharing/l10n/ru.json +++ b/apps/federatedfilesharing/l10n/ru.json @@ -35,18 +35,22 @@ "Decline" : "Отклонить", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ, смотрите %s", "Share with me through my #Nextcloud Federated Cloud ID" : "Поделитесь со мной через мой #Nextcloud ID в федерации облачных хранилищ", + "Federated file sharing" : "Федеративный обмен файлами", "Federated Cloud Sharing" : "Федерация облачных хранилищ", "Open documentation" : "Открыть документацию", + "Adjust how people can share between servers." : "Настройте общий доступ между серверами.", "Allow users on this server to send shares to other servers" : "Разрешить пользователям делиться с пользователями других серверов", "Allow users on this server to receive shares from other servers" : "Разрешить пользователям использовать общие ресурсы с других серверов", "Search global and public address book for users and let local users publish their data" : "Поиск пользователей в глобальной и общедоступной адресной книге и резрешение публикации своих данных локальным пользователям ", "Allow users to publish their data to a global and public address book" : "Резрешить пользователям публиковать свои данные в глобальной и общедосупной адресной книге", "Federated Cloud" : "Федерация облачных хранилищ", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Можно поделиться с любым пользователем Nextcloud, ownCloud или Pydio! Просто введите его идентификатор федеративного облачного хранилища в диалоге предоставления общего доступа. Идектификатор указывается в виде «person@cloud.example.com».", "Your Federated Cloud ID:" : "Ваш ID в федерации облачных хранилищ:", - "Share it:" : "Поделиться:", + "Share it so your friends can share files with you:" : "Сообщите его друзьям, что бы они могли поделиться с вами файлами:", "Add to your website" : "Добавить к себе на сайт", "Share with me via Nextcloud" : "Поделитесь со мной через Nextcloud", "HTML Code:" : "HTML код:", - "Search global and public address book for users" : "Искать пользователей в глобальной и открытой адресной книге" + "Search global and public address book for users" : "Искать пользователей в глобальной и открытой адресной книге", + "Share it:" : "Поделиться:" },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/sq.js b/apps/federatedfilesharing/l10n/sq.js index a0c70b3cced..ca6f9791ea0 100644 --- a/apps/federatedfilesharing/l10n/sq.js +++ b/apps/federatedfilesharing/l10n/sq.js @@ -37,9 +37,9 @@ OC.L10N.register( "Allow users on this server to receive shares from other servers" : "Lejoju përdoruesve në këtë shërbyes të marrin ndarje nga shërbyes të tjerë", "Federated Cloud" : "Re e Federuar", "Your Federated Cloud ID:" : "ID-ja juaj për Re të Federuar:", - "Share it:" : "Ndajeni:", "Add to your website" : "Shtojeni te sajti juaj", "Share with me via Nextcloud" : "Ndani me mua përmes Nextcloud-it", - "HTML Code:" : "Kod HTML:" + "HTML Code:" : "Kod HTML:", + "Share it:" : "Ndajeni:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/sq.json b/apps/federatedfilesharing/l10n/sq.json index 355b83e85a4..6c83b6e5b64 100644 --- a/apps/federatedfilesharing/l10n/sq.json +++ b/apps/federatedfilesharing/l10n/sq.json @@ -35,9 +35,9 @@ "Allow users on this server to receive shares from other servers" : "Lejoju përdoruesve në këtë shërbyes të marrin ndarje nga shërbyes të tjerë", "Federated Cloud" : "Re e Federuar", "Your Federated Cloud ID:" : "ID-ja juaj për Re të Federuar:", - "Share it:" : "Ndajeni:", "Add to your website" : "Shtojeni te sajti juaj", "Share with me via Nextcloud" : "Ndani me mua përmes Nextcloud-it", - "HTML Code:" : "Kod HTML:" + "HTML Code:" : "Kod HTML:", + "Share it:" : "Ndajeni:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/sv.js b/apps/federatedfilesharing/l10n/sv.js index a3851e6b82b..6921ab5d30d 100644 --- a/apps/federatedfilesharing/l10n/sv.js +++ b/apps/federatedfilesharing/l10n/sv.js @@ -43,10 +43,10 @@ OC.L10N.register( "Allow users on this server to receive shares from other servers" : "Tillåt användare på denna servern att ta emot utdelningar från andra servrar", "Federated Cloud" : "Federerat Moln", "Your Federated Cloud ID:" : "Ditt Federerade Moln-ID:", - "Share it:" : "Dela detta:", "Add to your website" : "Lägg till på din hemsida", "Share with me via Nextcloud" : "Dela med mig via Nextcloud", "HTML Code:" : "HTML Kod:", - "Search global and public address book for users" : "Sök global och offentlig adressbok för användare" + "Search global and public address book for users" : "Sök global och offentlig adressbok för användare", + "Share it:" : "Dela detta:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/sv.json b/apps/federatedfilesharing/l10n/sv.json index 02fc7d82b07..f4ebd245e16 100644 --- a/apps/federatedfilesharing/l10n/sv.json +++ b/apps/federatedfilesharing/l10n/sv.json @@ -41,10 +41,10 @@ "Allow users on this server to receive shares from other servers" : "Tillåt användare på denna servern att ta emot utdelningar från andra servrar", "Federated Cloud" : "Federerat Moln", "Your Federated Cloud ID:" : "Ditt Federerade Moln-ID:", - "Share it:" : "Dela detta:", "Add to your website" : "Lägg till på din hemsida", "Share with me via Nextcloud" : "Dela med mig via Nextcloud", "HTML Code:" : "HTML Kod:", - "Search global and public address book for users" : "Sök global och offentlig adressbok för användare" + "Search global and public address book for users" : "Sök global och offentlig adressbok för användare", + "Share it:" : "Dela detta:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/tr.js b/apps/federatedfilesharing/l10n/tr.js index c1d9a655557..830f1faeba1 100644 --- a/apps/federatedfilesharing/l10n/tr.js +++ b/apps/federatedfilesharing/l10n/tr.js @@ -37,18 +37,22 @@ OC.L10N.register( "Decline" : "Reddet", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "#Nextcloud Birleşmiş Bulut Kimliğim ile paylaş, %s bölümüne bakın", "Share with me through my #Nextcloud Federated Cloud ID" : "#Nextcloud Birleşmiş Bulut kimliğim üzerinden benimle paylaş", + "Federated file sharing" : "Birleşmiş dosya paylaşımı", "Federated Cloud Sharing" : "Birleşmiş Bulut Paylaşımı", "Open documentation" : "Belgeleri aç", + "Adjust how people can share between servers." : "Kişilerin sunucular arasında nasıl paylaşım yapabileceğini ayarlayın.", "Allow users on this server to send shares to other servers" : "Bu sunucudaki kullanıcılar diğer sunuculara paylaşım gönderebilsin", "Allow users on this server to receive shares from other servers" : "Bu sunucudaki kullanıcılar diğer sunuculardan paylaşım alabilsin", "Search global and public address book for users and let local users publish their data" : "Genel ve herkese açık adres defterinde kullanıcı ara ve yerel kullanıcıların bilgilerini paylaşmasını sağla", "Allow users to publish their data to a global and public address book" : "Kullanıcıların bilgilerini genel ve herkese açık bir adres defterinde paylaşabilsin", "Federated Cloud" : "Birleşmiş Bulut", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud, ownCloud ya da Pydio kullanıcıları ile paylaşım yapılaiblir. Yalnızca paylaşım penceresine person@cloud.example.com gibi Birleşmiş Bulut kodunu yazın.", "Your Federated Cloud ID:" : "Birleşmiş Bulut Kimliğiniz:", - "Share it:" : "Paylaşın:", + "Share it so your friends can share files with you:" : "Paylaşın, böylece arkadaşlarınız da sizinle dosya paylaşabilir:", "Add to your website" : "Web sitenize ekleyin", "Share with me via Nextcloud" : "Benimle Nextcloud üzerinden paylaşın", "HTML Code:" : "HTML Kodu:", - "Search global and public address book for users" : "Genel ve herkese açık adres defterinde kullanıcı ara" + "Search global and public address book for users" : "Genel ve herkese açık adres defterinde kullanıcı ara", + "Share it:" : "Paylaşın:" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federatedfilesharing/l10n/tr.json b/apps/federatedfilesharing/l10n/tr.json index c9969087598..6eb0738cf6e 100644 --- a/apps/federatedfilesharing/l10n/tr.json +++ b/apps/federatedfilesharing/l10n/tr.json @@ -35,18 +35,22 @@ "Decline" : "Reddet", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "#Nextcloud Birleşmiş Bulut Kimliğim ile paylaş, %s bölümüne bakın", "Share with me through my #Nextcloud Federated Cloud ID" : "#Nextcloud Birleşmiş Bulut kimliğim üzerinden benimle paylaş", + "Federated file sharing" : "Birleşmiş dosya paylaşımı", "Federated Cloud Sharing" : "Birleşmiş Bulut Paylaşımı", "Open documentation" : "Belgeleri aç", + "Adjust how people can share between servers." : "Kişilerin sunucular arasında nasıl paylaşım yapabileceğini ayarlayın.", "Allow users on this server to send shares to other servers" : "Bu sunucudaki kullanıcılar diğer sunuculara paylaşım gönderebilsin", "Allow users on this server to receive shares from other servers" : "Bu sunucudaki kullanıcılar diğer sunuculardan paylaşım alabilsin", "Search global and public address book for users and let local users publish their data" : "Genel ve herkese açık adres defterinde kullanıcı ara ve yerel kullanıcıların bilgilerini paylaşmasını sağla", "Allow users to publish their data to a global and public address book" : "Kullanıcıların bilgilerini genel ve herkese açık bir adres defterinde paylaşabilsin", "Federated Cloud" : "Birleşmiş Bulut", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud, ownCloud ya da Pydio kullanıcıları ile paylaşım yapılaiblir. Yalnızca paylaşım penceresine person@cloud.example.com gibi Birleşmiş Bulut kodunu yazın.", "Your Federated Cloud ID:" : "Birleşmiş Bulut Kimliğiniz:", - "Share it:" : "Paylaşın:", + "Share it so your friends can share files with you:" : "Paylaşın, böylece arkadaşlarınız da sizinle dosya paylaşabilir:", "Add to your website" : "Web sitenize ekleyin", "Share with me via Nextcloud" : "Benimle Nextcloud üzerinden paylaşın", "HTML Code:" : "HTML Kodu:", - "Search global and public address book for users" : "Genel ve herkese açık adres defterinde kullanıcı ara" + "Search global and public address book for users" : "Genel ve herkese açık adres defterinde kullanıcı ara", + "Share it:" : "Paylaşın:" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/zh_CN.js b/apps/federatedfilesharing/l10n/zh_CN.js index 82976dcb250..4eabd0cdbfa 100644 --- a/apps/federatedfilesharing/l10n/zh_CN.js +++ b/apps/federatedfilesharing/l10n/zh_CN.js @@ -37,16 +37,22 @@ OC.L10N.register( "Decline" : "拒绝", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "通过我的联合云ID,分享给我,看%s", "Share with me through my #Nextcloud Federated Cloud ID" : "通过我的#Nextcloud联合云ID与我共享", + "Federated file sharing" : "联合文件共享", "Federated Cloud Sharing" : "联合云共享", "Open documentation" : "打开文档", + "Adjust how people can share between servers." : "调整人们如何在服务器之间共享。", "Allow users on this server to send shares to other servers" : "允许用户分享文件给其他服务器上的用户", "Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享", + "Search global and public address book for users and let local users publish their data" : "搜索用户的全球和公共通讯录,并让本地用户发布其数据", + "Allow users to publish their data to a global and public address book" : "允许用户将其数据发布到全球和公共通讯录", "Federated Cloud" : "联合云", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以与任何使用Nextcloud,ownCloud或Pydio的人分享! 只需将它们的联合云ID放在共享对话框中。 看起来像person@cloud.example.com", "Your Federated Cloud ID:" : "你的联合云ID:", - "Share it:" : "分享它:", + "Share it so your friends can share files with you:" : "使用分享,以便您的朋友可以与您共享文件:", "Add to your website" : "添加到您的网站", "Share with me via Nextcloud" : "通过联合云与我共享", "HTML Code:" : "HTML 代码:", - "Search global and public address book for users" : "在全局和公开地址簿中寻找用户" + "Search global and public address book for users" : "在全局和公开地址簿中寻找用户", + "Share it:" : "分享它:" }, "nplurals=1; plural=0;"); diff --git a/apps/federatedfilesharing/l10n/zh_CN.json b/apps/federatedfilesharing/l10n/zh_CN.json index b173ada4d53..14508ed998d 100644 --- a/apps/federatedfilesharing/l10n/zh_CN.json +++ b/apps/federatedfilesharing/l10n/zh_CN.json @@ -35,16 +35,22 @@ "Decline" : "拒绝", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "通过我的联合云ID,分享给我,看%s", "Share with me through my #Nextcloud Federated Cloud ID" : "通过我的#Nextcloud联合云ID与我共享", + "Federated file sharing" : "联合文件共享", "Federated Cloud Sharing" : "联合云共享", "Open documentation" : "打开文档", + "Adjust how people can share between servers." : "调整人们如何在服务器之间共享。", "Allow users on this server to send shares to other servers" : "允许用户分享文件给其他服务器上的用户", "Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享", + "Search global and public address book for users and let local users publish their data" : "搜索用户的全球和公共通讯录,并让本地用户发布其数据", + "Allow users to publish their data to a global and public address book" : "允许用户将其数据发布到全球和公共通讯录", "Federated Cloud" : "联合云", + "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "您可以与任何使用Nextcloud,ownCloud或Pydio的人分享! 只需将它们的联合云ID放在共享对话框中。 看起来像person@cloud.example.com", "Your Federated Cloud ID:" : "你的联合云ID:", - "Share it:" : "分享它:", + "Share it so your friends can share files with you:" : "使用分享,以便您的朋友可以与您共享文件:", "Add to your website" : "添加到您的网站", "Share with me via Nextcloud" : "通过联合云与我共享", "HTML Code:" : "HTML 代码:", - "Search global and public address book for users" : "在全局和公开地址簿中寻找用户" + "Search global and public address book for users" : "在全局和公开地址簿中寻找用户", + "Share it:" : "分享它:" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/templates/settings-admin.php b/apps/federatedfilesharing/templates/settings-admin.php index 7343a867d53..ff5cb0084e5 100644 --- a/apps/federatedfilesharing/templates/settings-admin.php +++ b/apps/federatedfilesharing/templates/settings-admin.php @@ -9,6 +9,8 @@ script('federatedfilesharing', 'settings-admin'); <a target="_blank" rel="noreferrer" class="icon-info svg" title="<?php p($l->t('Open documentation'));?>" href="<?php p(link_to_docs('admin-sharing-federated')); ?>"></a> + <p class="settings-hint"><?php p($l->t('Adjust how people can share between servers.')); ?></p> + <p> <input type="checkbox" name="outgoing_server2server_share_enabled" id="outgoingServer2serverShareEnabled" class="checkbox" value="1" <?php if ($_['outgoingServer2serverShareEnabled']) print_unescaped('checked="checked"'); ?> /> diff --git a/apps/federatedfilesharing/templates/settings-personal.php b/apps/federatedfilesharing/templates/settings-personal.php index 98a1cd7f751..126daae27d0 100644 --- a/apps/federatedfilesharing/templates/settings-personal.php +++ b/apps/federatedfilesharing/templates/settings-personal.php @@ -8,6 +8,7 @@ style('federatedfilesharing', 'settings-personal'); <?php if ($_['outgoingServer2serverShareEnabled']): ?> <div id="fileSharingSettings" class="section"> <h2><?php p($l->t('Federated Cloud')); ?></h2> + <p class="settings-hint"><?php p($l->t('You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com')); ?></p> <p> <?php p($l->t('Your Federated Cloud ID:')); ?> @@ -19,7 +20,7 @@ style('federatedfilesharing', 'settings-personal'); <?php if ($_['showShareIT']) {?> <p> - <?php p($l->t('Share it:')); ?><br> + <?php p($l->t('Share it so your friends can share files with you:')); ?><br> <button class="social-facebook pop-up" data-url='https://www.facebook.com/sharer/sharer.php?u=<?php p(urlencode($_['reference'])); ?>'> Facebook diff --git a/apps/federation/l10n/ast.js b/apps/federation/l10n/ast.js new file mode 100644 index 00000000000..feb4e215825 --- /dev/null +++ b/apps/federation/l10n/ast.js @@ -0,0 +1,15 @@ +OC.L10N.register( + "federation", + { + "Added to the list of trusted servers" : "Amestóse al llistáu de sirvidores d'enfotu", + "Server is already in the list of trusted servers." : "El sirvidor yá ta nel llistáu de sirvidores d'enfotu.", + "No server to federate with found" : "Nun s'alcontró dengún sirvidor col que federase", + "Could not add server" : "Nun pudo amestase'l sirvidor", + "Federation" : "Federación", + "Trusted servers" : "Sirvidores d'enfotu", + "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." : "La federación permítete coneutar con otros sirvidores d'enfotu pa intercambiar el direutoriu d'usuarios. Por exemplu, esto usaráse p'auto-completar usuarios esternos y compatir de mou federáu.", + "+ Add trusted server" : "+ Amestar sirvidor d'enfotu", + "Trusted server" : "Sirvidor d'enfotu", + "Add" : "Amestar" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/ast.json b/apps/federation/l10n/ast.json new file mode 100644 index 00000000000..5758c29e00f --- /dev/null +++ b/apps/federation/l10n/ast.json @@ -0,0 +1,13 @@ +{ "translations": { + "Added to the list of trusted servers" : "Amestóse al llistáu de sirvidores d'enfotu", + "Server is already in the list of trusted servers." : "El sirvidor yá ta nel llistáu de sirvidores d'enfotu.", + "No server to federate with found" : "Nun s'alcontró dengún sirvidor col que federase", + "Could not add server" : "Nun pudo amestase'l sirvidor", + "Federation" : "Federación", + "Trusted servers" : "Sirvidores d'enfotu", + "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." : "La federación permítete coneutar con otros sirvidores d'enfotu pa intercambiar el direutoriu d'usuarios. Por exemplu, esto usaráse p'auto-completar usuarios esternos y compatir de mou federáu.", + "+ Add trusted server" : "+ Amestar sirvidor d'enfotu", + "Trusted server" : "Sirvidor d'enfotu", + "Add" : "Amestar" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/federation/l10n/ca.js b/apps/federation/l10n/ca.js index 9ac7ed3f641..239de6dcbcf 100644 --- a/apps/federation/l10n/ca.js +++ b/apps/federation/l10n/ca.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "El servidor ja està a la llista de servidors de confiança", "No server to federate with found" : "No s\\'ha trobar cap servidor federat", "Could not add server" : "No s'ha pogut afegir el servidor", + "Federation" : "Federació", "Trusted servers" : "Servidor de confiança", "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." : "La federació li permet connectar amb altres servidors de confiança per a intercanviar directoris d\\'usuari. Per exemple, això s\\'utilitzarà per als usuaris externs d'auto-completat per a l\\'ús compartit federat.", "Add server automatically once a federated share was created successfully" : "Afegir servidor automàticament quan s'hagi creat una federació correctament", "+ Add trusted server" : "+Afegir servidor de confiança", "Trusted server" : "Servidor de confiança", - "Add" : "Afegir", - "Federation" : "Federació" + "Add" : "Afegir" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/ca.json b/apps/federation/l10n/ca.json index a6b26b0d840..045e4bc9e1c 100644 --- a/apps/federation/l10n/ca.json +++ b/apps/federation/l10n/ca.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "El servidor ja està a la llista de servidors de confiança", "No server to federate with found" : "No s\\'ha trobar cap servidor federat", "Could not add server" : "No s'ha pogut afegir el servidor", + "Federation" : "Federació", "Trusted servers" : "Servidor de confiança", "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." : "La federació li permet connectar amb altres servidors de confiança per a intercanviar directoris d\\'usuari. Per exemple, això s\\'utilitzarà per als usuaris externs d'auto-completat per a l\\'ús compartit federat.", "Add server automatically once a federated share was created successfully" : "Afegir servidor automàticament quan s'hagi creat una federació correctament", "+ Add trusted server" : "+Afegir servidor de confiança", "Trusted server" : "Servidor de confiança", - "Add" : "Afegir", - "Federation" : "Federació" + "Add" : "Afegir" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/cs.js b/apps/federation/l10n/cs.js index 34190bbe010..8de9a1f9a1c 100644 --- a/apps/federation/l10n/cs.js +++ b/apps/federation/l10n/cs.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Server je již přidán na seznam důvěryhodných serverů.", "No server to federate with found" : "Nenalezen žádný server ke sdružování", "Could not add server" : "Nepodařilo se přidat server", + "Federation" : "Sdružování", "Trusted servers" : "Důvěryhodné servery", "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." : "Sdružování vám umožňuje se připojit k dalším důvěryhodným serverům za účelem výměny uživatelských adresářů. Používá se to např. pro automatické doplňování uživatelů při sdruženém sdílení.", "Add server automatically once a federated share was created successfully" : "Přidat server automaticky jakmile je úspěšně vytvořeno sdružené sdílení", "+ Add trusted server" : "+ Přidat důvěryhodný server", "Trusted server" : "Důvěryhodný server", - "Add" : "Přidat", - "Federation" : "Sdružování" + "Add" : "Přidat" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/federation/l10n/cs.json b/apps/federation/l10n/cs.json index 05da0723c41..9b681630906 100644 --- a/apps/federation/l10n/cs.json +++ b/apps/federation/l10n/cs.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Server je již přidán na seznam důvěryhodných serverů.", "No server to federate with found" : "Nenalezen žádný server ke sdružování", "Could not add server" : "Nepodařilo se přidat server", + "Federation" : "Sdružování", "Trusted servers" : "Důvěryhodné servery", "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." : "Sdružování vám umožňuje se připojit k dalším důvěryhodným serverům za účelem výměny uživatelských adresářů. Používá se to např. pro automatické doplňování uživatelů při sdruženém sdílení.", "Add server automatically once a federated share was created successfully" : "Přidat server automaticky jakmile je úspěšně vytvořeno sdružené sdílení", "+ Add trusted server" : "+ Přidat důvěryhodný server", "Trusted server" : "Důvěryhodný server", - "Add" : "Přidat", - "Federation" : "Sdružování" + "Add" : "Přidat" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/federation/l10n/de.js b/apps/federation/l10n/de.js index e286b193091..2b476b94c95 100644 --- a/apps/federation/l10n/de.js +++ b/apps/federation/l10n/de.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Der Server ist bereits in der Liste der vertrauenswürdigen Server.", "No server to federate with found" : "Es wurde kein Server zum Verbinden per Federation gefunden", "Could not add server" : "Konnte Server nicht hinzufügen", + "Federation" : "Federation", "Trusted servers" : "Vertrauenswürdige Server", "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." : "Federation erlaubt es Dir, Dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.", "Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", - "Add" : "Hinzufügen", - "Federation" : "Federation" + "Add" : "Hinzufügen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/de.json b/apps/federation/l10n/de.json index 1ab888f3d2e..2c37fc10fa2 100644 --- a/apps/federation/l10n/de.json +++ b/apps/federation/l10n/de.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Der Server ist bereits in der Liste der vertrauenswürdigen Server.", "No server to federate with found" : "Es wurde kein Server zum Verbinden per Federation gefunden", "Could not add server" : "Konnte Server nicht hinzufügen", + "Federation" : "Federation", "Trusted servers" : "Vertrauenswürdige Server", "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." : "Federation erlaubt es Dir, Dich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.", "Add server automatically once a federated share was created successfully" : "Einen mit ownCloud Federation verbundenen Server automatisch hinzufügen, sobald die Verbindung einmal erfolgreich erstellt wurde", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", - "Add" : "Hinzufügen", - "Federation" : "Federation" + "Add" : "Hinzufügen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/de_DE.js b/apps/federation/l10n/de_DE.js index 21e394f726a..1a8bef05ae9 100644 --- a/apps/federation/l10n/de_DE.js +++ b/apps/federation/l10n/de_DE.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Server ist bereits in der Liste der vertrauenswürdigen Servern.", "No server to federate with found" : "Es wurde kein Server zum Verbinden per Federation gefunden", "Could not add server" : "Konnte Server nicht hinzufügen", + "Federation" : "Federation", "Trusted servers" : "Vertrauenswürdige Server", "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." : "Federation erlaubt es Ihnen, sich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.", "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobald eine federated Freigabe erstellt wurde", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", - "Add" : "Hinzufügen", - "Federation" : "Federation" + "Add" : "Hinzufügen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/de_DE.json b/apps/federation/l10n/de_DE.json index 9e0212f5c23..c9b54c5f893 100644 --- a/apps/federation/l10n/de_DE.json +++ b/apps/federation/l10n/de_DE.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Server ist bereits in der Liste der vertrauenswürdigen Servern.", "No server to federate with found" : "Es wurde kein Server zum Verbinden per Federation gefunden", "Could not add server" : "Konnte Server nicht hinzufügen", + "Federation" : "Federation", "Trusted servers" : "Vertrauenswürdige Server", "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." : "Federation erlaubt es Ihnen, sich mit anderen vertrauenswürdigen Servern zu verbinden, um das Benutzerverzeichnis auszutauschen. Dies wird zum Beispiel für die automatische Vervollständigung externer Benutzernamen beim Federated-Sharing verwendet.", "Add server automatically once a federated share was created successfully" : "Server automatisch hinzufügen sobald eine federated Freigabe erstellt wurde", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", - "Add" : "Hinzufügen", - "Federation" : "Federation" + "Add" : "Hinzufügen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/el.js b/apps/federation/l10n/el.js index 02680613d43..2f1a5a6178e 100644 --- a/apps/federation/l10n/el.js +++ b/apps/federation/l10n/el.js @@ -5,10 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Ο διακομιστής περιλαμβάνεται ήδη στην λίστα των έμπιστων ownCloud", "No server to federate with found" : "Δεν βρέθηκε διακομιστής για συνένωση", "Could not add server" : "Αδυναμία προσθήκης διακομιστή", + "Federation" : "Federation", "Trusted servers" : "Έμπιστοι διακομιστές", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Η Ομοσπονδία σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.", + "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια ενοποιημένη κοινή χρήση", "+ Add trusted server" : "+Προσθήκη έμπιστων διακομιστών", "Trusted server" : "Έμπιστοι διακομιστές", - "Add" : "Προσθήκη", - "Federation" : "Federation" + "Add" : "Προσθήκη" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/el.json b/apps/federation/l10n/el.json index f6ff9759777..5de95089e47 100644 --- a/apps/federation/l10n/el.json +++ b/apps/federation/l10n/el.json @@ -3,10 +3,12 @@ "Server is already in the list of trusted servers." : "Ο διακομιστής περιλαμβάνεται ήδη στην λίστα των έμπιστων ownCloud", "No server to federate with found" : "Δεν βρέθηκε διακομιστής για συνένωση", "Could not add server" : "Αδυναμία προσθήκης διακομιστή", + "Federation" : "Federation", "Trusted servers" : "Έμπιστοι διακομιστές", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Η Ομοσπονδία σας επιτρέπει να συνδεθείτε με άλλους αξιόπιστους διακομιστές για να ανταλλάξετε τον κατάλογο χρηστών. Για παράδειγμα, αυτό θα χρησιμοποιηθεί για την αυτόματη συμπλήρωση εξωτερικών χρηστών για ομαδική κοινή χρήση.", + "Add server automatically once a federated share was created successfully" : "Προσθέστε αυτόματα το διακομιστή μόλις δημιουργηθεί με επιτυχία μια ενοποιημένη κοινή χρήση", "+ Add trusted server" : "+Προσθήκη έμπιστων διακομιστών", "Trusted server" : "Έμπιστοι διακομιστές", - "Add" : "Προσθήκη", - "Federation" : "Federation" + "Add" : "Προσθήκη" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/es.js b/apps/federation/l10n/es.js index dd81ea6e385..90ffc965f11 100644 --- a/apps/federation/l10n/es.js +++ b/apps/federation/l10n/es.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "El servidor ya está en la lista de servidores en los que se confía.", "No server to federate with found" : "No se ha encontrado ningún servidor con el que federarse.", "Could not add server" : "No se ha podido añadir el servidor", + "Federation" : "Federación", "Trusted servers" : "Servidores de confianza", "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." : "La federación te permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, ésto se usará para autocompletar la selección usuarios externos al compartir en federación. ", "Add server automatically once a federated share was created successfully" : "Añadir el servidor automáticamente una vez que un compartido federado se haya creado exitosamente", "+ Add trusted server" : "+ Añadir servidor de confianza", "Trusted server" : "Servidor de confianza", - "Add" : "Añadir", - "Federation" : "Federación" + "Add" : "Añadir" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/es.json b/apps/federation/l10n/es.json index ddd5791586b..ab7d0817b3f 100644 --- a/apps/federation/l10n/es.json +++ b/apps/federation/l10n/es.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "El servidor ya está en la lista de servidores en los que se confía.", "No server to federate with found" : "No se ha encontrado ningún servidor con el que federarse.", "Could not add server" : "No se ha podido añadir el servidor", + "Federation" : "Federación", "Trusted servers" : "Servidores de confianza", "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." : "La federación te permite conectarte con otros servidores de confianza para intercambiar directorios. Por ejemplo, ésto se usará para autocompletar la selección usuarios externos al compartir en federación. ", "Add server automatically once a federated share was created successfully" : "Añadir el servidor automáticamente una vez que un compartido federado se haya creado exitosamente", "+ Add trusted server" : "+ Añadir servidor de confianza", "Trusted server" : "Servidor de confianza", - "Add" : "Añadir", - "Federation" : "Federación" + "Add" : "Añadir" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/es_MX.js b/apps/federation/l10n/es_MX.js index fa327fc7f10..af694d9d03c 100644 --- a/apps/federation/l10n/es_MX.js +++ b/apps/federation/l10n/es_MX.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "El servidor ya se encuentra en la lista de servidores de confianza.", "No server to federate with found" : "No se encontraron servidores para integrar a la federación", "Could not add server" : "No fue posible agregar el servidor", + "Federation" : "Federación", "Trusted servers" : "Servidores de confianza", "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." : "La federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios. Por ejemplo, esto se usará para auto-completar usuarios externos en el recurso compartido federado.", "Add server automatically once a federated share was created successfully" : "Agregar el servidor automáticamente una vez que se genere exitosamente el elemento compartido federado", "+ Add trusted server" : "+ Agregar servidor de confianza", "Trusted server" : "Servidor de confianza", - "Add" : "Agregar", - "Federation" : "Federación" + "Add" : "Agregar" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/es_MX.json b/apps/federation/l10n/es_MX.json index d484a9e5897..67d8edb6053 100644 --- a/apps/federation/l10n/es_MX.json +++ b/apps/federation/l10n/es_MX.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "El servidor ya se encuentra en la lista de servidores de confianza.", "No server to federate with found" : "No se encontraron servidores para integrar a la federación", "Could not add server" : "No fue posible agregar el servidor", + "Federation" : "Federación", "Trusted servers" : "Servidores de confianza", "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." : "La federación le permite conectarse con otros servidores de confianza para intercambiar el directorio de usuarios. Por ejemplo, esto se usará para auto-completar usuarios externos en el recurso compartido federado.", "Add server automatically once a federated share was created successfully" : "Agregar el servidor automáticamente una vez que se genere exitosamente el elemento compartido federado", "+ Add trusted server" : "+ Agregar servidor de confianza", "Trusted server" : "Servidor de confianza", - "Add" : "Agregar", - "Federation" : "Federación" + "Add" : "Agregar" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/fi.js b/apps/federation/l10n/fi.js index 3eb39aa5004..22259950477 100644 --- a/apps/federation/l10n/fi.js +++ b/apps/federation/l10n/fi.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Palvelin on jo luotettujen palvelimien luettelossa.", "No server to federate with found" : "Palvelinta, johon liittyä, ei löytynyt", "Could not add server" : "Palvelimen lisääminen ei onnistunut", + "Federation" : "Federaatio", "Trusted servers" : "Luotetut palvelimet", "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." : "Federointi sallii sinun liittyä toisten luotettujen palvelimien käyttäjäluetteloihin. Sitä käytetään esimerkiksi ulkoisten käyttäjänimien automaattiseen täydentämiseen.", "Add server automatically once a federated share was created successfully" : "Lisää palvelin automaattisesti, kun federoitu jako on luotu onnistuneesti", "+ Add trusted server" : "+ Lisää luotettu palvelin", "Trusted server" : "Luotettu palvelin", - "Add" : "Lisää", - "Federation" : "Federaatio" + "Add" : "Lisää" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/fi.json b/apps/federation/l10n/fi.json index 367fb5fe1b3..3addcf72669 100644 --- a/apps/federation/l10n/fi.json +++ b/apps/federation/l10n/fi.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Palvelin on jo luotettujen palvelimien luettelossa.", "No server to federate with found" : "Palvelinta, johon liittyä, ei löytynyt", "Could not add server" : "Palvelimen lisääminen ei onnistunut", + "Federation" : "Federaatio", "Trusted servers" : "Luotetut palvelimet", "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." : "Federointi sallii sinun liittyä toisten luotettujen palvelimien käyttäjäluetteloihin. Sitä käytetään esimerkiksi ulkoisten käyttäjänimien automaattiseen täydentämiseen.", "Add server automatically once a federated share was created successfully" : "Lisää palvelin automaattisesti, kun federoitu jako on luotu onnistuneesti", "+ Add trusted server" : "+ Lisää luotettu palvelin", "Trusted server" : "Luotettu palvelin", - "Add" : "Lisää", - "Federation" : "Federaatio" + "Add" : "Lisää" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/fr.js b/apps/federation/l10n/fr.js index d67862f6a01..eb78c28454c 100644 --- a/apps/federation/l10n/fr.js +++ b/apps/federation/l10n/fr.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Le serveur est déjà dans la liste des serveurs de confiance.", "No server to federate with found" : "Aucun serveur avec lequel fédérer n'a été trouvé", "Could not add server" : "Impossible d'ajouter le serveur", + "Federation" : "Fédération", "Trusted servers" : "Serveurs de confiance", "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." : "La « fédération » vous permet de vous connecter avec d'autres serveurs de confiance pour échanger la liste des utilisateurs. Par exemple, ce sera utilisé pour auto-compléter les utilisateurs externes lors du partage fédéré.", "Add server automatically once a federated share was created successfully" : "Ajouter un serveur automatiquement une fois que le partage a été créé avec succès", "+ Add trusted server" : "+ Ajouter un serveur de confiance", "Trusted server" : "Serveur de confiance", - "Add" : "Ajouter", - "Federation" : "Fédération" + "Add" : "Ajouter" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federation/l10n/fr.json b/apps/federation/l10n/fr.json index 24dc0aee7f6..1360d61a6bc 100644 --- a/apps/federation/l10n/fr.json +++ b/apps/federation/l10n/fr.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Le serveur est déjà dans la liste des serveurs de confiance.", "No server to federate with found" : "Aucun serveur avec lequel fédérer n'a été trouvé", "Could not add server" : "Impossible d'ajouter le serveur", + "Federation" : "Fédération", "Trusted servers" : "Serveurs de confiance", "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." : "La « fédération » vous permet de vous connecter avec d'autres serveurs de confiance pour échanger la liste des utilisateurs. Par exemple, ce sera utilisé pour auto-compléter les utilisateurs externes lors du partage fédéré.", "Add server automatically once a federated share was created successfully" : "Ajouter un serveur automatiquement une fois que le partage a été créé avec succès", "+ Add trusted server" : "+ Ajouter un serveur de confiance", "Trusted server" : "Serveur de confiance", - "Add" : "Ajouter", - "Federation" : "Fédération" + "Add" : "Ajouter" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/hu.js b/apps/federation/l10n/hu.js index 06f9679fc24..70a86b87b27 100644 --- a/apps/federation/l10n/hu.js +++ b/apps/federation/l10n/hu.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "A szerver már a megbízható szerverek közt van.", "No server to federate with found" : "Nem található egyesíthető szerver", "Could not add server" : "Nem lehet hozzáadni a szervert", + "Federation" : "Egyesítés", "Trusted servers" : "Megbízható szerverek", "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." : "Az egyesítés lehetővé teszi a kapcsolódást más megbízható szerverekhez a felhasználói könyvtárak kicseréléséhez. Például ennek segítségével lesznek automatikusan kiegészítve a külső felhasználók az egyesített megosztáshoz.", "Add server automatically once a federated share was created successfully" : "Szerver automatikus hozzáadása, ha az egyesített megosztás létrehozása sikeres", "+ Add trusted server" : "+ Megbízható szerver hozzáadása", "Trusted server" : "Megbízható szerver", - "Add" : "Hozzáadás", - "Federation" : "Egyesítés" + "Add" : "Hozzáadás" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/hu.json b/apps/federation/l10n/hu.json index af24f197c19..49c8d704a7f 100644 --- a/apps/federation/l10n/hu.json +++ b/apps/federation/l10n/hu.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "A szerver már a megbízható szerverek közt van.", "No server to federate with found" : "Nem található egyesíthető szerver", "Could not add server" : "Nem lehet hozzáadni a szervert", + "Federation" : "Egyesítés", "Trusted servers" : "Megbízható szerverek", "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." : "Az egyesítés lehetővé teszi a kapcsolódást más megbízható szerverekhez a felhasználói könyvtárak kicseréléséhez. Például ennek segítségével lesznek automatikusan kiegészítve a külső felhasználók az egyesített megosztáshoz.", "Add server automatically once a federated share was created successfully" : "Szerver automatikus hozzáadása, ha az egyesített megosztás létrehozása sikeres", "+ Add trusted server" : "+ Megbízható szerver hozzáadása", "Trusted server" : "Megbízható szerver", - "Add" : "Hozzáadás", - "Federation" : "Egyesítés" + "Add" : "Hozzáadás" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/ia.js b/apps/federation/l10n/ia.js index 889d305cb5d..07b3066be14 100644 --- a/apps/federation/l10n/ia.js +++ b/apps/federation/l10n/ia.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Servitor ja es in le lista de servitores fiduciari.", "No server to federate with found" : "Nulle servitor pro associar se per federation esseva trovate", "Could not add server" : "Impossibile adder le servitor", + "Federation" : "Federation", "Trusted servers" : "Servitores fiduciari", "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." : "Le federation permitte te connecter con altere servitores fiduciari pro excambiar le directorio del usator. Per exemplo, iste attributo essera usate pro completar automaticamente usatores externe pro le compartimento federate.", "Add server automatically once a federated share was created successfully" : "Le functionalitate de adder un servitor automaticamente un vice que un compartimento federate es associate esseva create con successo", "+ Add trusted server" : "+ Adder servitor fiduciari", "Trusted server" : "Servitor fiduciari", - "Add" : "Adder", - "Federation" : "Federation" + "Add" : "Adder" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/ia.json b/apps/federation/l10n/ia.json index 5b06ced40ea..cb3e8d94e39 100644 --- a/apps/federation/l10n/ia.json +++ b/apps/federation/l10n/ia.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Servitor ja es in le lista de servitores fiduciari.", "No server to federate with found" : "Nulle servitor pro associar se per federation esseva trovate", "Could not add server" : "Impossibile adder le servitor", + "Federation" : "Federation", "Trusted servers" : "Servitores fiduciari", "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." : "Le federation permitte te connecter con altere servitores fiduciari pro excambiar le directorio del usator. Per exemplo, iste attributo essera usate pro completar automaticamente usatores externe pro le compartimento federate.", "Add server automatically once a federated share was created successfully" : "Le functionalitate de adder un servitor automaticamente un vice que un compartimento federate es associate esseva create con successo", "+ Add trusted server" : "+ Adder servitor fiduciari", "Trusted server" : "Servitor fiduciari", - "Add" : "Adder", - "Federation" : "Federation" + "Add" : "Adder" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/id.js b/apps/federation/l10n/id.js index 2e7137bc995..d7d02637ac5 100644 --- a/apps/federation/l10n/id.js +++ b/apps/federation/l10n/id.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Server sudah ada pada daftar server terpercaya", "No server to federate with found" : "Tidak ada server yang bisa difederasikan", "Could not add server" : "Tidak dapat menambahkan server", + "Federation" : "Federasi", "Trusted servers" : "Server terpercaya", "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." : "Federasi memungkinkan Anda untuk terhubung dengan server lainnya yang terpercaya untuk menukar direktori pengguna. Contohnya, ini akan digunakan untuk pengisian-otomatis untuk pengguna eksternal untuk pembagian terfederasi.", "Add server automatically once a federated share was created successfully" : "Tambah server secara otomatis saat pembagian terfederasi dibuat", "+ Add trusted server" : "+ Tambah server terpercaya", "Trusted server" : "Server terpercaya", - "Add" : "Tambah", - "Federation" : "Federasi" + "Add" : "Tambah" }, "nplurals=1; plural=0;"); diff --git a/apps/federation/l10n/id.json b/apps/federation/l10n/id.json index 835481d081c..5e23dd0ee05 100644 --- a/apps/federation/l10n/id.json +++ b/apps/federation/l10n/id.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Server sudah ada pada daftar server terpercaya", "No server to federate with found" : "Tidak ada server yang bisa difederasikan", "Could not add server" : "Tidak dapat menambahkan server", + "Federation" : "Federasi", "Trusted servers" : "Server terpercaya", "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." : "Federasi memungkinkan Anda untuk terhubung dengan server lainnya yang terpercaya untuk menukar direktori pengguna. Contohnya, ini akan digunakan untuk pengisian-otomatis untuk pengguna eksternal untuk pembagian terfederasi.", "Add server automatically once a federated share was created successfully" : "Tambah server secara otomatis saat pembagian terfederasi dibuat", "+ Add trusted server" : "+ Tambah server terpercaya", "Trusted server" : "Server terpercaya", - "Add" : "Tambah", - "Federation" : "Federasi" + "Add" : "Tambah" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/federation/l10n/is.js b/apps/federation/l10n/is.js index 0261141a59c..40848cc3d3b 100644 --- a/apps/federation/l10n/is.js +++ b/apps/federation/l10n/is.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Þjónninn er nú þegar á listanum yfir treysta þjóna.", "No server to federate with found" : "Enginn þjónn sem hæfur er til skýjasambands fannst", "Could not add server" : "Gat ekki bætt við þjóni", + "Federation" : "Samband", "Trusted servers" : "Treystir þjónar", "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." : "Þjónasamband (federation) gerir þér kleift að tengjast öðrum treystum skýjum til að skiptast á notendaskrám. Þetta er til dæmis notað til að sjálfklára nöfn ytri notenda við deilingu sambandssameigna.", "Add server automatically once a federated share was created successfully" : "Bæta þjóni við sjálfkrafa, hafi tekist að búa til sambandssameign", "+ Add trusted server" : "+ Bæta við treystum þjóni", "Trusted server" : "Treystur þjónn", - "Add" : "Bæta við", - "Federation" : "Samband" + "Add" : "Bæta við" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/federation/l10n/is.json b/apps/federation/l10n/is.json index cd851a5bb90..b7d9cf613c1 100644 --- a/apps/federation/l10n/is.json +++ b/apps/federation/l10n/is.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Þjónninn er nú þegar á listanum yfir treysta þjóna.", "No server to federate with found" : "Enginn þjónn sem hæfur er til skýjasambands fannst", "Could not add server" : "Gat ekki bætt við þjóni", + "Federation" : "Samband", "Trusted servers" : "Treystir þjónar", "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." : "Þjónasamband (federation) gerir þér kleift að tengjast öðrum treystum skýjum til að skiptast á notendaskrám. Þetta er til dæmis notað til að sjálfklára nöfn ytri notenda við deilingu sambandssameigna.", "Add server automatically once a federated share was created successfully" : "Bæta þjóni við sjálfkrafa, hafi tekist að búa til sambandssameign", "+ Add trusted server" : "+ Bæta við treystum þjóni", "Trusted server" : "Treystur þjónn", - "Add" : "Bæta við", - "Federation" : "Samband" + "Add" : "Bæta við" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/federation/l10n/it.js b/apps/federation/l10n/it.js index a18901ee4e5..3adece3b0e5 100644 --- a/apps/federation/l10n/it.js +++ b/apps/federation/l10n/it.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Il server è già nell'elenco dei server affidabili.", "No server to federate with found" : "Non ho trovato alcun server per la federazione", "Could not add server" : "Impossibile aggiungere il server", + "Federation" : "Federazione", "Trusted servers" : "Server affidabili", "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." : "La federazione consente di connettersi ad altri server affidabili per accedere alla cartella utente. Ad esempio, può essere utilizzata per il completamento automatico di utenti esterni per la condivisione federata.", "Add server automatically once a federated share was created successfully" : "Aggiungi automaticamente il server dopo che una condivisione federata è stata creata con successo", "+ Add trusted server" : "+ Aggiungi server affidabile", "Trusted server" : "Server affidabile", - "Add" : "Aggiungi", - "Federation" : "Federazione" + "Add" : "Aggiungi" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/it.json b/apps/federation/l10n/it.json index 9d732b0f5ac..8a25db1804d 100644 --- a/apps/federation/l10n/it.json +++ b/apps/federation/l10n/it.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Il server è già nell'elenco dei server affidabili.", "No server to federate with found" : "Non ho trovato alcun server per la federazione", "Could not add server" : "Impossibile aggiungere il server", + "Federation" : "Federazione", "Trusted servers" : "Server affidabili", "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." : "La federazione consente di connettersi ad altri server affidabili per accedere alla cartella utente. Ad esempio, può essere utilizzata per il completamento automatico di utenti esterni per la condivisione federata.", "Add server automatically once a federated share was created successfully" : "Aggiungi automaticamente il server dopo che una condivisione federata è stata creata con successo", "+ Add trusted server" : "+ Aggiungi server affidabile", "Trusted server" : "Server affidabile", - "Add" : "Aggiungi", - "Federation" : "Federazione" + "Add" : "Aggiungi" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/ja.js b/apps/federation/l10n/ja.js index 6f8a9ee096c..3c5f78c3cf4 100644 --- a/apps/federation/l10n/ja.js +++ b/apps/federation/l10n/ja.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "信頼済サーバーとして既に登録されています。", "No server to federate with found" : "Nextcloud 連携サーバーはありません。", "Could not add server" : "サーバーを追加できませんでした", + "Federation" : "連携", "Trusted servers" : "信頼済サーバー", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "連携では他の信頼済サーバーとユーザーリストをやり取りすること許可します。例えば、連携共有時で他のサーバーのユーザーのIDを自動補完します。", "Add server automatically once a federated share was created successfully" : "追加するサーバは自動的に統合され、共有が追加されました", "+ Add trusted server" : "+ 信頼済サーバーに追加", "Trusted server" : "信頼済サーバー", - "Add" : "追加", - "Federation" : "連携" + "Add" : "追加" }, "nplurals=1; plural=0;"); diff --git a/apps/federation/l10n/ja.json b/apps/federation/l10n/ja.json index 53147709788..4cb10002291 100644 --- a/apps/federation/l10n/ja.json +++ b/apps/federation/l10n/ja.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "信頼済サーバーとして既に登録されています。", "No server to federate with found" : "Nextcloud 連携サーバーはありません。", "Could not add server" : "サーバーを追加できませんでした", + "Federation" : "連携", "Trusted servers" : "信頼済サーバー", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "連携では他の信頼済サーバーとユーザーリストをやり取りすること許可します。例えば、連携共有時で他のサーバーのユーザーのIDを自動補完します。", "Add server automatically once a federated share was created successfully" : "追加するサーバは自動的に統合され、共有が追加されました", "+ Add trusted server" : "+ 信頼済サーバーに追加", "Trusted server" : "信頼済サーバー", - "Add" : "追加", - "Federation" : "連携" + "Add" : "追加" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/federation/l10n/ko.js b/apps/federation/l10n/ko.js index c5baf30bb04..b4d71a47532 100644 --- a/apps/federation/l10n/ko.js +++ b/apps/federation/l10n/ko.js @@ -1,15 +1,16 @@ OC.L10N.register( "federation", { - "Server added to the list of trusted ownClouds" : "신뢰할 수 있는 ownCloud 목록에 서버 추가함", + "Added to the list of trusted servers" : "신뢰할 수 있는 서버 목록에 추가됨", "Server is already in the list of trusted servers." : "신뢰할 수 있는 서버 목록에 이미 추가되었습니다.", - "No ownCloud server found" : "ownCloud 서버를 찾을 수 없음", + "No server to federate with found" : "연합 가능한 서버를 찾을 수 없음", "Could not add server" : "서버를 추가할 수 없음", - "Federation" : "연합 공유", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "ownCloud 연합 공유를 사용하면 다른 믿을 수 있는 ownCloud 서버와 사용자 디렉터리를 상호간 공유할 수 있습니다. 이 정보는 연합 공유 시 외부 사용자 자동 완성 등에 사용합니다.", + "Federation" : "연합", + "Trusted servers" : "신뢰할 수 있는 서버", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "서버 연합을 통해서 다른 신뢰할 수 있는 서버와 사용자 디렉터리를 교환할 수 있습니다. 이 기능의 사용 예시로 연합 공유 시 외부 사용자를 자동 완성하는 데 사용할 수 있습니다.", "Add server automatically once a federated share was created successfully" : "연합 공유를 생성했을 때 자동으로 서버 추가", - "Trusted ownCloud Servers" : "신뢰할 수 있는 ownCloud 서버", - "+ Add ownCloud server" : "+ ownCloud 서버 추가", - "ownCloud Server" : "ownCloud 서버" + "+ Add trusted server" : "+ 신뢰할 수 있는 서버 추가", + "Trusted server" : "신뢰할 수 있는 서버", + "Add" : "추가" }, "nplurals=1; plural=0;"); diff --git a/apps/federation/l10n/ko.json b/apps/federation/l10n/ko.json index 373434a68ad..3b919704782 100644 --- a/apps/federation/l10n/ko.json +++ b/apps/federation/l10n/ko.json @@ -1,13 +1,14 @@ { "translations": { - "Server added to the list of trusted ownClouds" : "신뢰할 수 있는 ownCloud 목록에 서버 추가함", + "Added to the list of trusted servers" : "신뢰할 수 있는 서버 목록에 추가됨", "Server is already in the list of trusted servers." : "신뢰할 수 있는 서버 목록에 이미 추가되었습니다.", - "No ownCloud server found" : "ownCloud 서버를 찾을 수 없음", + "No server to federate with found" : "연합 가능한 서버를 찾을 수 없음", "Could not add server" : "서버를 추가할 수 없음", - "Federation" : "연합 공유", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "ownCloud 연합 공유를 사용하면 다른 믿을 수 있는 ownCloud 서버와 사용자 디렉터리를 상호간 공유할 수 있습니다. 이 정보는 연합 공유 시 외부 사용자 자동 완성 등에 사용합니다.", + "Federation" : "연합", + "Trusted servers" : "신뢰할 수 있는 서버", + "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "서버 연합을 통해서 다른 신뢰할 수 있는 서버와 사용자 디렉터리를 교환할 수 있습니다. 이 기능의 사용 예시로 연합 공유 시 외부 사용자를 자동 완성하는 데 사용할 수 있습니다.", "Add server automatically once a federated share was created successfully" : "연합 공유를 생성했을 때 자동으로 서버 추가", - "Trusted ownCloud Servers" : "신뢰할 수 있는 ownCloud 서버", - "+ Add ownCloud server" : "+ ownCloud 서버 추가", - "ownCloud Server" : "ownCloud 서버" + "+ Add trusted server" : "+ 신뢰할 수 있는 서버 추가", + "Trusted server" : "신뢰할 수 있는 서버", + "Add" : "추가" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/federation/l10n/lv.js b/apps/federation/l10n/lv.js index 2d6c51ceb79..c6caa6c4c2c 100644 --- a/apps/federation/l10n/lv.js +++ b/apps/federation/l10n/lv.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Serveris jau ir uzticamo serveru sarakstā .", "No server to federate with found" : "Nav atrasts neviens serveris", "Could not add server" : "Nevarēja pievienot serveri", + "Federation" : "Federācija", "Trusted servers" : "Uzticami serveri", "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." : "Federācija ļauj savienot ar citiem uzticamiem serveriem ar Exchange lietotāja direktoriju. Piemēram, tas tiks izmantots, lai automātiski pieslēgtu ārējiem lietotājiem integrēto koplietošanu.", "Add server automatically once a federated share was created successfully" : "Automātiski pievienots serveris federācijas koplietojumam, veiksmīgi", "+ Add trusted server" : "+ pievietot uzticamiem serveriem", "Trusted server" : "Uzticams serveris", - "Add" : "Pievienot", - "Federation" : "Federācija" + "Add" : "Pievienot" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/federation/l10n/lv.json b/apps/federation/l10n/lv.json index ce6716fb58c..07d6a03638c 100644 --- a/apps/federation/l10n/lv.json +++ b/apps/federation/l10n/lv.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Serveris jau ir uzticamo serveru sarakstā .", "No server to federate with found" : "Nav atrasts neviens serveris", "Could not add server" : "Nevarēja pievienot serveri", + "Federation" : "Federācija", "Trusted servers" : "Uzticami serveri", "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." : "Federācija ļauj savienot ar citiem uzticamiem serveriem ar Exchange lietotāja direktoriju. Piemēram, tas tiks izmantots, lai automātiski pieslēgtu ārējiem lietotājiem integrēto koplietošanu.", "Add server automatically once a federated share was created successfully" : "Automātiski pievienots serveris federācijas koplietojumam, veiksmīgi", "+ Add trusted server" : "+ pievietot uzticamiem serveriem", "Trusted server" : "Uzticams serveris", - "Add" : "Pievienot", - "Federation" : "Federācija" + "Add" : "Pievienot" },"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/federation/l10n/nb.js b/apps/federation/l10n/nb.js index d64c4e1b1f2..01cf4e33916 100644 --- a/apps/federation/l10n/nb.js +++ b/apps/federation/l10n/nb.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Tjeneren er allerede i listen av klarerte tjenere.", "No server to federate with found" : "Ingen tjener å forene med ble funnet", "Could not add server" : "Kunne ikke legge til tjener", + "Federation" : "Sammenknytting", "Trusted servers" : "Klarerte tjenere", "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." : "Føderasjon tillater deg å koble sammen andre betrodde tjenere for utviksling av bruker kataloger. For eksempel vil det bli brukt for autofullføring av eksterne brukere for føderal deling.", "Add server automatically once a federated share was created successfully" : "Legg til tjener automatisk når en sammenknyttet deling er blitt opprettet", "+ Add trusted server" : "+ Legg til klarert tjener", "Trusted server" : "Klarert tjener", - "Add" : "Legg til", - "Federation" : "Sammenknytting" + "Add" : "Legg til" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/nb.json b/apps/federation/l10n/nb.json index 4fd448becf5..6374cbe5f50 100644 --- a/apps/federation/l10n/nb.json +++ b/apps/federation/l10n/nb.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Tjeneren er allerede i listen av klarerte tjenere.", "No server to federate with found" : "Ingen tjener å forene med ble funnet", "Could not add server" : "Kunne ikke legge til tjener", + "Federation" : "Sammenknytting", "Trusted servers" : "Klarerte tjenere", "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." : "Føderasjon tillater deg å koble sammen andre betrodde tjenere for utviksling av bruker kataloger. For eksempel vil det bli brukt for autofullføring av eksterne brukere for føderal deling.", "Add server automatically once a federated share was created successfully" : "Legg til tjener automatisk når en sammenknyttet deling er blitt opprettet", "+ Add trusted server" : "+ Legg til klarert tjener", "Trusted server" : "Klarert tjener", - "Add" : "Legg til", - "Federation" : "Sammenknytting" + "Add" : "Legg til" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/nl.js b/apps/federation/l10n/nl.js index 7dc7d94ba67..b85a8f00876 100644 --- a/apps/federation/l10n/nl.js +++ b/apps/federation/l10n/nl.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Server bestaat reeds in de lijst van vertrouwde servers.", "No server to federate with found" : "Geen server gevonden om mee te federeren", "Could not add server" : "Kon server niet toevoegen", + "Federation" : "Federatie", "Trusted servers" : "Vertrouwde servers", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federatie maakt het mogelijk om te verbinden met vertrouwde servers en de gebuikersadministratie te delen. Zo kun je automatisch externe gebruikers toevoegen voor federatief delen.", "Add server automatically once a federated share was created successfully" : "Voeg server automatisch toe zodra een gefedereerde share succesvol gecreëerd is", "+ Add trusted server" : "+ Toevoegen vertrouwde server", "Trusted server" : "Vertrouwde server", - "Add" : "Toevoegen", - "Federation" : "Federatie" + "Add" : "Toevoegen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/nl.json b/apps/federation/l10n/nl.json index 898142b497e..31ab6dcee21 100644 --- a/apps/federation/l10n/nl.json +++ b/apps/federation/l10n/nl.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Server bestaat reeds in de lijst van vertrouwde servers.", "No server to federate with found" : "Geen server gevonden om mee te federeren", "Could not add server" : "Kon server niet toevoegen", + "Federation" : "Federatie", "Trusted servers" : "Vertrouwde servers", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federatie maakt het mogelijk om te verbinden met vertrouwde servers en de gebuikersadministratie te delen. Zo kun je automatisch externe gebruikers toevoegen voor federatief delen.", "Add server automatically once a federated share was created successfully" : "Voeg server automatisch toe zodra een gefedereerde share succesvol gecreëerd is", "+ Add trusted server" : "+ Toevoegen vertrouwde server", "Trusted server" : "Vertrouwde server", - "Add" : "Toevoegen", - "Federation" : "Federatie" + "Add" : "Toevoegen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/pl.js b/apps/federation/l10n/pl.js index a82f5663280..1ebe6741178 100644 --- a/apps/federation/l10n/pl.js +++ b/apps/federation/l10n/pl.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Serwer znajduje się już na liście zaufanych serwerów.", "No server to federate with found" : "Nie znaleziono stowarzyszonego serwera", "Could not add server" : "Nie można dodać serwera", + "Federation" : "Stowarzyszenia", "Trusted servers" : "Zaufane serwery", "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." : "Stowarzyszenie pozwala łączyć się z innymi zaufanymi użytkownikami i wymieniać się z nimi katalogami. Na przykład, może to być wykorzystane do autouzupełniania w dzieleniu się ze stowarzyszonym użytkownikiem.", "Add server automatically once a federated share was created successfully" : "Dodaj serwer automatycznie po pomyślnym utworzeniu stowarzyszonego udziału.", "+ Add trusted server" : "+ Dodaj zaufany serwer", "Trusted server" : "Zaufany serwer", - "Add" : "Dodaj", - "Federation" : "Stowarzyszenia" + "Add" : "Dodaj" }, "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/federation/l10n/pl.json b/apps/federation/l10n/pl.json index 4221b99c470..eec264cdc17 100644 --- a/apps/federation/l10n/pl.json +++ b/apps/federation/l10n/pl.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Serwer znajduje się już na liście zaufanych serwerów.", "No server to federate with found" : "Nie znaleziono stowarzyszonego serwera", "Could not add server" : "Nie można dodać serwera", + "Federation" : "Stowarzyszenia", "Trusted servers" : "Zaufane serwery", "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." : "Stowarzyszenie pozwala łączyć się z innymi zaufanymi użytkownikami i wymieniać się z nimi katalogami. Na przykład, może to być wykorzystane do autouzupełniania w dzieleniu się ze stowarzyszonym użytkownikiem.", "Add server automatically once a federated share was created successfully" : "Dodaj serwer automatycznie po pomyślnym utworzeniu stowarzyszonego udziału.", "+ Add trusted server" : "+ Dodaj zaufany serwer", "Trusted server" : "Zaufany serwer", - "Add" : "Dodaj", - "Federation" : "Stowarzyszenia" + "Add" : "Dodaj" },"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/federation/l10n/pt_BR.js b/apps/federation/l10n/pt_BR.js index dc358d66c34..683474b3726 100644 --- a/apps/federation/l10n/pt_BR.js +++ b/apps/federation/l10n/pt_BR.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "O servidor já está na lista de servidores confiáveis.", "No server to federate with found" : "Nenhum servidor encontrado para federar", "Could not add server" : "Não foi possível adicionar servidor", + "Federation" : "Federação", "Trusted servers" : "Servidores confiáveis", "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." : "Federação permite que você conecte com outros servidores confiáveis para trocar o diretório do usuário. Por exemplo, este atributo será usado para completar automaticamente usuários externos para compartilhamento federado.", "Add server automatically once a federated share was created successfully" : "Adicionar servidor automaticamente uma vez que um compartilhamento federado foi criado com êxito", "+ Add trusted server" : "+Adicionar servidores confiáveis", "Trusted server" : "Servidores confiáveis", - "Add" : "Adicionar", - "Federation" : "Federação" + "Add" : "Adicionar" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federation/l10n/pt_BR.json b/apps/federation/l10n/pt_BR.json index d9f1ef6147b..ea13a6ef4b2 100644 --- a/apps/federation/l10n/pt_BR.json +++ b/apps/federation/l10n/pt_BR.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "O servidor já está na lista de servidores confiáveis.", "No server to federate with found" : "Nenhum servidor encontrado para federar", "Could not add server" : "Não foi possível adicionar servidor", + "Federation" : "Federação", "Trusted servers" : "Servidores confiáveis", "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." : "Federação permite que você conecte com outros servidores confiáveis para trocar o diretório do usuário. Por exemplo, este atributo será usado para completar automaticamente usuários externos para compartilhamento federado.", "Add server automatically once a federated share was created successfully" : "Adicionar servidor automaticamente uma vez que um compartilhamento federado foi criado com êxito", "+ Add trusted server" : "+Adicionar servidores confiáveis", "Trusted server" : "Servidores confiáveis", - "Add" : "Adicionar", - "Federation" : "Federação" + "Add" : "Adicionar" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/ru.js b/apps/federation/l10n/ru.js index 5e3c36f176a..d465c97ddfa 100644 --- a/apps/federation/l10n/ru.js +++ b/apps/federation/l10n/ru.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Сервер уже есть в списке доверенных серверов.", "No server to federate with found" : "Сервер для объединения не найден", "Could not add server" : "Не удалось добавить сервер", + "Federation" : "Федерация", "Trusted servers" : "Доверенные серверы", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Федерация серверов позволит Вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автодополнения имён пользователей при открытии федеративного общего доступа.", "Add server automatically once a federated share was created successfully" : "Добавить сервер автоматически после успешного создания федеративного ресурса общего доступа", "+ Add trusted server" : "+ Добавить доверенный сервер", "Trusted server" : "Доверенный сервер", - "Add" : "Добавить", - "Federation" : "Федерация" + "Add" : "Добавить" }, "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/federation/l10n/ru.json b/apps/federation/l10n/ru.json index cf988061685..fbb14ff083f 100644 --- a/apps/federation/l10n/ru.json +++ b/apps/federation/l10n/ru.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Сервер уже есть в списке доверенных серверов.", "No server to federate with found" : "Сервер для объединения не найден", "Could not add server" : "Не удалось добавить сервер", + "Federation" : "Федерация", "Trusted servers" : "Доверенные серверы", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Федерация серверов позволит Вам подключиться к другим доверенным серверам для обмена каталогами пользователей. Это будет использовано, например, для автодополнения имён пользователей при открытии федеративного общего доступа.", "Add server automatically once a federated share was created successfully" : "Добавить сервер автоматически после успешного создания федеративного ресурса общего доступа", "+ Add trusted server" : "+ Добавить доверенный сервер", "Trusted server" : "Доверенный сервер", - "Add" : "Добавить", - "Federation" : "Федерация" + "Add" : "Добавить" },"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/federation/l10n/sl.js b/apps/federation/l10n/sl.js index c89639b505e..e05f8e0f322 100644 --- a/apps/federation/l10n/sl.js +++ b/apps/federation/l10n/sl.js @@ -4,12 +4,12 @@ OC.L10N.register( "Added to the list of trusted servers" : "Dodano na spisek varnih strežnikov", "Server is already in the list of trusted servers." : "Strežnik je že na seznamu potrjenih strežnikov.", "Could not add server" : "Ni mogoče dodati strežnika.", + "Federation" : "Zvezni oblaki", "Trusted servers" : "Zanesljivi strežniki", "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." : "Federiranje omogoča povezovanje z drugimi varnimi strežniki in izmenjavo spiska uporabnikov. Primer je samodejno dopolnjevanje zunanjih uporabnikov pri federacijski souporabi.", "Add server automatically once a federated share was created successfully" : "Strežnik dodaj samodejno, ko je povezava zveznega oblaka uspešno ustvarjena", "+ Add trusted server" : "+ Dodaj zanesljiv strežnik", "Trusted server" : "Zanesljiv strežnik", - "Add" : "Dodaj", - "Federation" : "Zvezni oblaki" + "Add" : "Dodaj" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/federation/l10n/sl.json b/apps/federation/l10n/sl.json index 3c3ee449df0..08f60f98b28 100644 --- a/apps/federation/l10n/sl.json +++ b/apps/federation/l10n/sl.json @@ -2,12 +2,12 @@ "Added to the list of trusted servers" : "Dodano na spisek varnih strežnikov", "Server is already in the list of trusted servers." : "Strežnik je že na seznamu potrjenih strežnikov.", "Could not add server" : "Ni mogoče dodati strežnika.", + "Federation" : "Zvezni oblaki", "Trusted servers" : "Zanesljivi strežniki", "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." : "Federiranje omogoča povezovanje z drugimi varnimi strežniki in izmenjavo spiska uporabnikov. Primer je samodejno dopolnjevanje zunanjih uporabnikov pri federacijski souporabi.", "Add server automatically once a federated share was created successfully" : "Strežnik dodaj samodejno, ko je povezava zveznega oblaka uspešno ustvarjena", "+ Add trusted server" : "+ Dodaj zanesljiv strežnik", "Trusted server" : "Zanesljiv strežnik", - "Add" : "Dodaj", - "Federation" : "Zvezni oblaki" + "Add" : "Dodaj" },"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/federation/l10n/sq.js b/apps/federation/l10n/sq.js index dc4aeb8b7f7..460a3923d4e 100644 --- a/apps/federation/l10n/sq.js +++ b/apps/federation/l10n/sq.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Server-i është tashmë në listën e server-ave të besuar.", "No server to federate with found" : "Nuk u gjet server me të cilin mund të federohej", "Could not add server" : "Server-i s’u shtua dot", + "Federation" : "Federim", "Trusted servers" : "Servera të besuar", "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." : "Federimi ju lejon të lidheni me server-a të tjerë për të shkëmbyer direktorinë e përdoruesit. Për shembull, kjo mund të përdoret për të parapërgatitur vendet e punës për përdorues të jashtëm në shpërndarjen e federuar.", "Add server automatically once a federated share was created successfully" : "Shtoje vetvetiu server-in pasi të jetë krijuar me sukses një ndarje e federuar", "+ Add trusted server" : "+ Shto server-a të besuar", "Trusted server" : "Server i besuar", - "Add" : "Shto", - "Federation" : "Federim" + "Add" : "Shto" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/sq.json b/apps/federation/l10n/sq.json index 5ed93828d67..89b569ce33c 100644 --- a/apps/federation/l10n/sq.json +++ b/apps/federation/l10n/sq.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Server-i është tashmë në listën e server-ave të besuar.", "No server to federate with found" : "Nuk u gjet server me të cilin mund të federohej", "Could not add server" : "Server-i s’u shtua dot", + "Federation" : "Federim", "Trusted servers" : "Servera të besuar", "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." : "Federimi ju lejon të lidheni me server-a të tjerë për të shkëmbyer direktorinë e përdoruesit. Për shembull, kjo mund të përdoret për të parapërgatitur vendet e punës për përdorues të jashtëm në shpërndarjen e federuar.", "Add server automatically once a federated share was created successfully" : "Shtoje vetvetiu server-in pasi të jetë krijuar me sukses një ndarje e federuar", "+ Add trusted server" : "+ Shto server-a të besuar", "Trusted server" : "Server i besuar", - "Add" : "Shto", - "Federation" : "Federim" + "Add" : "Shto" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/sv.js b/apps/federation/l10n/sv.js index fa6ccf86dc9..d4ca3a40b47 100644 --- a/apps/federation/l10n/sv.js +++ b/apps/federation/l10n/sv.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Servern finns redan i listan", "No server to federate with found" : "Ingen server att federera med hittades", "Could not add server" : "Kunde inte lägga till server", + "Federation" : "Federerad delning", "Trusted servers" : "Betrodda servrar", "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." : "Federation låter dig ansluta till andra betrodda servrar för att utbyta användarinformation. Till exempel kommer detta användas för att auto-komplettera externa användare för federerad delning.", "Add server automatically once a federated share was created successfully" : "Lägg till servern automatiskt så fort en lyckad federerad delning skapats", "+ Add trusted server" : "+ Lägg till betrodd server", "Trusted server" : "Betrodd server", - "Add" : "Lägg till", - "Federation" : "Federerad delning" + "Add" : "Lägg till" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/sv.json b/apps/federation/l10n/sv.json index ead6b203f7f..cb6cce1b1f6 100644 --- a/apps/federation/l10n/sv.json +++ b/apps/federation/l10n/sv.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Servern finns redan i listan", "No server to federate with found" : "Ingen server att federera med hittades", "Could not add server" : "Kunde inte lägga till server", + "Federation" : "Federerad delning", "Trusted servers" : "Betrodda servrar", "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." : "Federation låter dig ansluta till andra betrodda servrar för att utbyta användarinformation. Till exempel kommer detta användas för att auto-komplettera externa användare för federerad delning.", "Add server automatically once a federated share was created successfully" : "Lägg till servern automatiskt så fort en lyckad federerad delning skapats", "+ Add trusted server" : "+ Lägg till betrodd server", "Trusted server" : "Betrodd server", - "Add" : "Lägg till", - "Federation" : "Federerad delning" + "Add" : "Lägg till" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/tr.js b/apps/federation/l10n/tr.js index dd959026d0f..799047e953b 100644 --- a/apps/federation/l10n/tr.js +++ b/apps/federation/l10n/tr.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "Sunucu zaten güvenilen sunucu listesine eklenmiş.", "No server to federate with found" : "Birleştirilecek bir sunucu bulunamadı", "Could not add server" : "Sunucu eklenemedi", + "Federation" : "Birleşim", "Trusted servers" : "Güvenilen sunucular", "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." : "Birleşim, diğer güvenilir sunucularla dosya/klasör paylaşımı yapılmasını sağlar. Örneğin, bu işlem birleştirilmiş paylaşım için dış kullanıcıların otomatik olarak tamamlanmasını sağlar.", "Add server automatically once a federated share was created successfully" : "Bir birleşmiş paylaşım eklendiğinde sunucu otomatik olarak eklensin", "+ Add trusted server" : "+ Güvenilir sunucu ekle", "Trusted server" : "Güvenilen sunucu", - "Add" : "Ekle", - "Federation" : "Birleşim" + "Add" : "Ekle" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/federation/l10n/tr.json b/apps/federation/l10n/tr.json index eb7971df9bb..a8b38fdc19d 100644 --- a/apps/federation/l10n/tr.json +++ b/apps/federation/l10n/tr.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "Sunucu zaten güvenilen sunucu listesine eklenmiş.", "No server to federate with found" : "Birleştirilecek bir sunucu bulunamadı", "Could not add server" : "Sunucu eklenemedi", + "Federation" : "Birleşim", "Trusted servers" : "Güvenilen sunucular", "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." : "Birleşim, diğer güvenilir sunucularla dosya/klasör paylaşımı yapılmasını sağlar. Örneğin, bu işlem birleştirilmiş paylaşım için dış kullanıcıların otomatik olarak tamamlanmasını sağlar.", "Add server automatically once a federated share was created successfully" : "Bir birleşmiş paylaşım eklendiğinde sunucu otomatik olarak eklensin", "+ Add trusted server" : "+ Güvenilir sunucu ekle", "Trusted server" : "Güvenilen sunucu", - "Add" : "Ekle", - "Federation" : "Birleşim" + "Add" : "Ekle" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/zh_CN.js b/apps/federation/l10n/zh_CN.js index bb30e2cb86d..0f73957db42 100644 --- a/apps/federation/l10n/zh_CN.js +++ b/apps/federation/l10n/zh_CN.js @@ -5,12 +5,12 @@ OC.L10N.register( "Server is already in the list of trusted servers." : "服务器在线,并已成功添加至信任服务器列表。", "No server to federate with found" : "没有找到联盟服务器", "Could not add server" : "无法添加服务器", + "Federation" : "联合", "Trusted servers" : "可信任服务器", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联盟允许您与其他受信任的服务器连接并交换用户目录。 例如,这将用于自动完成外部用户组成共享联盟。", "Add server automatically once a federated share was created successfully" : "一旦联合共享创建成功自动添加服务器", "+ Add trusted server" : "+ 添加可信任服务器", "Trusted server" : "可信任服务器", - "Add" : "添加", - "Federation" : "联合" + "Add" : "添加" }, "nplurals=1; plural=0;"); diff --git a/apps/federation/l10n/zh_CN.json b/apps/federation/l10n/zh_CN.json index 919c572ba34..2d424586d54 100644 --- a/apps/federation/l10n/zh_CN.json +++ b/apps/federation/l10n/zh_CN.json @@ -3,12 +3,12 @@ "Server is already in the list of trusted servers." : "服务器在线,并已成功添加至信任服务器列表。", "No server to federate with found" : "没有找到联盟服务器", "Could not add server" : "无法添加服务器", + "Federation" : "联合", "Trusted servers" : "可信任服务器", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联盟允许您与其他受信任的服务器连接并交换用户目录。 例如,这将用于自动完成外部用户组成共享联盟。", "Add server automatically once a federated share was created successfully" : "一旦联合共享创建成功自动添加服务器", "+ Add trusted server" : "+ 添加可信任服务器", "Trusted server" : "可信任服务器", - "Add" : "添加", - "Federation" : "联合" + "Add" : "添加" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index 75d9d0ebdfc..1c5758ca50b 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -1060,7 +1060,7 @@ OC.Uploader.prototype = _.extend({ // dropping a folder in firefox doesn't cause a drop event // this is simulated by simply invoke disabling all classes // once no dragover event isn't noticed anymore - if ($.browser['mozilla']) { + if (/Firefox/i.test(navigator.userAgent)) { disableClassOnFirefox(); } $('#emptycontent .icon-folder').addClass('icon-filetype-folder-drag-accept'); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 6b5b5a2daef..187ede8c0bd 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -92,6 +92,12 @@ initialized: false, /** + * Wheater the file list was already shown once + * @type boolean + */ + shown: false, + + /** * Number of files per page * * @return {int} page size @@ -557,7 +563,10 @@ * Event handler when leaving previously hidden state */ _onShow: function(e) { - this.reload(); + if (this.shown) { + this.reload(); + } + this.shown = true; }, /** @@ -1069,6 +1078,8 @@ return OC.MimeType.getIconUrl('dir-shared'); } else if (fileInfo.mountType === 'external-root') { return OC.MimeType.getIconUrl('dir-external'); + } else if (fileInfo.mountType !== undefined && fileInfo.mountType !== '') { + return OC.MimeType.getIconUrl('dir-' + fileInfo.mountType); } return OC.MimeType.getIconUrl('dir'); } diff --git a/apps/files/l10n/ast.js b/apps/files/l10n/ast.js index 917701fe440..cd2649ebf0a 100644 --- a/apps/files/l10n/ast.js +++ b/apps/files/l10n/ast.js @@ -1,10 +1,11 @@ OC.L10N.register( "files", { - "Storage invalid" : "Almacenamientu inválidu", + "Storage is temporarily not available" : "L'almacenamientu nun ta disponible temporalmente", + "Storage invalid" : "Almacenamientu non válidu", "Unknown error" : "Fallu desconocíu", - "Files" : "Ficheros", "All files" : "Tolos ficheros", + "Recent" : "Reciente", "File could not be found" : "Nun s'atopó el ficheru", "Home" : "Casa", "Close" : "Zarrar", @@ -13,15 +14,20 @@ OC.L10N.register( "Upload cancelled." : "Xuba encaboxada.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nun pudo xubise {filename}, paez que ye un directoriu o tien 0 bytes", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nun hai abondu espaciu llibre, tas xubiendo {size1} pero namái falta {size2}", + "Not enough free space" : "Nun hai espaciu llibre abondo", "Uploading..." : "Xubiendo...", "..." : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})", "Actions" : "Aiciones", "Download" : "Descargar", "Rename" : "Renomar", + "Move" : "Mover", + "Target folder" : "Carpeta oxetivu", "Delete" : "Desaniciar", "Disconnect storage" : "Desconeutar almacenamientu", "Unshare" : "Dexar de compartir", + "Could not load info for file \"{file}\"" : "Nun pudo cargase la información del ficheru «{file}»", + "Files" : "Ficheros", "Details" : "Detalles", "Select" : "Esbillar", "Pending" : "Pendiente", @@ -54,6 +60,7 @@ OC.L10N.register( "Storage of {owner} is almost full ({usedSpacePercent}%)" : "L'almacenamientu de {owner} ta casi completu ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "L'almacenamientu ta casi completu ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["concasa '{filter}'","concasa '{filter}'"], + "View in folder" : "Ver na carpeta", "Path" : "Camín", "_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"], "Favorited" : "Favoritos", @@ -62,6 +69,10 @@ OC.L10N.register( "New folder" : "Nueva carpeta", "Upload" : "Xubir", "An error occurred while trying to update the tags" : "Hebo un fallu mientres s'intentaba actualizar les etiquetes", + "Added to favorites" : "Amestóse a favoritos", + "You deleted {file}" : "Desaniciesti {file}", + "You restored {file}" : "Restauresti {file}", + "{user} restored {file}" : "{user} restauró {file}", "A new file or folder has been <strong>created</strong>" : "<strong>Creóse</strong> un ficheru o carpeta nuevos", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Llendar les notificaciones tocantes a creación y cambeos a tos <strong>ficheros favoritos</strong <em>(namás Stream)</em>", "Upload (max. %s)" : "Xuba (máx. %s)", @@ -81,55 +92,19 @@ OC.L10N.register( "Select all" : "Esbillar too", "Upload too large" : "La xuba ye abondo grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los ficheros que tas intentando xubir perpasen el tamañu máximu pa les xubíes de ficheros nesti servidor.", - "No favorites" : "Nengún favoritu", + "No favorites yet" : "Entá nun hai favoritos", "Files and folders you mark as favorite will show up here" : "Los ficheros y carpetes que marque como favoritos apaecerán equí", + "Tags" : "Etiquetes", + "Deleted files" : "Ficheros desaniciaos", "Text file" : "Ficheru de testu", "New text file.txt" : "Nuevu testu ficheru.txt", - "Storage not available" : "Almacenamientu non disponible", - "Unable to set upload directory." : "Nun pue afitase la carpeta de xubida.", - "Invalid Token" : "Token inválidu", - "No file was uploaded. Unknown error" : "Nun se xubió dengún ficheru. Fallu desconocíu", - "There is no error, the file uploaded with success" : "Nun hai dengún fallu, el ficheru xubióse ensin problemes", - "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "El ficheru xubíu perpasa la direutiva \"upload_max_filesize\" del ficheru php.ini", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu perpasa la direutiva \"MAX_FILE_SIZE\" especificada nel formulariu HTML", - "The uploaded file was only partially uploaded" : "El ficheru xubióse de mou parcial", - "No file was uploaded" : "Nun se xubió dengún ficheru", - "Missing a temporary folder" : "Falta una carpeta temporal", - "Failed to write to disk" : "Fallu al escribir al discu", - "Not enough storage available" : "Nun hai abondu espaciu disponible", - "The target folder has been moved or deleted." : "La carpeta oxetivu movióse o desanicióse.", - "Upload failed. Could not find uploaded file" : "Xubida fallida. Nun pudo atopase'l ficheru xubíu.", - "Upload failed. Could not get file info." : "Falló la xubida. Nun se pudo obtener la información del ficheru.", - "Invalid directory." : "Direutoriu non válidu.", - "Total file size {size1} exceeds upload limit {size2}" : "El tamañu de ficheru total {size1} perpasa la llende de xuba {size2}", - "Error uploading file \"{fileName}\": {message}" : "Fallu xubiendo'l ficheru \"{fileName}\": {message}", - "Could not get result from server." : "Nun pudo obtenese'l resultáu del sirvidor.", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Falten {hours}:{minutes}:{seconds} hour{plural_s}", "{hours}:{minutes}h" : "{hours}:{minutes}h", - "{minutes}:{seconds} minute{plural_s} left" : "Falten {minutes}:{seconds} minute{plural_s} ", "{minutes}:{seconds}m" : "{minutes}:{seconds}m", - "{seconds} second{plural_s} left" : "Falten {seconds} second{plural_s}", "{seconds}s" : "{seconds}s", "Any moment now..." : "En cualquier momentu...", "Soon..." : "Pronto...", "File upload is in progress. Leaving the page now will cancel the upload." : "La xuba del ficheru ta en progresu. Si dexes agora la páxina, va encaboxase la xuba.", - "No entries in this folder match '{filter}'" : "Nun concasa nenguna entrada nesta carpeta '{filter}'", - "Local link" : "Enllaz llocal", - "{newname} already exists" : "{newname} yá existe", - "A file or folder has been <strong>changed</strong>" : "<strong>Camudóse</strong> un ficheru o carpeta", - "A file or folder has been <strong>deleted</strong>" : "<strong>Desanicióse</strong> un ficheru o carpeta", - "A file or folder has been <strong>restored</strong>" : "<strong>Restauróse</strong> un ficheru o carpeta", - "You created %1$s" : "Creasti %1$s", - "%2$s created %1$s" : "%2$s creó %1$s", - "%1$s was created in a public folder" : "Creóse %1$s nuna carpeta pública", - "You changed %1$s" : "Modificasti %1$s", - "%2$s changed %1$s" : "%2$s modificó %1$s", - "You deleted %1$s" : "Desaniciasti %1$s", - "%2$s deleted %1$s" : "%2$s desanició %1$s", - "You restored %1$s" : "Recuperóse %1$s", - "%2$s restored %1$s" : "%2$s recuperó %1$s", - "Changed by %2$s" : "Modificáu por %2$s", - "Deleted by %2$s" : "Desaniciáu por %2$s", - "Restored by %2$s" : "Recuperáu por %2$s" + "Copy local link" : "Copiar enllaz llocal", + "No favorites" : "Nengún favoritu" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ast.json b/apps/files/l10n/ast.json index fd9636fc4e0..e185f680dca 100644 --- a/apps/files/l10n/ast.json +++ b/apps/files/l10n/ast.json @@ -1,8 +1,9 @@ { "translations": { - "Storage invalid" : "Almacenamientu inválidu", + "Storage is temporarily not available" : "L'almacenamientu nun ta disponible temporalmente", + "Storage invalid" : "Almacenamientu non válidu", "Unknown error" : "Fallu desconocíu", - "Files" : "Ficheros", "All files" : "Tolos ficheros", + "Recent" : "Reciente", "File could not be found" : "Nun s'atopó el ficheru", "Home" : "Casa", "Close" : "Zarrar", @@ -11,15 +12,20 @@ "Upload cancelled." : "Xuba encaboxada.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nun pudo xubise {filename}, paez que ye un directoriu o tien 0 bytes", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nun hai abondu espaciu llibre, tas xubiendo {size1} pero namái falta {size2}", + "Not enough free space" : "Nun hai espaciu llibre abondo", "Uploading..." : "Xubiendo...", "..." : "...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})", "Actions" : "Aiciones", "Download" : "Descargar", "Rename" : "Renomar", + "Move" : "Mover", + "Target folder" : "Carpeta oxetivu", "Delete" : "Desaniciar", "Disconnect storage" : "Desconeutar almacenamientu", "Unshare" : "Dexar de compartir", + "Could not load info for file \"{file}\"" : "Nun pudo cargase la información del ficheru «{file}»", + "Files" : "Ficheros", "Details" : "Detalles", "Select" : "Esbillar", "Pending" : "Pendiente", @@ -52,6 +58,7 @@ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "L'almacenamientu de {owner} ta casi completu ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "L'almacenamientu ta casi completu ({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["concasa '{filter}'","concasa '{filter}'"], + "View in folder" : "Ver na carpeta", "Path" : "Camín", "_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"], "Favorited" : "Favoritos", @@ -60,6 +67,10 @@ "New folder" : "Nueva carpeta", "Upload" : "Xubir", "An error occurred while trying to update the tags" : "Hebo un fallu mientres s'intentaba actualizar les etiquetes", + "Added to favorites" : "Amestóse a favoritos", + "You deleted {file}" : "Desaniciesti {file}", + "You restored {file}" : "Restauresti {file}", + "{user} restored {file}" : "{user} restauró {file}", "A new file or folder has been <strong>created</strong>" : "<strong>Creóse</strong> un ficheru o carpeta nuevos", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Llendar les notificaciones tocantes a creación y cambeos a tos <strong>ficheros favoritos</strong <em>(namás Stream)</em>", "Upload (max. %s)" : "Xuba (máx. %s)", @@ -79,55 +90,19 @@ "Select all" : "Esbillar too", "Upload too large" : "La xuba ye abondo grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los ficheros que tas intentando xubir perpasen el tamañu máximu pa les xubíes de ficheros nesti servidor.", - "No favorites" : "Nengún favoritu", + "No favorites yet" : "Entá nun hai favoritos", "Files and folders you mark as favorite will show up here" : "Los ficheros y carpetes que marque como favoritos apaecerán equí", + "Tags" : "Etiquetes", + "Deleted files" : "Ficheros desaniciaos", "Text file" : "Ficheru de testu", "New text file.txt" : "Nuevu testu ficheru.txt", - "Storage not available" : "Almacenamientu non disponible", - "Unable to set upload directory." : "Nun pue afitase la carpeta de xubida.", - "Invalid Token" : "Token inválidu", - "No file was uploaded. Unknown error" : "Nun se xubió dengún ficheru. Fallu desconocíu", - "There is no error, the file uploaded with success" : "Nun hai dengún fallu, el ficheru xubióse ensin problemes", - "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "El ficheru xubíu perpasa la direutiva \"upload_max_filesize\" del ficheru php.ini", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu perpasa la direutiva \"MAX_FILE_SIZE\" especificada nel formulariu HTML", - "The uploaded file was only partially uploaded" : "El ficheru xubióse de mou parcial", - "No file was uploaded" : "Nun se xubió dengún ficheru", - "Missing a temporary folder" : "Falta una carpeta temporal", - "Failed to write to disk" : "Fallu al escribir al discu", - "Not enough storage available" : "Nun hai abondu espaciu disponible", - "The target folder has been moved or deleted." : "La carpeta oxetivu movióse o desanicióse.", - "Upload failed. Could not find uploaded file" : "Xubida fallida. Nun pudo atopase'l ficheru xubíu.", - "Upload failed. Could not get file info." : "Falló la xubida. Nun se pudo obtener la información del ficheru.", - "Invalid directory." : "Direutoriu non válidu.", - "Total file size {size1} exceeds upload limit {size2}" : "El tamañu de ficheru total {size1} perpasa la llende de xuba {size2}", - "Error uploading file \"{fileName}\": {message}" : "Fallu xubiendo'l ficheru \"{fileName}\": {message}", - "Could not get result from server." : "Nun pudo obtenese'l resultáu del sirvidor.", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Falten {hours}:{minutes}:{seconds} hour{plural_s}", "{hours}:{minutes}h" : "{hours}:{minutes}h", - "{minutes}:{seconds} minute{plural_s} left" : "Falten {minutes}:{seconds} minute{plural_s} ", "{minutes}:{seconds}m" : "{minutes}:{seconds}m", - "{seconds} second{plural_s} left" : "Falten {seconds} second{plural_s}", "{seconds}s" : "{seconds}s", "Any moment now..." : "En cualquier momentu...", "Soon..." : "Pronto...", "File upload is in progress. Leaving the page now will cancel the upload." : "La xuba del ficheru ta en progresu. Si dexes agora la páxina, va encaboxase la xuba.", - "No entries in this folder match '{filter}'" : "Nun concasa nenguna entrada nesta carpeta '{filter}'", - "Local link" : "Enllaz llocal", - "{newname} already exists" : "{newname} yá existe", - "A file or folder has been <strong>changed</strong>" : "<strong>Camudóse</strong> un ficheru o carpeta", - "A file or folder has been <strong>deleted</strong>" : "<strong>Desanicióse</strong> un ficheru o carpeta", - "A file or folder has been <strong>restored</strong>" : "<strong>Restauróse</strong> un ficheru o carpeta", - "You created %1$s" : "Creasti %1$s", - "%2$s created %1$s" : "%2$s creó %1$s", - "%1$s was created in a public folder" : "Creóse %1$s nuna carpeta pública", - "You changed %1$s" : "Modificasti %1$s", - "%2$s changed %1$s" : "%2$s modificó %1$s", - "You deleted %1$s" : "Desaniciasti %1$s", - "%2$s deleted %1$s" : "%2$s desanició %1$s", - "You restored %1$s" : "Recuperóse %1$s", - "%2$s restored %1$s" : "%2$s recuperó %1$s", - "Changed by %2$s" : "Modificáu por %2$s", - "Deleted by %2$s" : "Desaniciáu por %2$s", - "Restored by %2$s" : "Recuperáu por %2$s" + "Copy local link" : "Copiar enllaz llocal", + "No favorites" : "Nengún favoritu" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js index c098efa20c9..3b46f7a4e6c 100644 --- a/apps/files/l10n/da.js +++ b/apps/files/l10n/da.js @@ -52,6 +52,7 @@ OC.L10N.register( "_%n folder_::_%n folders_" : ["%n mappe","%n mapper"], "_%n file_::_%n files_" : ["%n fil","%n filer"], "{dirs} and {files}" : "{dirs} og {files}", + "_including %n hidden_::_including %n hidden_" : ["%n skujlte inkluderet","%n skujlte inkluderet"], "You don’t have permission to upload or create files here" : "Du har ikke tilladelse til at uploade eller oprette filer her", "_Uploading %n file_::_Uploading %n files_" : ["Uploader %n fil","Uploader %n filer"], "New" : "Ny", @@ -120,6 +121,7 @@ OC.L10N.register( "Select all" : "Vælg alle", "Upload too large" : "Upload er for stor", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Filerne, du prøver at uploade, er større end den maksimale størrelse for fil-upload på denne server.", + "No favorites yet" : "Ingen foretrukne endnu", "Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her", "Shared with you" : "Delt med dig", "Shared with others" : "Delt med andre", @@ -128,8 +130,11 @@ OC.L10N.register( "Deleted files" : "Slettede filer", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekst file.txt", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} time tilbage","{hours}:{minutes}:{seconds} timer tilbage"], "{hours}:{minutes}h" : "{hours}:{minutes}t", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minut tilbage","{minutes}:{seconds} minutter tilbage"], "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekund tilbage","{seconds} sekunder tilbage"], "{seconds}s" : "{seconds}s", "Any moment now..." : "Når som helst...", "Soon..." : "Snart...", diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json index b74dd4deaa9..e7a93be7897 100644 --- a/apps/files/l10n/da.json +++ b/apps/files/l10n/da.json @@ -50,6 +50,7 @@ "_%n folder_::_%n folders_" : ["%n mappe","%n mapper"], "_%n file_::_%n files_" : ["%n fil","%n filer"], "{dirs} and {files}" : "{dirs} og {files}", + "_including %n hidden_::_including %n hidden_" : ["%n skujlte inkluderet","%n skujlte inkluderet"], "You don’t have permission to upload or create files here" : "Du har ikke tilladelse til at uploade eller oprette filer her", "_Uploading %n file_::_Uploading %n files_" : ["Uploader %n fil","Uploader %n filer"], "New" : "Ny", @@ -118,6 +119,7 @@ "Select all" : "Vælg alle", "Upload too large" : "Upload er for stor", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Filerne, du prøver at uploade, er større end den maksimale størrelse for fil-upload på denne server.", + "No favorites yet" : "Ingen foretrukne endnu", "Files and folders you mark as favorite will show up here" : "Filer og mapper som du har markeret som foretrukne, vil blive vist her", "Shared with you" : "Delt med dig", "Shared with others" : "Delt med andre", @@ -126,8 +128,11 @@ "Deleted files" : "Slettede filer", "Text file" : "Tekstfil", "New text file.txt" : "Ny tekst file.txt", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds} time tilbage","{hours}:{minutes}:{seconds} timer tilbage"], "{hours}:{minutes}h" : "{hours}:{minutes}t", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds} minut tilbage","{minutes}:{seconds} minutter tilbage"], "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds} sekund tilbage","{seconds} sekunder tilbage"], "{seconds}s" : "{seconds}s", "Any moment now..." : "Når som helst...", "Soon..." : "Snart...", diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index 723302f015a..cb5b7b95c33 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -121,6 +121,7 @@ OC.L10N.register( "Select all" : "Seleccionar todo", "Upload too large" : "Subida demasido grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que está intentando subir sobrepasan el tamaño máximo permitido en este servidor.", + "No favorites yet" : "Aún no hay favoritos", "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que usted marque como favoritos", "Shared with you" : "Compartido con usted", "Shared with others" : "Compartido con otros", diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index b66b7f96e45..718a74b08a8 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -119,6 +119,7 @@ "Select all" : "Seleccionar todo", "Upload too large" : "Subida demasido grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Los archivos que está intentando subir sobrepasan el tamaño máximo permitido en este servidor.", + "No favorites yet" : "Aún no hay favoritos", "Files and folders you mark as favorite will show up here" : "Aquí aparecerán los archivos y carpetas que usted marque como favoritos", "Shared with you" : "Compartido con usted", "Shared with others" : "Compartido con otros", diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js index 718f1fba0f9..2b241a5e4bf 100644 --- a/apps/files/l10n/es_MX.js +++ b/apps/files/l10n/es_MX.js @@ -52,7 +52,7 @@ OC.L10N.register( "_%n folder_::_%n folders_" : ["%n carpeta","%n carpetas"], "_%n file_::_%n files_" : ["%n archivo","%n archivos"], "{dirs} and {files}" : "{dirs} y {files}", - "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n escondidos"], + "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos"], "You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aquí", "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos"], "New" : "Nuevo", diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json index 9245d75fdd4..b68e2e3f096 100644 --- a/apps/files/l10n/es_MX.json +++ b/apps/files/l10n/es_MX.json @@ -50,7 +50,7 @@ "_%n folder_::_%n folders_" : ["%n carpeta","%n carpetas"], "_%n file_::_%n files_" : ["%n archivo","%n archivos"], "{dirs} and {files}" : "{dirs} y {files}", - "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n escondidos"], + "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos"], "You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aquí", "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos"], "New" : "Nuevo", diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js index a4bda4f3149..924a755a491 100644 --- a/apps/files/l10n/hu.js +++ b/apps/files/l10n/hu.js @@ -121,6 +121,7 @@ OC.L10N.register( "Select all" : "Összes kijelölése", "Upload too large" : "A feltöltés túl nagy", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "A feltöltendő fájlok mérete meghaladja a szerveren megengedett maximális méretet.", + "No favorites yet" : "Még nincsenek kedvencek", "Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg", "Shared with you" : "Megosztva veled", "Shared with others" : "Megosztva másokkal", diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json index f92d2df8c6a..6d76536ce47 100644 --- a/apps/files/l10n/hu.json +++ b/apps/files/l10n/hu.json @@ -119,6 +119,7 @@ "Select all" : "Összes kijelölése", "Upload too large" : "A feltöltés túl nagy", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "A feltöltendő fájlok mérete meghaladja a szerveren megengedett maximális méretet.", + "No favorites yet" : "Még nincsenek kedvencek", "Files and folders you mark as favorite will show up here" : "A kedvencnek jelölt fájlokat és mappákat itt találod meg", "Shared with you" : "Megosztva veled", "Shared with others" : "Megosztva másokkal", diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index 4a5a57eccd1..aea171dbf8b 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -69,6 +69,7 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n byte"], "Favorited" : "Preferiti", "Favorite" : "Preferito", + "Copy direct link (only works for users who have access to this file/folder)" : "Copia link diretto (funziona solo per utenti che hanno accesso a questo file / cartella)", "Folder" : "Cartella", "New folder" : "Nuova cartella", "Upload" : "Carica", @@ -120,6 +121,7 @@ OC.L10N.register( "Select all" : "Seleziona tutto", "Upload too large" : "Caricamento troppo grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "I file che stai provando a caricare superano la dimensione massima consentita su questo server.", + "No favorites yet" : "Nessun preferito ancora", "Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui", "Shared with you" : "Condivisi con te", "Shared with others" : "Condivisi con altri", diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 1ee5b76efdf..b328763425d 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -67,6 +67,7 @@ "_%n byte_::_%n bytes_" : ["%n byte","%n byte"], "Favorited" : "Preferiti", "Favorite" : "Preferito", + "Copy direct link (only works for users who have access to this file/folder)" : "Copia link diretto (funziona solo per utenti che hanno accesso a questo file / cartella)", "Folder" : "Cartella", "New folder" : "Nuova cartella", "Upload" : "Carica", @@ -118,6 +119,7 @@ "Select all" : "Seleziona tutto", "Upload too large" : "Caricamento troppo grande", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "I file che stai provando a caricare superano la dimensione massima consentita su questo server.", + "No favorites yet" : "Nessun preferito ancora", "Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui", "Shared with you" : "Condivisi con te", "Shared with others" : "Condivisi con altri", diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index 35b77bfb4c1..893912f7ef8 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -121,6 +121,7 @@ OC.L10N.register( "Select all" : "すべて選択", "Upload too large" : "アップロードには大きすぎます。", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "アップロードしようとしているファイルは、サーバーで規定された最大サイズを超えています。", + "No favorites yet" : "まだお気に入りはありません", "Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。", "Shared with you" : "他ユーザーがあなたと共有中", "Shared with others" : "他ユーザーと共有中", diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index df598add1ac..8dafe735c23 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -119,6 +119,7 @@ "Select all" : "すべて選択", "Upload too large" : "アップロードには大きすぎます。", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "アップロードしようとしているファイルは、サーバーで規定された最大サイズを超えています。", + "No favorites yet" : "まだお気に入りはありません", "Files and folders you mark as favorite will show up here" : "お気に入りに登録されたファイルやフォルダーは、ここに表示されます。", "Shared with you" : "他ユーザーがあなたと共有中", "Shared with others" : "他ユーザーと共有中", diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js index 8369e962968..ca86b8ff624 100644 --- a/apps/files/l10n/ko.js +++ b/apps/files/l10n/ko.js @@ -1,7 +1,7 @@ OC.L10N.register( "files", { - "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없습니다", + "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없음", "Storage invalid" : "저장소가 잘못됨", "Unknown error" : "알 수 없는 오류", "All files" : "모든 파일", @@ -14,10 +14,11 @@ OC.L10N.register( "Upload cancelled." : "업로드가 취소되었습니다.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename}을(를) 업로드할 수 없습니다. 폴더이거나 0 바이트 파일입니다.", "Not enough free space, you are uploading {size1} but only {size2} is left" : "빈 공간이 부족합니다. 업로드할 파일 크기는 {size1}이지만 현재 {size2}만큼 비었습니다", - "Target folder \"{dir}\" does not exist any more" : "대상 폴더 \"{dir}\"가 존재하지 않습니다", + "Target folder \"{dir}\" does not exist any more" : "대상 폴더 \"{dir}\"이(가) 더 이상 존재하지 않습니다", "Not enough free space" : "빈 공간이 부족합니다", "Uploading..." : "업로드 중...", "..." : "...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize}({bitrate})", "Actions" : "작업", "Download" : "다운로드", "Rename" : "이름 바꾸기", @@ -26,6 +27,7 @@ OC.L10N.register( "Delete" : "삭제", "Disconnect storage" : "저장소 연결 해제", "Unshare" : "공유 해제", + "Could not load info for file \"{file}\"" : "파일 \"{file}\"의 정보를 가져올 수 없음", "Files" : "파일", "Details" : "자세한 정보", "Select" : "선택", @@ -37,12 +39,13 @@ OC.L10N.register( "Could not move \"{file}\"" : "\"{file}\"을(를) 이동할 수 없음", "{newName} already exists" : "{newName}이(가) 이미 존재함", "Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\"의 이름을 변경할 수 없음, 더 이상 존재하지 않음", - "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "\"{dir}\" 폴더 내에 \"{targetName}\" 파일이 이미 있습니다. 다른 이름을 사용하십시오.", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "폴더 \"{dir}\" 내에 파일 \"{targetName}\"이(가) 이미 있습니다. 다른 이름을 사용하십시오.", "Could not rename \"{fileName}\"" : "\"{fileName}\"의 이름을 바꿀 수 없음", "Could not create file \"{file}\"" : "\"{file}\"을(를) 만들 수 없음", "Could not create file \"{file}\" because it already exists" : "파일이 이미 존재하므로 \"{file}\"을(를) 만들 수 없음", "Could not create folder \"{dir}\" because it already exists" : "폴더가 이미 존재하므로 폴더 \"{dir}\"을(를) 만들 수 없음", "Error deleting file \"{fileName}\"." : "파일 \"{fileName}\"을(를) 삭제할 수 없습니다.", + "No search results in other folders for {tag}{filter}{endtag}" : "다른 폴더에 {tag}{filter}{endtag} 검색 결과가 없음", "Name" : "이름", "Size" : "크기", "Modified" : "수정됨", @@ -55,16 +58,18 @@ OC.L10N.register( "New" : "새로 만들기", "\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.", "File name cannot be empty." : "파일 이름이 비어 있을 수 없습니다.", + "\"{name}\" is not an allowed filetype" : "\"{name}\"은 허용된 파일 형식이 아님", "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner}의 저장소가 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!", "Your storage is full, files can not be updated or synced anymore!" : "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner}의 저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["'{filter}'와(과) 일치"], - "View in folder" : "폴더보기", + "View in folder" : "폴더에서 보기", "Path" : "경로", - "_%n byte_::_%n bytes_" : ["%n바이트"], - "Favorited" : "책갈피에 추가됨", + "_%n byte_::_%n bytes_" : ["%n 바이트"], + "Favorited" : "즐겨찾기에 추가됨", "Favorite" : "즐겨찾기", + "Copy direct link (only works for users who have access to this file/folder)" : "직접 링크 복사(이 파일/폴더에 접근 권한이 있는 사람만)", "Folder" : "폴더", "New folder" : "새 폴더", "Upload" : "업로드", @@ -73,25 +78,26 @@ OC.L10N.register( "Removed from favorites" : "즐겨찾기에서 삭제됨", "You added {file} to your favorites" : "내가 {file}을(를) 즐겨찾기에 추가함", "You removed {file} from your favorites" : "내가 {file}을(를) 즐겨찾기에서 삭제함", - "Created by {user}" : "{user} 님이 만듬", + "File changes" : "파일 변경", + "Created by {user}" : "{user} 님이 만듦", "Changed by {user}" : "{user} 님이 변경함", "Deleted by {user}" : "{user} 님이 삭제함", "Restored by {user}" : "{user} 님이 복원함", "Renamed by {user}" : "{user} 님이 이름을 변경함", "Moved by {user}" : "{user} 님이 이동함", - "You created {file}" : "내가 {file}을(를) 만듬", - "{user} created {file}" : "{user} 님이 {file}을(를) 만듬", - "{file} was created in a public folder" : "공유 폴더에 {file} 이(가) 생성됨", - "You changed {file}" : "내가 {file} 을(를) 변경함", - "{user} changed {file}" : "{user} 님이 {file} 을(를) 변경함", - "You deleted {file}" : "내가 {file} 을(를) 삭제함", - "{user} deleted {file}" : "{user} 님이 {file} 을(를) 삭제함", - "You restored {file}" : "내가 {file} 을(를) 복원함", - "{user} restored {file}" : "{user} 님이 {file} 을(를) 복원함", - "You renamed {oldfile} to {newfile}" : "내가 {oldfile} 을(를) {newfile} 로 이름을 바꿈", - "{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile} 을(를) {newfile} 로 이름을 바꿈", - "You moved {oldfile} to {newfile}" : "내가 {oldfile} 을(를) {newfile} 로 이동함", - "{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile} 을(를) {newfile} 로 이동함", + "You created {file}" : "{file}을(를) 만듦", + "{user} created {file}" : "{user} 님이 {file}을(를) 만듦", + "{file} was created in a public folder" : "공유 폴더에 {file}이(가) 생성됨", + "You changed {file}" : "{file}을(를) 변경함", + "{user} changed {file}" : "{user} 님이 {file}을(를) 변경함", + "You deleted {file}" : "{file}을(를) 삭제함", + "{user} deleted {file}" : "{user} 님이 {file}을(를) 삭제함", + "You restored {file}" : "내가 {file}을(를) 복원함", + "{user} restored {file}" : "{user} 님이 {file}을(를) 복원함", + "You renamed {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이름을 바꿈", + "{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이름을 바꿈", + "You moved {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이동함", + "{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이동함", "A file has been added to or removed from your <strong>favorites</strong>" : "파일이 <strong>즐겨찾기</strong>에서 추가 또는 삭제됨", "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "파일이나 폴더가 <strong>변경되거나</strong> <strong>이름이 바뀜</strong>", "A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>", @@ -106,7 +112,7 @@ OC.L10N.register( "With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM을 사용 중이면 변경 사항이 적용되는 데 최대 5분 정도 걸릴 수 있습니다.", "Missing permissions to edit from here." : "여기에서 편집할 권한이 없습니다.", "Settings" : "설정", - "Show hidden files" : "숨겨진 파일보기", + "Show hidden files" : "숨김 파일 보이기", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "이 주소를 사용하여 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">WebDAV를 통해 파일에 접근할 수 있습니다</a>", "No files in here" : "여기에 파일 없음", @@ -115,7 +121,8 @@ OC.L10N.register( "Select all" : "모두 선택", "Upload too large" : "업로드한 파일이 너무 큼", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "이 파일이 서버에서 허용하는 최대 업로드 가능 용량보다 큽니다.", - "Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다", + "No favorites yet" : "즐겨찾는 항목 없음", + "Files and folders you mark as favorite will show up here" : "즐겨찾기에 추가한 파일과 폴더가 여기에 나타납니다", "Shared with you" : "나와 공유됨", "Shared with others" : "다른 사람과 공유됨", "Shared by link" : "링크로 공유됨", @@ -123,13 +130,16 @@ OC.L10N.register( "Deleted files" : "삭제된 파일", "Text file" : "텍스트 파일", "New text file.txt" : "새 텍스트 파일.txt", - "{hours}:{minutes}h" : "{hours}:{minutes} 시간", - "{minutes}:{seconds}m" : "{minutes}:{seconds} 분", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds}시간 남음"], + "{hours}:{minutes}h" : "{hours}:{minutes}시간", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds}분 남음"], + "{minutes}:{seconds}m" : "{minutes}:{seconds}분", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds}초 남음"], "{seconds}s" : "{seconds}초", - "Any moment now..." : "조금 남음", + "Any moment now..." : "조금 남음...", "Soon..." : "곧...", "File upload is in progress. Leaving the page now will cancel the upload." : "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.", "Copy local link" : "로컬 링크 복사", - "No favorites" : "책갈피 없음" + "No favorites" : "즐겨찾는 항목 없음" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json index af6ca958063..45c24ecee1b 100644 --- a/apps/files/l10n/ko.json +++ b/apps/files/l10n/ko.json @@ -1,5 +1,5 @@ { "translations": { - "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없습니다", + "Storage is temporarily not available" : "저장소를 일시적으로 사용할 수 없음", "Storage invalid" : "저장소가 잘못됨", "Unknown error" : "알 수 없는 오류", "All files" : "모든 파일", @@ -12,10 +12,11 @@ "Upload cancelled." : "업로드가 취소되었습니다.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "{filename}을(를) 업로드할 수 없습니다. 폴더이거나 0 바이트 파일입니다.", "Not enough free space, you are uploading {size1} but only {size2} is left" : "빈 공간이 부족합니다. 업로드할 파일 크기는 {size1}이지만 현재 {size2}만큼 비었습니다", - "Target folder \"{dir}\" does not exist any more" : "대상 폴더 \"{dir}\"가 존재하지 않습니다", + "Target folder \"{dir}\" does not exist any more" : "대상 폴더 \"{dir}\"이(가) 더 이상 존재하지 않습니다", "Not enough free space" : "빈 공간이 부족합니다", "Uploading..." : "업로드 중...", "..." : "...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize}({bitrate})", "Actions" : "작업", "Download" : "다운로드", "Rename" : "이름 바꾸기", @@ -24,6 +25,7 @@ "Delete" : "삭제", "Disconnect storage" : "저장소 연결 해제", "Unshare" : "공유 해제", + "Could not load info for file \"{file}\"" : "파일 \"{file}\"의 정보를 가져올 수 없음", "Files" : "파일", "Details" : "자세한 정보", "Select" : "선택", @@ -35,12 +37,13 @@ "Could not move \"{file}\"" : "\"{file}\"을(를) 이동할 수 없음", "{newName} already exists" : "{newName}이(가) 이미 존재함", "Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\"의 이름을 변경할 수 없음, 더 이상 존재하지 않음", - "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "\"{dir}\" 폴더 내에 \"{targetName}\" 파일이 이미 있습니다. 다른 이름을 사용하십시오.", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "폴더 \"{dir}\" 내에 파일 \"{targetName}\"이(가) 이미 있습니다. 다른 이름을 사용하십시오.", "Could not rename \"{fileName}\"" : "\"{fileName}\"의 이름을 바꿀 수 없음", "Could not create file \"{file}\"" : "\"{file}\"을(를) 만들 수 없음", "Could not create file \"{file}\" because it already exists" : "파일이 이미 존재하므로 \"{file}\"을(를) 만들 수 없음", "Could not create folder \"{dir}\" because it already exists" : "폴더가 이미 존재하므로 폴더 \"{dir}\"을(를) 만들 수 없음", "Error deleting file \"{fileName}\"." : "파일 \"{fileName}\"을(를) 삭제할 수 없습니다.", + "No search results in other folders for {tag}{filter}{endtag}" : "다른 폴더에 {tag}{filter}{endtag} 검색 결과가 없음", "Name" : "이름", "Size" : "크기", "Modified" : "수정됨", @@ -53,16 +56,18 @@ "New" : "새로 만들기", "\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.", "File name cannot be empty." : "파일 이름이 비어 있을 수 없습니다.", + "\"{name}\" is not an allowed filetype" : "\"{name}\"은 허용된 파일 형식이 아님", "Storage of {owner} is full, files can not be updated or synced anymore!" : "{owner}의 저장소가 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!", "Your storage is full, files can not be updated or synced anymore!" : "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "{owner}의 저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)", "_matches '{filter}'_::_match '{filter}'_" : ["'{filter}'와(과) 일치"], - "View in folder" : "폴더보기", + "View in folder" : "폴더에서 보기", "Path" : "경로", - "_%n byte_::_%n bytes_" : ["%n바이트"], - "Favorited" : "책갈피에 추가됨", + "_%n byte_::_%n bytes_" : ["%n 바이트"], + "Favorited" : "즐겨찾기에 추가됨", "Favorite" : "즐겨찾기", + "Copy direct link (only works for users who have access to this file/folder)" : "직접 링크 복사(이 파일/폴더에 접근 권한이 있는 사람만)", "Folder" : "폴더", "New folder" : "새 폴더", "Upload" : "업로드", @@ -71,25 +76,26 @@ "Removed from favorites" : "즐겨찾기에서 삭제됨", "You added {file} to your favorites" : "내가 {file}을(를) 즐겨찾기에 추가함", "You removed {file} from your favorites" : "내가 {file}을(를) 즐겨찾기에서 삭제함", - "Created by {user}" : "{user} 님이 만듬", + "File changes" : "파일 변경", + "Created by {user}" : "{user} 님이 만듦", "Changed by {user}" : "{user} 님이 변경함", "Deleted by {user}" : "{user} 님이 삭제함", "Restored by {user}" : "{user} 님이 복원함", "Renamed by {user}" : "{user} 님이 이름을 변경함", "Moved by {user}" : "{user} 님이 이동함", - "You created {file}" : "내가 {file}을(를) 만듬", - "{user} created {file}" : "{user} 님이 {file}을(를) 만듬", - "{file} was created in a public folder" : "공유 폴더에 {file} 이(가) 생성됨", - "You changed {file}" : "내가 {file} 을(를) 변경함", - "{user} changed {file}" : "{user} 님이 {file} 을(를) 변경함", - "You deleted {file}" : "내가 {file} 을(를) 삭제함", - "{user} deleted {file}" : "{user} 님이 {file} 을(를) 삭제함", - "You restored {file}" : "내가 {file} 을(를) 복원함", - "{user} restored {file}" : "{user} 님이 {file} 을(를) 복원함", - "You renamed {oldfile} to {newfile}" : "내가 {oldfile} 을(를) {newfile} 로 이름을 바꿈", - "{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile} 을(를) {newfile} 로 이름을 바꿈", - "You moved {oldfile} to {newfile}" : "내가 {oldfile} 을(를) {newfile} 로 이동함", - "{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile} 을(를) {newfile} 로 이동함", + "You created {file}" : "{file}을(를) 만듦", + "{user} created {file}" : "{user} 님이 {file}을(를) 만듦", + "{file} was created in a public folder" : "공유 폴더에 {file}이(가) 생성됨", + "You changed {file}" : "{file}을(를) 변경함", + "{user} changed {file}" : "{user} 님이 {file}을(를) 변경함", + "You deleted {file}" : "{file}을(를) 삭제함", + "{user} deleted {file}" : "{user} 님이 {file}을(를) 삭제함", + "You restored {file}" : "내가 {file}을(를) 복원함", + "{user} restored {file}" : "{user} 님이 {file}을(를) 복원함", + "You renamed {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이름을 바꿈", + "{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이름을 바꿈", + "You moved {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이동함", + "{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이동함", "A file has been added to or removed from your <strong>favorites</strong>" : "파일이 <strong>즐겨찾기</strong>에서 추가 또는 삭제됨", "A file or folder has been <strong>changed</strong> or <strong>renamed</strong>" : "파일이나 폴더가 <strong>변경되거나</strong> <strong>이름이 바뀜</strong>", "A new file or folder has been <strong>created</strong>" : "새 파일이나 폴더가 <strong>생성됨</strong>", @@ -104,7 +110,7 @@ "With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM을 사용 중이면 변경 사항이 적용되는 데 최대 5분 정도 걸릴 수 있습니다.", "Missing permissions to edit from here." : "여기에서 편집할 권한이 없습니다.", "Settings" : "설정", - "Show hidden files" : "숨겨진 파일보기", + "Show hidden files" : "숨김 파일 보이기", "WebDAV" : "WebDAV", "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "이 주소를 사용하여 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">WebDAV를 통해 파일에 접근할 수 있습니다</a>", "No files in here" : "여기에 파일 없음", @@ -113,7 +119,8 @@ "Select all" : "모두 선택", "Upload too large" : "업로드한 파일이 너무 큼", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "이 파일이 서버에서 허용하는 최대 업로드 가능 용량보다 큽니다.", - "Files and folders you mark as favorite will show up here" : "책갈피에 추가한 파일과 폴더가 여기에 나타납니다", + "No favorites yet" : "즐겨찾는 항목 없음", + "Files and folders you mark as favorite will show up here" : "즐겨찾기에 추가한 파일과 폴더가 여기에 나타납니다", "Shared with you" : "나와 공유됨", "Shared with others" : "다른 사람과 공유됨", "Shared by link" : "링크로 공유됨", @@ -121,13 +128,16 @@ "Deleted files" : "삭제된 파일", "Text file" : "텍스트 파일", "New text file.txt" : "새 텍스트 파일.txt", - "{hours}:{minutes}h" : "{hours}:{minutes} 시간", - "{minutes}:{seconds}m" : "{minutes}:{seconds} 분", + "_{hours}:{minutes}:{seconds} hour left_::_{hours}:{minutes}:{seconds} hours left_" : ["{hours}:{minutes}:{seconds}시간 남음"], + "{hours}:{minutes}h" : "{hours}:{minutes}시간", + "_{minutes}:{seconds} minute left_::_{minutes}:{seconds} minutes left_" : ["{minutes}:{seconds}분 남음"], + "{minutes}:{seconds}m" : "{minutes}:{seconds}분", + "_{seconds} second left_::_{seconds} seconds left_" : ["{seconds}초 남음"], "{seconds}s" : "{seconds}초", - "Any moment now..." : "조금 남음", + "Any moment now..." : "조금 남음...", "Soon..." : "곧...", "File upload is in progress. Leaving the page now will cancel the upload." : "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.", "Copy local link" : "로컬 링크 복사", - "No favorites" : "책갈피 없음" + "No favorites" : "즐겨찾는 항목 없음" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index 2f89e7956e1..62860215eca 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -121,6 +121,7 @@ OC.L10N.register( "Select all" : "Wybierz wszystko", "Upload too large" : "Ładowany plik jest za duży", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.", + "No favorites yet" : "Brak jeszcze ulubionych", "Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj", "Shared with you" : "Udostępnione dla Ciebie", "Shared with others" : "Udostępnione przez Ciebie", diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index 65022458e40..ab3d703873e 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -119,6 +119,7 @@ "Select all" : "Wybierz wszystko", "Upload too large" : "Ładowany plik jest za duży", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.", + "No favorites yet" : "Brak jeszcze ulubionych", "Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj", "Shared with you" : "Udostępnione dla Ciebie", "Shared with others" : "Udostępnione przez Ciebie", diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 0008e239b4f..9efb56cec1e 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -12,7 +12,7 @@ OC.L10N.register( "Favorites" : "Favoritos", "Could not create folder \"{dir}\"" : "Não foi possível criar a pasta \"{dir}\"", "Upload cancelled." : "Envio cancelado.", - "Unable to upload {filename} as it is a directory or has 0 bytes" : "Não é possível fazer o envio de {filename}, pois é um diretório ou tem 0 bytes", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Não foi possível fazer o envio de {filename}, pois é um diretório ou tem 0 bytes", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Não há espaço suficiente, você está enviando {size1} mas resta apenas {size2}", "Target folder \"{dir}\" does not exist any more" : "Pasta de destino \"{dir}\" não existe mais", "Not enough free space" : "Espaço livre insuficiente", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 0a288976a10..f185237235c 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -10,7 +10,7 @@ "Favorites" : "Favoritos", "Could not create folder \"{dir}\"" : "Não foi possível criar a pasta \"{dir}\"", "Upload cancelled." : "Envio cancelado.", - "Unable to upload {filename} as it is a directory or has 0 bytes" : "Não é possível fazer o envio de {filename}, pois é um diretório ou tem 0 bytes", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Não foi possível fazer o envio de {filename}, pois é um diretório ou tem 0 bytes", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Não há espaço suficiente, você está enviando {size1} mas resta apenas {size2}", "Target folder \"{dir}\" does not exist any more" : "Pasta de destino \"{dir}\" não existe mais", "Not enough free space" : "Espaço livre insuficiente", diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js index eb4df5a6ef2..b79a7d613df 100644 --- a/apps/files/l10n/sl.js +++ b/apps/files/l10n/sl.js @@ -14,6 +14,7 @@ OC.L10N.register( "Upload cancelled." : "Pošiljanje je preklicano.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Ni mogoče poslati datoteke {filename}, saj je to ali mapa ali pa je velikost datoteke 0 bajtov.", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Na voljo ni dovolj prostora. Velikost poslane datoteke je {size1}, na voljo pa je je {size2}.", + "Target folder \"{dir}\" does not exist any more" : "Ciljna mapa \"{dir}\" ne obstaja več", "Not enough free space" : "Ni dovolj prostora", "Uploading..." : "Poteka pošiljanje ...", "..." : "...", @@ -21,9 +22,12 @@ OC.L10N.register( "Actions" : "Dejanja", "Download" : "Prejmi", "Rename" : "Preimenuj", + "Move" : "Premakni", + "Target folder" : "Ciljna mapa", "Delete" : "Izbriši", "Disconnect storage" : "Odklopi shrambo", "Unshare" : "Prekini souporabo", + "Could not load info for file \"{file}\"" : "Ni bilo mogoče naložiti podatke za datoteko \"{file}\"", "Files" : "Datoteke", "Details" : "Podrobnosti", "Select" : "Izberi", @@ -41,11 +45,12 @@ OC.L10N.register( "Could not create file \"{file}\" because it already exists" : "Ni mogoče ustvariti datoteke \"{file}\", ker že obstaja", "Could not create folder \"{dir}\" because it already exists" : "Ni mogoče ustvariti mape \"{dir}\", ker že obstaja", "Error deleting file \"{fileName}\"." : "Napaka brisanja datoteke \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Ni rezultatov iskanja v drugih mapah {tag}{filter}{endtag}", "Name" : "Ime", "Size" : "Velikost", "Modified" : "Spremenjeno", - "_%n folder_::_%n folders_" : ["%n mapa","%n mapi","%n mape","%n map"], - "_%n file_::_%n files_" : ["%n datoteka","%n datoteki","%n datoteke","%n datotek"], + "_%n folder_::_%n folders_" : ["%n mapa","%n mapi","%n mape","%n mape"], + "_%n file_::_%n files_" : ["%n datoteka","%n datoteki","%n datoteke","%n datoteke"], "{dirs} and {files}" : "{dirs} in {files}", "_including %n hidden_::_including %n hidden_" : ["Vključujoč %n skrit","Vključujoč %n skrita","Vključujoč %n skritih","Vključujoč %n skritih"], "You don’t have permission to upload or create files here" : "Ni ustreznih dovoljenj za pošiljanje ali ustvarjanje datotek na tem mestu.", @@ -53,6 +58,7 @@ OC.L10N.register( "New" : "Novo", "\"{name}\" is an invalid file name." : "\"{name}\" je neveljavno ime datoteke.", "File name cannot be empty." : "Ime datoteke ne sme biti prazno polje.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" ni dovoljena vrsta datoteke", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Shramba uporabnika {owner} je polna, zato datotek ni več mogoče posodabljati in usklajevati!", "Your storage is full, files can not be updated or synced anymore!" : "Shramba je povsem napolnjena. Datotek ni več mogoče posodabljati in usklajevati!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Shramba uporabnika {owner} je polna ({usedSpacePercent}%).", @@ -63,10 +69,35 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bajt","%n bajta","%n bajti","%n bajtov"], "Favorited" : "Označeno kot priljubljeno", "Favorite" : "Priljubljene", + "Copy direct link (only works for users who have access to this file/folder)" : "Kopiraj direktno povezavo (deluje sa mo za uporabnike, ki imajo dostop do datoteke ali mape)", "Folder" : "Mapa", "New folder" : "Nova mapa", "Upload" : "Pošlji", "An error occurred while trying to update the tags" : "Prišlo je do napake med posodabljanjem oznak", + "Added to favorites" : "Dodano med priljubljene", + "Removed from favorites" : "Odstranjeno iz priljubljenih", + "You added {file} to your favorites" : "Dodali ste {file} med priljubljene", + "You removed {file} from your favorites" : "Odstranili ste {file} od priljubljenih", + "File changes" : "Sprememba datoteke", + "Created by {user}" : "Ustvarjeno od {user}", + "Changed by {user}" : "Spremenjeno od {user}", + "Deleted by {user}" : "Izbrisano od {user}", + "Restored by {user}" : "Obnovljeno od {user}", + "Renamed by {user}" : "Preimenovano od {user}", + "Moved by {user}" : "Premaknjeno od {user}", + "You created {file}" : "Ustvarili ste {file}", + "{user} created {file}" : "{user} ustvarili {file}", + "{file} was created in a public folder" : "{file} usrvarjena je bila javna mapa", + "You changed {file}" : "Spremenili ste {file}", + "{user} changed {file}" : "{user} spremenil {file}", + "You deleted {file}" : "Izbrisali ste {file}", + "{user} deleted {file}" : "{user} izbrisal {file}", + "You restored {file}" : "Obnovili ste {file}", + "{user} restored {file}" : "{user} obnovil {file}", + "You renamed {oldfile} to {newfile}" : "Preimenovali ste {oldfile} v {newfile}", + "{user} renamed {oldfile} to {newfile}" : "{user} preimenoval {oldfile} v {newfile}", + "You moved {oldfile} to {newfile}" : "Premaknili ste {oldfile} v {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} premaknil {oldfile} v {newfile}", "A new file or folder has been <strong>created</strong>" : "Nova datoteka ali mapa je <strong>ustvarjena</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omeji obvestila o ustvarjanju in spreminjanju <strong>najpogosteje uporabljenih </strong> datotek <em>(omogoči pretok)</em>", "Upload (max. %s)" : "Pošiljanje (omejitev %s)", @@ -86,55 +117,21 @@ OC.L10N.register( "Select all" : "izberi vse", "Upload too large" : "Prekoračenje omejitve velikosti", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Datoteke, ki jih želite poslati, presegajo največjo dovoljeno velikost na strežniku.", - "No favorites" : "Ni priljubljenih predmetov", + "No favorites yet" : "Še ni priljubljena", "Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo zbrane na tem mestu.", + "Shared with you" : "V skupni rabi z vami", + "Shared with others" : "V skupni rabi z ostalimi", + "Shared by link" : "Deljeno s povezavo", + "Deleted files" : "Izbrisane datoteke", "Text file" : "Besedilna datoteka", "New text file.txt" : "Nova datoteka.txt", - "Storage not available" : "Na voljo ni dovolj prostora", - "Unable to set upload directory." : "Mapo, v katero boste prenašali dokumente, ni mogoče določiti", - "Invalid Token" : "Neveljaven žeton", - "No file was uploaded. Unknown error" : "Ni poslane datoteke. Neznana napaka.", - "There is no error, the file uploaded with success" : "Datoteka je uspešno naložena.", - "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Poslana datoteka presega dovoljeno velikost, ki je določena z možnostjo upload_max_filesize v datoteki php.ini:", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Poslana datoteka presega velikost, ki jo določa parameter največje dovoljene velikosti v obrazcu HTML.", - "The uploaded file was only partially uploaded" : "Poslan je le del datoteke.", - "No file was uploaded" : "Ni poslane datoteke", - "Missing a temporary folder" : "Manjka začasna mapa", - "Failed to write to disk" : "Pisanje na disk je spodletelo", - "Not enough storage available" : "Na voljo ni dovolj prostora", - "The target folder has been moved or deleted." : "Ciljna mapa je premaknjena ali izbrisana.", - "Upload failed. Could not find uploaded file" : "Pošiljanje je spodletelo. Ni mogoče najti poslane datoteke.", - "Upload failed. Could not get file info." : "Pošiljanje je spodletelo. Ni mogoče pridobiti podrobnosti datoteke.", - "Invalid directory." : "Neveljavna mapa.", - "Total file size {size1} exceeds upload limit {size2}" : "Skupna velikost {size1} presega omejitev velikosti {size2}", - "Error uploading file \"{fileName}\": {message}" : "Napaka pošiljanja datoteke \"{fileName}\": {message}", - "Could not get result from server." : "Ni mogoče pridobiti podatkov s strežnika.", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "še {hours}:{minutes}:{seconds} ur{plural_s}", "{hours}:{minutes}h" : "{hours}:{minutes}h", - "{minutes}:{seconds} minute{plural_s} left" : "še {minutes}:{seconds} minut{plural_s}", "{minutes}:{seconds}m" : "{minutes}:{seconds}min", - "{seconds} second{plural_s} left" : "še {seconds} sekund{plural_s}", "{seconds}s" : "{seconds}s", "Any moment now..." : "Vsak trenutek ...", "Soon..." : "Kmalu", "File upload is in progress. Leaving the page now will cancel the upload." : "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.", - "No entries in this folder match '{filter}'" : "Ni zadetkov, ki bi bili skladni z nizom '{filter}'", - "Local link" : "Krajevna povezava", - "{newname} already exists" : "{newname} že obstaja", - "A file or folder has been <strong>changed</strong>" : "Datoteka ali mapa je <strong>spremenjena</strong>.", - "A file or folder has been <strong>deleted</strong>" : "Datoteka ali mapa je <strong>izbrisana</strong>.", - "A file or folder has been <strong>restored</strong>" : "Datoteka ali mapa je <strong>obnovljena</strong>.", - "You created %1$s" : "Ustvarili ste %1$s", - "%2$s created %1$s" : "%2$s je ustvaril %1$s", - "%1$s was created in a public folder" : "Datoteka %1$s je ustvarjena v javni mapi.", - "You changed %1$s" : "Spremenili ste %1$s", - "%2$s changed %1$s" : "%2$s je spremenil %1$s", - "You deleted %1$s" : "Izbrisali ste %1$s", - "%2$s deleted %1$s" : "%2$s je izbrisal %1$s", - "You restored %1$s" : "Obnovljen je predmet %1$s", - "%2$s restored %1$s" : "Uporabnik %2$s je obnovil predmet %1$s.", - "Changed by %2$s" : "Zadnja sprememba: %2$s", - "Deleted by %2$s" : "Izbrisano: %2$s", - "Restored by %2$s" : "Obnovljeno: %2$s" + "Copy local link" : "Kopiraj lokalno povezavo", + "No favorites" : "Ni priljubljenih predmetov" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/files/l10n/sl.json b/apps/files/l10n/sl.json index 0297cd72860..792ae715d05 100644 --- a/apps/files/l10n/sl.json +++ b/apps/files/l10n/sl.json @@ -12,6 +12,7 @@ "Upload cancelled." : "Pošiljanje je preklicano.", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Ni mogoče poslati datoteke {filename}, saj je to ali mapa ali pa je velikost datoteke 0 bajtov.", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Na voljo ni dovolj prostora. Velikost poslane datoteke je {size1}, na voljo pa je je {size2}.", + "Target folder \"{dir}\" does not exist any more" : "Ciljna mapa \"{dir}\" ne obstaja več", "Not enough free space" : "Ni dovolj prostora", "Uploading..." : "Poteka pošiljanje ...", "..." : "...", @@ -19,9 +20,12 @@ "Actions" : "Dejanja", "Download" : "Prejmi", "Rename" : "Preimenuj", + "Move" : "Premakni", + "Target folder" : "Ciljna mapa", "Delete" : "Izbriši", "Disconnect storage" : "Odklopi shrambo", "Unshare" : "Prekini souporabo", + "Could not load info for file \"{file}\"" : "Ni bilo mogoče naložiti podatke za datoteko \"{file}\"", "Files" : "Datoteke", "Details" : "Podrobnosti", "Select" : "Izberi", @@ -39,11 +43,12 @@ "Could not create file \"{file}\" because it already exists" : "Ni mogoče ustvariti datoteke \"{file}\", ker že obstaja", "Could not create folder \"{dir}\" because it already exists" : "Ni mogoče ustvariti mape \"{dir}\", ker že obstaja", "Error deleting file \"{fileName}\"." : "Napaka brisanja datoteke \"{fileName}\".", + "No search results in other folders for {tag}{filter}{endtag}" : "Ni rezultatov iskanja v drugih mapah {tag}{filter}{endtag}", "Name" : "Ime", "Size" : "Velikost", "Modified" : "Spremenjeno", - "_%n folder_::_%n folders_" : ["%n mapa","%n mapi","%n mape","%n map"], - "_%n file_::_%n files_" : ["%n datoteka","%n datoteki","%n datoteke","%n datotek"], + "_%n folder_::_%n folders_" : ["%n mapa","%n mapi","%n mape","%n mape"], + "_%n file_::_%n files_" : ["%n datoteka","%n datoteki","%n datoteke","%n datoteke"], "{dirs} and {files}" : "{dirs} in {files}", "_including %n hidden_::_including %n hidden_" : ["Vključujoč %n skrit","Vključujoč %n skrita","Vključujoč %n skritih","Vključujoč %n skritih"], "You don’t have permission to upload or create files here" : "Ni ustreznih dovoljenj za pošiljanje ali ustvarjanje datotek na tem mestu.", @@ -51,6 +56,7 @@ "New" : "Novo", "\"{name}\" is an invalid file name." : "\"{name}\" je neveljavno ime datoteke.", "File name cannot be empty." : "Ime datoteke ne sme biti prazno polje.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" ni dovoljena vrsta datoteke", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Shramba uporabnika {owner} je polna, zato datotek ni več mogoče posodabljati in usklajevati!", "Your storage is full, files can not be updated or synced anymore!" : "Shramba je povsem napolnjena. Datotek ni več mogoče posodabljati in usklajevati!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Shramba uporabnika {owner} je polna ({usedSpacePercent}%).", @@ -61,10 +67,35 @@ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajta","%n bajti","%n bajtov"], "Favorited" : "Označeno kot priljubljeno", "Favorite" : "Priljubljene", + "Copy direct link (only works for users who have access to this file/folder)" : "Kopiraj direktno povezavo (deluje sa mo za uporabnike, ki imajo dostop do datoteke ali mape)", "Folder" : "Mapa", "New folder" : "Nova mapa", "Upload" : "Pošlji", "An error occurred while trying to update the tags" : "Prišlo je do napake med posodabljanjem oznak", + "Added to favorites" : "Dodano med priljubljene", + "Removed from favorites" : "Odstranjeno iz priljubljenih", + "You added {file} to your favorites" : "Dodali ste {file} med priljubljene", + "You removed {file} from your favorites" : "Odstranili ste {file} od priljubljenih", + "File changes" : "Sprememba datoteke", + "Created by {user}" : "Ustvarjeno od {user}", + "Changed by {user}" : "Spremenjeno od {user}", + "Deleted by {user}" : "Izbrisano od {user}", + "Restored by {user}" : "Obnovljeno od {user}", + "Renamed by {user}" : "Preimenovano od {user}", + "Moved by {user}" : "Premaknjeno od {user}", + "You created {file}" : "Ustvarili ste {file}", + "{user} created {file}" : "{user} ustvarili {file}", + "{file} was created in a public folder" : "{file} usrvarjena je bila javna mapa", + "You changed {file}" : "Spremenili ste {file}", + "{user} changed {file}" : "{user} spremenil {file}", + "You deleted {file}" : "Izbrisali ste {file}", + "{user} deleted {file}" : "{user} izbrisal {file}", + "You restored {file}" : "Obnovili ste {file}", + "{user} restored {file}" : "{user} obnovil {file}", + "You renamed {oldfile} to {newfile}" : "Preimenovali ste {oldfile} v {newfile}", + "{user} renamed {oldfile} to {newfile}" : "{user} preimenoval {oldfile} v {newfile}", + "You moved {oldfile} to {newfile}" : "Premaknili ste {oldfile} v {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} premaknil {oldfile} v {newfile}", "A new file or folder has been <strong>created</strong>" : "Nova datoteka ali mapa je <strong>ustvarjena</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Omeji obvestila o ustvarjanju in spreminjanju <strong>najpogosteje uporabljenih </strong> datotek <em>(omogoči pretok)</em>", "Upload (max. %s)" : "Pošiljanje (omejitev %s)", @@ -84,55 +115,21 @@ "Select all" : "izberi vse", "Upload too large" : "Prekoračenje omejitve velikosti", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Datoteke, ki jih želite poslati, presegajo največjo dovoljeno velikost na strežniku.", - "No favorites" : "Ni priljubljenih predmetov", + "No favorites yet" : "Še ni priljubljena", "Files and folders you mark as favorite will show up here" : "Datoteke ali mape, ki so označene kot priljubljene, bodo zbrane na tem mestu.", + "Shared with you" : "V skupni rabi z vami", + "Shared with others" : "V skupni rabi z ostalimi", + "Shared by link" : "Deljeno s povezavo", + "Deleted files" : "Izbrisane datoteke", "Text file" : "Besedilna datoteka", "New text file.txt" : "Nova datoteka.txt", - "Storage not available" : "Na voljo ni dovolj prostora", - "Unable to set upload directory." : "Mapo, v katero boste prenašali dokumente, ni mogoče določiti", - "Invalid Token" : "Neveljaven žeton", - "No file was uploaded. Unknown error" : "Ni poslane datoteke. Neznana napaka.", - "There is no error, the file uploaded with success" : "Datoteka je uspešno naložena.", - "The uploaded file exceeds the upload_max_filesize directive in php.ini: " : "Poslana datoteka presega dovoljeno velikost, ki je določena z možnostjo upload_max_filesize v datoteki php.ini:", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Poslana datoteka presega velikost, ki jo določa parameter največje dovoljene velikosti v obrazcu HTML.", - "The uploaded file was only partially uploaded" : "Poslan je le del datoteke.", - "No file was uploaded" : "Ni poslane datoteke", - "Missing a temporary folder" : "Manjka začasna mapa", - "Failed to write to disk" : "Pisanje na disk je spodletelo", - "Not enough storage available" : "Na voljo ni dovolj prostora", - "The target folder has been moved or deleted." : "Ciljna mapa je premaknjena ali izbrisana.", - "Upload failed. Could not find uploaded file" : "Pošiljanje je spodletelo. Ni mogoče najti poslane datoteke.", - "Upload failed. Could not get file info." : "Pošiljanje je spodletelo. Ni mogoče pridobiti podrobnosti datoteke.", - "Invalid directory." : "Neveljavna mapa.", - "Total file size {size1} exceeds upload limit {size2}" : "Skupna velikost {size1} presega omejitev velikosti {size2}", - "Error uploading file \"{fileName}\": {message}" : "Napaka pošiljanja datoteke \"{fileName}\": {message}", - "Could not get result from server." : "Ni mogoče pridobiti podatkov s strežnika.", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "še {hours}:{minutes}:{seconds} ur{plural_s}", "{hours}:{minutes}h" : "{hours}:{minutes}h", - "{minutes}:{seconds} minute{plural_s} left" : "še {minutes}:{seconds} minut{plural_s}", "{minutes}:{seconds}m" : "{minutes}:{seconds}min", - "{seconds} second{plural_s} left" : "še {seconds} sekund{plural_s}", "{seconds}s" : "{seconds}s", "Any moment now..." : "Vsak trenutek ...", "Soon..." : "Kmalu", "File upload is in progress. Leaving the page now will cancel the upload." : "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.", - "No entries in this folder match '{filter}'" : "Ni zadetkov, ki bi bili skladni z nizom '{filter}'", - "Local link" : "Krajevna povezava", - "{newname} already exists" : "{newname} že obstaja", - "A file or folder has been <strong>changed</strong>" : "Datoteka ali mapa je <strong>spremenjena</strong>.", - "A file or folder has been <strong>deleted</strong>" : "Datoteka ali mapa je <strong>izbrisana</strong>.", - "A file or folder has been <strong>restored</strong>" : "Datoteka ali mapa je <strong>obnovljena</strong>.", - "You created %1$s" : "Ustvarili ste %1$s", - "%2$s created %1$s" : "%2$s je ustvaril %1$s", - "%1$s was created in a public folder" : "Datoteka %1$s je ustvarjena v javni mapi.", - "You changed %1$s" : "Spremenili ste %1$s", - "%2$s changed %1$s" : "%2$s je spremenil %1$s", - "You deleted %1$s" : "Izbrisali ste %1$s", - "%2$s deleted %1$s" : "%2$s je izbrisal %1$s", - "You restored %1$s" : "Obnovljen je predmet %1$s", - "%2$s restored %1$s" : "Uporabnik %2$s je obnovil predmet %1$s.", - "Changed by %2$s" : "Zadnja sprememba: %2$s", - "Deleted by %2$s" : "Izbrisano: %2$s", - "Restored by %2$s" : "Obnovljeno: %2$s" + "Copy local link" : "Kopiraj lokalno povezavo", + "No favorites" : "Ni priljubljenih predmetov" },"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/files/l10n/sv.js b/apps/files/l10n/sv.js index c4e1f10bcb1..d5e36728d73 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -58,6 +58,7 @@ OC.L10N.register( "New" : "Ny", "\"{name}\" is an invalid file name." : "\"{name}\" är ett ogiltligt filnamn.", "File name cannot be empty." : "Filnamn kan inte vara tomt.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" är inte en tillåten filtyp", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Lagring av {owner} är full, filer kan inte uppdateras eller synkroniseras längre!", "Your storage is full, files can not be updated or synced anymore!" : "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Lagring av {owner} är nästan full ({usedSpacePercent}%)", @@ -68,6 +69,7 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"], "Favorited" : "Favoriserad", "Favorite" : "Favorit", + "Copy direct link (only works for users who have access to this file/folder)" : "Kopiera direktlänk (fungerar endast för de användare som har tillgång till denna fil eller mapp)", "Folder" : "Mapp", "New folder" : "Ny mapp", "Upload" : "Ladda upp", @@ -119,6 +121,7 @@ OC.L10N.register( "Select all" : "Välj allt", "Upload too large" : "För stor uppladdning", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar på servern.", + "No favorites yet" : "Inga favoriter ännu", "Files and folders you mark as favorite will show up here" : "Filer och mappar markerade som favoriter kommer att visas här", "Shared with you" : "Delad med dig", "Shared with others" : "Delad med andra", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 620f52574cd..50ac86a0d85 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -56,6 +56,7 @@ "New" : "Ny", "\"{name}\" is an invalid file name." : "\"{name}\" är ett ogiltligt filnamn.", "File name cannot be empty." : "Filnamn kan inte vara tomt.", + "\"{name}\" is not an allowed filetype" : "\"{name}\" är inte en tillåten filtyp", "Storage of {owner} is full, files can not be updated or synced anymore!" : "Lagring av {owner} är full, filer kan inte uppdateras eller synkroniseras längre!", "Your storage is full, files can not be updated or synced anymore!" : "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!", "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Lagring av {owner} är nästan full ({usedSpacePercent}%)", @@ -66,6 +67,7 @@ "_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"], "Favorited" : "Favoriserad", "Favorite" : "Favorit", + "Copy direct link (only works for users who have access to this file/folder)" : "Kopiera direktlänk (fungerar endast för de användare som har tillgång till denna fil eller mapp)", "Folder" : "Mapp", "New folder" : "Ny mapp", "Upload" : "Ladda upp", @@ -117,6 +119,7 @@ "Select all" : "Välj allt", "Upload too large" : "För stor uppladdning", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar på servern.", + "No favorites yet" : "Inga favoriter ännu", "Files and folders you mark as favorite will show up here" : "Filer och mappar markerade som favoriter kommer att visas här", "Shared with you" : "Delad med dig", "Shared with others" : "Delad med andra", diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 18022df8800..92c5432a203 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -69,6 +69,7 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n 字节"], "Favorited" : "已收藏", "Favorite" : "收藏", + "Copy direct link (only works for users who have access to this file/folder)" : "复制直接链接(仅适用于有权访问此文件/文件夹的用户)", "Folder" : "文件夹", "New folder" : "新建文件夹", "Upload" : "上传", @@ -120,6 +121,7 @@ OC.L10N.register( "Select all" : "全部选择", "Upload too large" : "上传文件过大", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "正在上传的文件超过了此服务器允许上传的最大容量限制", + "No favorites yet" : "还没有“我喜欢的”", "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", "Shared with you" : "与您分享", "Shared with others" : "与他人分享", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 98cb6bc8964..c380881ce37 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -67,6 +67,7 @@ "_%n byte_::_%n bytes_" : ["%n 字节"], "Favorited" : "已收藏", "Favorite" : "收藏", + "Copy direct link (only works for users who have access to this file/folder)" : "复制直接链接(仅适用于有权访问此文件/文件夹的用户)", "Folder" : "文件夹", "New folder" : "新建文件夹", "Upload" : "上传", @@ -118,6 +119,7 @@ "Select all" : "全部选择", "Upload too large" : "上传文件过大", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "正在上传的文件超过了此服务器允许上传的最大容量限制", + "No favorites yet" : "还没有“我喜欢的”", "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", "Shared with you" : "与您分享", "Shared with others" : "与他人分享", diff --git a/apps/files/lib/Helper.php b/apps/files/lib/Helper.php index c3d80957913..d2cebce5ddc 100644 --- a/apps/files/lib/Helper.php +++ b/apps/files/lib/Helper.php @@ -157,12 +157,9 @@ class Helper { $entry['isShareMountPoint'] = $i['is_share_mount_point']; } $mountType = null; - if ($i->isShared()) { - $mountType = 'shared'; - } else if ($i->isMounted()) { - $mountType = 'external'; - } - if ($mountType !== null) { + $mount = $i->getMountPoint(); + $mountType = $mount->getMountType(); + if ($mountType !== '') { if ($i->getInternalPath() === '') { $mountType .= '-root'; } diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 934aa054fb6..6b403e7fa85 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -1509,6 +1509,12 @@ describe('OCA.Files.FileList tests', function() { }); it('reloads the list when leaving hidden state', function() { var reloadStub = sinon.stub(fileList, 'reload'); + + // First show should not trigger + $('#app-content-files').trigger(new $.Event('show')); + expect(reloadStub.calledOnce).toEqual(false); + + // Second show should! $('#app-content-files').trigger(new $.Event('show')); expect(reloadStub.calledOnce).toEqual(true); reloadStub.restore(); diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index 925596198cf..ddf609129f6 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -44,7 +44,7 @@ $appContainer = \OC_Mount_Config::$app->getContainer(); 'appname' => 'files_external', 'script' => 'list.php', 'order' => 30, - 'name' => $l->t('External storage'), + 'name' => $l->t('External storages'), ]; }); diff --git a/apps/files_external/css/settings.css b/apps/files_external/css/settings.css index 38e497eebe6..bac89e26b09 100644 --- a/apps/files_external/css/settings.css +++ b/apps/files_external/css/settings.css @@ -1,6 +1,5 @@ #global_credentials { padding: 0 30px; - margin-bottom: 0px; } #files_external { @@ -115,3 +114,7 @@ td.mountPoint, td.backend { width:160px; } #externalStorage .mountOptionsDropdown { margin-right: 40px; } + +.nav-icon-external-storage { + background-image: url('../img/app-dark.svg?v=1'); +} diff --git a/apps/files_external/js/app.js b/apps/files_external/js/app.js index d3ce2010ecd..859a820f14c 100644 --- a/apps/files_external/js/app.js +++ b/apps/files_external/js/app.js @@ -35,7 +35,7 @@ OCA.External.App = { ); this._extendFileList(this.fileList); - this.fileList.appName = t('files_external', 'External storage'); + this.fileList.appName = t('files_external', 'External storages'); return this.fileList; }, @@ -111,4 +111,3 @@ $(document).ready(function() { } /* End Status Manager */ }); - diff --git a/apps/files_external/js/mountsfilelist.js b/apps/files_external/js/mountsfilelist.js index 35aef751fef..3beee6f73b2 100644 --- a/apps/files_external/js/mountsfilelist.js +++ b/apps/files_external/js/mountsfilelist.js @@ -28,7 +28,7 @@ FileList.prototype = _.extend({}, OCA.Files.FileList.prototype, /** @lends OCA.External.FileList.prototype */ { - appName: 'External storage', + appName: 'External storages', /** * @private diff --git a/apps/files_external/l10n/cs.js b/apps/files_external/l10n/cs.js index 5808d649dd3..84445e379b6 100644 --- a/apps/files_external/l10n/cs.js +++ b/apps/files_external/l10n/cs.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Zadejte prosím platný klíč a tajné heslo aplikace.", "Step 1 failed. Exception: %s" : "Selhal krok 1. Výjimka: %s", "Step 2 failed. Exception: %s" : "Selhal krok 2. Výjimka: %s", - "External storage" : "Externí úložiště", + "External storages" : "Externí úložiště", "Dropbox App Configuration" : "Nastavení aplikace Dropbox", "Google Drive App Configuration" : "Nastavení aplikace Disk Google", "Personal" : "Osobní", @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Přihlašovací údaje uloženy", "Credentials saving failed" : "Uložení přihlašovacích údajů selhalo", "Credentials required" : "Vyžadovány přihlašovací údaje", + "Storage with ID \"%d\" not found" : "Úložiště s ID \"%d\" nebylo nalezeno", "Invalid backend or authentication mechanism class" : "Neplatný backend nebo třída ověřovacího mechanismu", "Invalid mount point" : "Neplatný přípojný bod", "Objectstore forbidden" : "Úložiště objektů zakázáno", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Neuspokojivé parametry ověřovacího mechanismu", "Insufficient data: %s" : "Nedostatečná data: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Úložiště s ID \"%d\" není uživatelksky upravitelné", "Access key" : "Přístupový klíč", "Secret key" : "Tajný klíč", "Builtin" : "Zabudované", @@ -100,7 +102,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Jméno služby", "Request timeout (seconds)" : "Čas vypršení požadavku (sekundy)", - "External storages" : "Externí úložiště", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL podpora v PHP není povolena nebo nainstalována. Není možné připojit %s. Prosím požádejte svého správce systému ať ji nainstaluje.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP podpora v PHP není povolena nebo nainstalována. Není možné připojit %s. Prosím požádejte svého správce systému ať ji nainstaluje.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" není instalováno. Není možné připojit %s. Prosím požádejte svého správce systému o instalaci.", @@ -116,6 +117,7 @@ OC.L10N.register( "Never" : "Nikdy", "Once every direct access" : "Jednou pro každý přímý přístup", "Folder name" : "Název adresáře", + "External storage" : "Externí úložiště", "Authentication" : "Ověření", "Configuration" : "Nastavení", "Available for" : "Dostupné pro", diff --git a/apps/files_external/l10n/cs.json b/apps/files_external/l10n/cs.json index 4fdbaaf822f..2b7c1e911ba 100644 --- a/apps/files_external/l10n/cs.json +++ b/apps/files_external/l10n/cs.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Zadejte prosím platný klíč a tajné heslo aplikace.", "Step 1 failed. Exception: %s" : "Selhal krok 1. Výjimka: %s", "Step 2 failed. Exception: %s" : "Selhal krok 2. Výjimka: %s", - "External storage" : "Externí úložiště", + "External storages" : "Externí úložiště", "Dropbox App Configuration" : "Nastavení aplikace Dropbox", "Google Drive App Configuration" : "Nastavení aplikace Disk Google", "Personal" : "Osobní", @@ -36,6 +36,7 @@ "Credentials saved" : "Přihlašovací údaje uloženy", "Credentials saving failed" : "Uložení přihlašovacích údajů selhalo", "Credentials required" : "Vyžadovány přihlašovací údaje", + "Storage with ID \"%d\" not found" : "Úložiště s ID \"%d\" nebylo nalezeno", "Invalid backend or authentication mechanism class" : "Neplatný backend nebo třída ověřovacího mechanismu", "Invalid mount point" : "Neplatný přípojný bod", "Objectstore forbidden" : "Úložiště objektů zakázáno", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Neuspokojivé parametry ověřovacího mechanismu", "Insufficient data: %s" : "Nedostatečná data: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Úložiště s ID \"%d\" není uživatelksky upravitelné", "Access key" : "Přístupový klíč", "Secret key" : "Tajný klíč", "Builtin" : "Zabudované", @@ -98,7 +100,6 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Jméno služby", "Request timeout (seconds)" : "Čas vypršení požadavku (sekundy)", - "External storages" : "Externí úložiště", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL podpora v PHP není povolena nebo nainstalována. Není možné připojit %s. Prosím požádejte svého správce systému ať ji nainstaluje.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP podpora v PHP není povolena nebo nainstalována. Není možné připojit %s. Prosím požádejte svého správce systému ať ji nainstaluje.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" není instalováno. Není možné připojit %s. Prosím požádejte svého správce systému o instalaci.", @@ -114,6 +115,7 @@ "Never" : "Nikdy", "Once every direct access" : "Jednou pro každý přímý přístup", "Folder name" : "Název adresáře", + "External storage" : "Externí úložiště", "Authentication" : "Ověření", "Configuration" : "Nastavení", "Available for" : "Dostupné pro", diff --git a/apps/files_external/l10n/da.js b/apps/files_external/l10n/da.js index 9cdd171020d..92337ba6f92 100644 --- a/apps/files_external/l10n/da.js +++ b/apps/files_external/l10n/da.js @@ -6,7 +6,6 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Angiv venligst gyldig app-nøgle og -hemmelighed.", "Step 1 failed. Exception: %s" : "Trin 1 mislykkedes. Undtagelse: %s", "Step 2 failed. Exception: %s" : "Trin 2 mislykkedes. Undtagelse: %s", - "External storage" : "Eksternt lager", "Personal" : "Personligt", "System" : "System", "Grant access" : "Godkend adgang", @@ -95,6 +94,7 @@ OC.L10N.register( "Never" : "Aldrig", "Once every direct access" : "Kun ved hver direkte tilgang", "Folder name" : "Mappenavn", + "External storage" : "Eksternt lager", "Authentication" : "Godkendelse", "Configuration" : "Opsætning", "Available for" : "Tilgængelig for", diff --git a/apps/files_external/l10n/da.json b/apps/files_external/l10n/da.json index a42de28f84a..bf52994c84f 100644 --- a/apps/files_external/l10n/da.json +++ b/apps/files_external/l10n/da.json @@ -4,7 +4,6 @@ "Please provide a valid app key and secret." : "Angiv venligst gyldig app-nøgle og -hemmelighed.", "Step 1 failed. Exception: %s" : "Trin 1 mislykkedes. Undtagelse: %s", "Step 2 failed. Exception: %s" : "Trin 2 mislykkedes. Undtagelse: %s", - "External storage" : "Eksternt lager", "Personal" : "Personligt", "System" : "System", "Grant access" : "Godkend adgang", @@ -93,6 +92,7 @@ "Never" : "Aldrig", "Once every direct access" : "Kun ved hver direkte tilgang", "Folder name" : "Mappenavn", + "External storage" : "Eksternt lager", "Authentication" : "Godkendelse", "Configuration" : "Opsætning", "Available for" : "Tilgængelig for", diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index 2b157e979f8..0344d49da8b 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel mit Sicherheitsschlüssel eingeben.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", "Step 2 failed. Exception: %s" : "Schritt 2 fehlgeschlagen. Fehlermeldung: %s", - "External storage" : "Externer Speicher", + "External storages" : "Externer Speicher", "Dropbox App Configuration" : "Dropbox-App Konfiguration", "Google Drive App Configuration" : "Google Drive - App Konfiguration", "Personal" : "Persönlich", @@ -102,10 +102,10 @@ OC.L10N.register( "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Service Name", "Request timeout (seconds)" : "Anfrage -Timeout ( Sekunden)", - "External storages" : "Externer Speicher", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie Sich zur Installation an den Systemadministrator.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie Sich zur Installation an den Systemadministrator.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie Sich zur Installation an den Systemadministrator.", + "External storage support" : "Unterstützung für externen Speicher", "No external storage configured" : "Kein externer Speicher konfiguriert", "You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden", "Name" : "Name", @@ -118,6 +118,7 @@ OC.L10N.register( "Never" : "Nie", "Once every direct access" : "Einmal bei jedem Direktzugriff", "Folder name" : "Ordnername", + "External storage" : "Externer Speicher", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index fb21d169690..30f0685c5aa 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Bitte einen gültigen Anwendungsschlüssel mit Sicherheitsschlüssel eingeben.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", "Step 2 failed. Exception: %s" : "Schritt 2 fehlgeschlagen. Fehlermeldung: %s", - "External storage" : "Externer Speicher", + "External storages" : "Externer Speicher", "Dropbox App Configuration" : "Dropbox-App Konfiguration", "Google Drive App Configuration" : "Google Drive - App Konfiguration", "Personal" : "Persönlich", @@ -100,10 +100,10 @@ "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Service Name", "Request timeout (seconds)" : "Anfrage -Timeout ( Sekunden)", - "External storages" : "Externer Speicher", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie Sich zur Installation an den Systemadministrator.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie Sich zur Installation an den Systemadministrator.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie Sich zur Installation an den Systemadministrator.", + "External storage support" : "Unterstützung für externen Speicher", "No external storage configured" : "Kein externer Speicher konfiguriert", "You can add external storages in the personal settings" : "Externe Speicher können in den persönlichen Einstellungen hinzugefügt werden", "Name" : "Name", @@ -116,6 +116,7 @@ "Never" : "Nie", "Once every direct access" : "Einmal bei jedem Direktzugriff", "Folder name" : "Ordnername", + "External storage" : "Externer Speicher", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js index d60ea5c3750..3000b0b6f9a 100644 --- a/apps/files_external/l10n/de_DE.js +++ b/apps/files_external/l10n/de_DE.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Bitte tragen Sie einen gültigen App-Key mit Secret ein.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", "Step 2 failed. Exception: %s" : "Schritt 2 fehlgeschlagen. Fehlermeldung: %s", - "External storage" : "Externer Speicher", + "External storages" : "Externer Speicher", "Dropbox App Configuration" : "Dropbox-App Konfiguration", "Google Drive App Configuration" : "Google Drive - App Konfiguration", "Personal" : "Persönlich", @@ -102,10 +102,10 @@ OC.L10N.register( "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "External storages" : "Externer Speicher", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. %s konnte nicht hinzugefügt werden Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. %s konnte nicht hinzugefügt werden Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. %s konnte nicht hinzugefügt werden. Bitte wenden Sie sich zur Installation an Ihren Administrator.", + "External storage support" : "Unterstützung für externen Speicher", "No external storage configured" : "Kein externer Speicher konfiguriert", "You can add external storages in the personal settings" : "Sie können externe Speicher in den persönlichen Einstellungen hinzufügen", "Name" : "Name", @@ -118,6 +118,7 @@ OC.L10N.register( "Never" : "Nie", "Once every direct access" : "Einmal bei jedem Direktzugriff", "Folder name" : "Ordnername", + "External storage" : "Externer Speicher", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json index 09e5558bba7..cf2c57d14ee 100644 --- a/apps/files_external/l10n/de_DE.json +++ b/apps/files_external/l10n/de_DE.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Bitte tragen Sie einen gültigen App-Key mit Secret ein.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", "Step 2 failed. Exception: %s" : "Schritt 2 fehlgeschlagen. Fehlermeldung: %s", - "External storage" : "Externer Speicher", + "External storages" : "Externer Speicher", "Dropbox App Configuration" : "Dropbox-App Konfiguration", "Google Drive App Configuration" : "Google Drive - App Konfiguration", "Personal" : "Persönlich", @@ -100,10 +100,10 @@ "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "External storages" : "Externer Speicher", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist nicht aktiviert oder installiert. %s konnte nicht hinzugefügt werden Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. %s konnte nicht hinzugefügt werden Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. %s konnte nicht hinzugefügt werden. Bitte wenden Sie sich zur Installation an Ihren Administrator.", + "External storage support" : "Unterstützung für externen Speicher", "No external storage configured" : "Kein externer Speicher konfiguriert", "You can add external storages in the personal settings" : "Sie können externe Speicher in den persönlichen Einstellungen hinzufügen", "Name" : "Name", @@ -116,6 +116,7 @@ "Never" : "Nie", "Once every direct access" : "Einmal bei jedem Direktzugriff", "Folder name" : "Ordnername", + "External storage" : "Externer Speicher", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", diff --git a/apps/files_external/l10n/el.js b/apps/files_external/l10n/el.js index fbd000cf388..b78e01863d5 100644 --- a/apps/files_external/l10n/el.js +++ b/apps/files_external/l10n/el.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Παρακαλούμε δώστε έγκυρο κλειδί εφαρμογής και μυστικό.", "Step 1 failed. Exception: %s" : "Το βήμα 1 απέτυχε. Εξαίρεση: %s", "Step 2 failed. Exception: %s" : "Το βήμα 2 απέτυχε. Εξαίρεση: %s", - "External storage" : "Εξωτερική αποθήκευση", + "External storages" : "Εξωτερική αποθήκευση", "Dropbox App Configuration" : "Ρυθμίσεις εφαρμογής Dropbox", "Google Drive App Configuration" : "Ρυθμίσεις εφαρμογής Google Drive", "Personal" : "Προσωπικά", @@ -63,7 +63,7 @@ OC.L10N.register( "Tenant name" : "Όνομα \"ένοικου\"", "Identity endpoint URL" : "URL τελικού σημείου ταυτοποίησης", "Rackspace" : "Rackspace", - "API key" : "Κλειδί Google API", + "API key" : "Κλειδί API", "Global credentials" : "Παγκόσμια διαπιστευτήρια", "Log-in credentials, save in database" : "Διαπιστευτήρια εισόδου, αποθηκεύστε στην βάση δεδομέων", "Username and password" : "Όνομα χρήστη και κωδικός πρόσβασης", @@ -101,7 +101,6 @@ OC.L10N.register( "OpenStack Object Storage" : "Αποθήκη αντικειμένων OpenStack", "Service name" : "Όνομα υπηρεσίας", "Request timeout (seconds)" : "Χρονικό όριο αιτήματος (δευτερόλεπτα)", - "External storages" : "Εξωτερική αποθήκευση", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η cURL υποστήριξη στην PHP δεν είναι ενεργοποιημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε από τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η FTP υποστήριξη στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκατασταστήσει. ", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" δεν είναι εγκατεστημένο. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ", @@ -117,6 +116,7 @@ OC.L10N.register( "Never" : "Ποτέ", "Once every direct access" : "Σε κάθε απευθείας πρόσβαση", "Folder name" : "Όνομα φακέλου", + "External storage" : "Εξωτερική αποθήκευση", "Authentication" : "Πιστοποίηση", "Configuration" : "Ρυθμίσεις", "Available for" : "Διαθέσιμο για", diff --git a/apps/files_external/l10n/el.json b/apps/files_external/l10n/el.json index d7df7428a41..67182e0b653 100644 --- a/apps/files_external/l10n/el.json +++ b/apps/files_external/l10n/el.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Παρακαλούμε δώστε έγκυρο κλειδί εφαρμογής και μυστικό.", "Step 1 failed. Exception: %s" : "Το βήμα 1 απέτυχε. Εξαίρεση: %s", "Step 2 failed. Exception: %s" : "Το βήμα 2 απέτυχε. Εξαίρεση: %s", - "External storage" : "Εξωτερική αποθήκευση", + "External storages" : "Εξωτερική αποθήκευση", "Dropbox App Configuration" : "Ρυθμίσεις εφαρμογής Dropbox", "Google Drive App Configuration" : "Ρυθμίσεις εφαρμογής Google Drive", "Personal" : "Προσωπικά", @@ -61,7 +61,7 @@ "Tenant name" : "Όνομα \"ένοικου\"", "Identity endpoint URL" : "URL τελικού σημείου ταυτοποίησης", "Rackspace" : "Rackspace", - "API key" : "Κλειδί Google API", + "API key" : "Κλειδί API", "Global credentials" : "Παγκόσμια διαπιστευτήρια", "Log-in credentials, save in database" : "Διαπιστευτήρια εισόδου, αποθηκεύστε στην βάση δεδομέων", "Username and password" : "Όνομα χρήστη και κωδικός πρόσβασης", @@ -99,7 +99,6 @@ "OpenStack Object Storage" : "Αποθήκη αντικειμένων OpenStack", "Service name" : "Όνομα υπηρεσίας", "Request timeout (seconds)" : "Χρονικό όριο αιτήματος (δευτερόλεπτα)", - "External storages" : "Εξωτερική αποθήκευση", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η cURL υποστήριξη στην PHP δεν είναι ενεργοποιημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε από τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Η FTP υποστήριξη στην PHP δεν είναι ενεργοποιημένη ή εγκατεστημένη. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκατασταστήσει. ", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" δεν είναι εγκατεστημένο. Η προσάρτηση του %s δεν είναι δυνατή. Παρακαλούμε ζητήστε τον διαχειριστή του συστήματός σας να το εγκαταστήσει. ", @@ -115,6 +114,7 @@ "Never" : "Ποτέ", "Once every direct access" : "Σε κάθε απευθείας πρόσβαση", "Folder name" : "Όνομα φακέλου", + "External storage" : "Εξωτερική αποθήκευση", "Authentication" : "Πιστοποίηση", "Configuration" : "Ρυθμίσεις", "Available for" : "Διαθέσιμο για", diff --git a/apps/files_external/l10n/en_GB.js b/apps/files_external/l10n/en_GB.js index 4584c322598..969853dd708 100644 --- a/apps/files_external/l10n/en_GB.js +++ b/apps/files_external/l10n/en_GB.js @@ -6,7 +6,6 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", "Step 1 failed. Exception: %s" : "Step 1 failed. Exception: %s", "Step 2 failed. Exception: %s" : "Step 2 failed. Exception: %s", - "External storage" : "External storage", "Dropbox App Configuration" : "Dropbox App Configuration", "Google Drive App Configuration" : "Google Drive App Configuration", "Personal" : "Personal", @@ -109,6 +108,7 @@ OC.L10N.register( "Never" : "Never", "Once every direct access" : "Once every direct access", "Folder name" : "Folder name", + "External storage" : "External storage", "Authentication" : "Authentication", "Configuration" : "Configuration", "Available for" : "Available for", diff --git a/apps/files_external/l10n/en_GB.json b/apps/files_external/l10n/en_GB.json index 0536a3f61e0..032cda3b94c 100644 --- a/apps/files_external/l10n/en_GB.json +++ b/apps/files_external/l10n/en_GB.json @@ -4,7 +4,6 @@ "Please provide a valid app key and secret." : "Please provide a valid app key and secret.", "Step 1 failed. Exception: %s" : "Step 1 failed. Exception: %s", "Step 2 failed. Exception: %s" : "Step 2 failed. Exception: %s", - "External storage" : "External storage", "Dropbox App Configuration" : "Dropbox App Configuration", "Google Drive App Configuration" : "Google Drive App Configuration", "Personal" : "Personal", @@ -107,6 +106,7 @@ "Never" : "Never", "Once every direct access" : "Once every direct access", "Folder name" : "Folder name", + "External storage" : "External storage", "Authentication" : "Authentication", "Configuration" : "Configuration", "Available for" : "Available for", diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js index 06df3f93827..590ff19a4a5 100644 --- a/apps/files_external/l10n/es.js +++ b/apps/files_external/l10n/es.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Por favor facilite una clave de app y una clave secreta válidas.", "Step 1 failed. Exception: %s" : "El paso 1 falló. Excepción: %s", "Step 2 failed. Exception: %s" : "El paso 2 falló. Excepción: %s", - "External storage" : "Almacenamiento externo", + "External storages" : "Almacenamientos externos", "Dropbox App Configuration" : "Configuración de la app de Dropbox", "Google Drive App Configuration" : "Configuración de la app de Google Drive", "Personal" : "Personal", @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Credenciales guardados", "Credentials saving failed" : "Guardado de credenciales fallido", "Credentials required" : "Credenciales requeridos", + "Storage with ID \"%d\" not found" : "No se ha encontrado el almacenamiento con ID \"%d\"", "Invalid backend or authentication mechanism class" : "Sistema o mecanismo de autentificación inválido", "Invalid mount point" : "Punto de montaje no válido", "Objectstore forbidden" : "Objeto de almacenaje prohibido", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Los parámetros del mecanismo de autentificación no son válidos", "Insufficient data: %s" : "Datos insuficientes: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no se puede editar por el usuario", "Access key" : "Clave de acceso", "Secret key" : "Clave secreta", "Builtin" : "Incorporado", @@ -100,7 +102,6 @@ OC.L10N.register( "OpenStack Object Storage" : "Almacenamiento de objeto OpenStack", "Service name" : "Nombre del servicio", "Request timeout (seconds)" : "Tiempo agotado para petición (segundos)", - "External storages" : "Almacenamientos externos", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte de cURL en PHP no está activado o instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP desde PHP no esta habilitado o instalado. Montar el %s no ha sido posible. Por favor consulta al administrador de tu sistema para que lo instale.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no está instalado. El montaje de %s no es posible. Por favor, pregunte a su administrador del sistema para instalarlo.", @@ -116,6 +117,7 @@ OC.L10N.register( "Never" : "Nunca", "Once every direct access" : "Una vez cada acceso directo", "Folder name" : "Nombre de la carpeta", + "External storage" : "Almacenamiento externo", "Authentication" : "Autentificación", "Configuration" : "Configuración", "Available for" : "Disponible para", diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json index d7044228dee..54c3495d7fb 100644 --- a/apps/files_external/l10n/es.json +++ b/apps/files_external/l10n/es.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Por favor facilite una clave de app y una clave secreta válidas.", "Step 1 failed. Exception: %s" : "El paso 1 falló. Excepción: %s", "Step 2 failed. Exception: %s" : "El paso 2 falló. Excepción: %s", - "External storage" : "Almacenamiento externo", + "External storages" : "Almacenamientos externos", "Dropbox App Configuration" : "Configuración de la app de Dropbox", "Google Drive App Configuration" : "Configuración de la app de Google Drive", "Personal" : "Personal", @@ -36,6 +36,7 @@ "Credentials saved" : "Credenciales guardados", "Credentials saving failed" : "Guardado de credenciales fallido", "Credentials required" : "Credenciales requeridos", + "Storage with ID \"%d\" not found" : "No se ha encontrado el almacenamiento con ID \"%d\"", "Invalid backend or authentication mechanism class" : "Sistema o mecanismo de autentificación inválido", "Invalid mount point" : "Punto de montaje no válido", "Objectstore forbidden" : "Objeto de almacenaje prohibido", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Los parámetros del mecanismo de autentificación no son válidos", "Insufficient data: %s" : "Datos insuficientes: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "El almacenamiento con ID \"%d\" no se puede editar por el usuario", "Access key" : "Clave de acceso", "Secret key" : "Clave secreta", "Builtin" : "Incorporado", @@ -98,7 +100,6 @@ "OpenStack Object Storage" : "Almacenamiento de objeto OpenStack", "Service name" : "Nombre del servicio", "Request timeout (seconds)" : "Tiempo agotado para petición (segundos)", - "External storages" : "Almacenamientos externos", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte de cURL en PHP no está activado o instalado. No se puede montar %s. Pídale al administrador del sistema que lo instale.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP desde PHP no esta habilitado o instalado. Montar el %s no ha sido posible. Por favor consulta al administrador de tu sistema para que lo instale.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no está instalado. El montaje de %s no es posible. Por favor, pregunte a su administrador del sistema para instalarlo.", @@ -114,6 +115,7 @@ "Never" : "Nunca", "Once every direct access" : "Una vez cada acceso directo", "Folder name" : "Nombre de la carpeta", + "External storage" : "Almacenamiento externo", "Authentication" : "Autentificación", "Configuration" : "Configuración", "Available for" : "Disponible para", diff --git a/apps/files_external/l10n/es_MX.js b/apps/files_external/l10n/es_MX.js index 9ce0ae70113..3be4f5b40da 100644 --- a/apps/files_external/l10n/es_MX.js +++ b/apps/files_external/l10n/es_MX.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Favor de proporcionar una llave de aplicación y secreto válidos.", "Step 1 failed. Exception: %s" : "Falla en el paso 1: Excepción %s", "Step 2 failed. Exception: %s" : "Paso 2 falló. Excepción: %s", - "External storage" : "Almacenamiento externo", + "External storages" : "Almacenamiento externo", "Dropbox App Configuration" : "Configuración de la aplicación Dropbox", "Google Drive App Configuration" : "Configuración de Aplicación Google Drive", "Personal" : "Personal", @@ -102,22 +102,23 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nombre del servicio", "Request timeout (seconds)" : "Tiemo de vida de la solicitud (segudos)", - "External storages" : "Almacenamiento externo", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Favor de solicitar a su administrador su instalación. ", + "External storage support" : "Soporte de almacenamiento externo", "No external storage configured" : "No se ha configurado el almacenamiento externo", "You can add external storages in the personal settings" : "Usted puede agregar almacenamiento externo en los ajustes personales", "Name" : "Nombre", "Storage type" : "Tipo de almacenamiento", "Scope" : "Alcance", "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar previsualizaciones", + "Enable previews" : "Habilitar vistas previas", "Enable sharing" : "Habilitar compartir", "Check for changes" : "Verificar si hay cambios", "Never" : "Nunca", "Once every direct access" : "Una vez cada acceso directo", "Folder name" : "Nombre de la carpeta", + "External storage" : "Almacenamiento externo", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", diff --git a/apps/files_external/l10n/es_MX.json b/apps/files_external/l10n/es_MX.json index 8e2d1966d9d..c52bc386717 100644 --- a/apps/files_external/l10n/es_MX.json +++ b/apps/files_external/l10n/es_MX.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Favor de proporcionar una llave de aplicación y secreto válidos.", "Step 1 failed. Exception: %s" : "Falla en el paso 1: Excepción %s", "Step 2 failed. Exception: %s" : "Paso 2 falló. Excepción: %s", - "External storage" : "Almacenamiento externo", + "External storages" : "Almacenamiento externo", "Dropbox App Configuration" : "Configuración de la aplicación Dropbox", "Google Drive App Configuration" : "Configuración de Aplicación Google Drive", "Personal" : "Personal", @@ -100,22 +100,23 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nombre del servicio", "Request timeout (seconds)" : "Tiemo de vida de la solicitud (segudos)", - "External storages" : "Almacenamiento externo", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para cURL en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "El soporte para FTP en PHP no se encuentra habilitado o instalado. El montaje de %s no es posible. Favor de solicitar a su administador su instalación. ", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" no se encuentra instalado. El montaje de %s no es posible. Favor de solicitar a su administrador su instalación. ", + "External storage support" : "Soporte de almacenamiento externo", "No external storage configured" : "No se ha configurado el almacenamiento externo", "You can add external storages in the personal settings" : "Usted puede agregar almacenamiento externo en los ajustes personales", "Name" : "Nombre", "Storage type" : "Tipo de almacenamiento", "Scope" : "Alcance", "Enable encryption" : "Habilitar encripción", - "Enable previews" : "Habilitar previsualizaciones", + "Enable previews" : "Habilitar vistas previas", "Enable sharing" : "Habilitar compartir", "Check for changes" : "Verificar si hay cambios", "Never" : "Nunca", "Once every direct access" : "Una vez cada acceso directo", "Folder name" : "Nombre de la carpeta", + "External storage" : "Almacenamiento externo", "Authentication" : "Autenticación", "Configuration" : "Configuración", "Available for" : "Disponible para", diff --git a/apps/files_external/l10n/fi.js b/apps/files_external/l10n/fi.js index 56c0a6def74..f13462b4dc7 100644 --- a/apps/files_external/l10n/fi.js +++ b/apps/files_external/l10n/fi.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Sovellusavain ja salaus ovat virheelliset", "Step 1 failed. Exception: %s" : "Vaihe 1 epäonnistui. Poikkeus: %s", "Step 2 failed. Exception: %s" : "Vaihe 2 epäonnistui. Poikkeus: %s", - "External storage" : "Ulkoinen tallennustila", + "External storages" : "Ulkoiset tallennustilat", "Dropbox App Configuration" : "Dropbox-sovelluksen määritys", "Google Drive App Configuration" : "Google Drive -sovelluksen määritys", "Personal" : "Henkilökohtainen", @@ -102,7 +102,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Palvelun nimi", "Request timeout (seconds)" : "Pyynnön aikakatkaisu (sekunneissa)", - "External storages" : "Ulkoiset tallennustilat", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cULR tuki PHPsta ei ole aktivoitu tai asennettu. Kohteen %s liittäminen ei ole mahdollista. Ota yhteyttä järjestelmänvalvojaan asentaaksesi puuttuvan osan.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tuki PHPsta ei ole aktivoitu tai asennettu. Kohteen %s liittäminen ei ole mahdollista. Ota yhteyttä järjestelmänvalvojaan asentaaksesi puuttuvan osan.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan puuttuva kohde.", @@ -118,6 +117,7 @@ OC.L10N.register( "Never" : "Ei koskaan", "Once every direct access" : "Kerran aina suoran käytön yhteydessä", "Folder name" : "Kansion nimi", + "External storage" : "Ulkoinen tallennustila", "Authentication" : "Tunnistautuminen", "Configuration" : "Asetukset", "Available for" : "Saatavuus", diff --git a/apps/files_external/l10n/fi.json b/apps/files_external/l10n/fi.json index 41d488409d2..0455a925b9e 100644 --- a/apps/files_external/l10n/fi.json +++ b/apps/files_external/l10n/fi.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Sovellusavain ja salaus ovat virheelliset", "Step 1 failed. Exception: %s" : "Vaihe 1 epäonnistui. Poikkeus: %s", "Step 2 failed. Exception: %s" : "Vaihe 2 epäonnistui. Poikkeus: %s", - "External storage" : "Ulkoinen tallennustila", + "External storages" : "Ulkoiset tallennustilat", "Dropbox App Configuration" : "Dropbox-sovelluksen määritys", "Google Drive App Configuration" : "Google Drive -sovelluksen määritys", "Personal" : "Henkilökohtainen", @@ -100,7 +100,6 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Palvelun nimi", "Request timeout (seconds)" : "Pyynnön aikakatkaisu (sekunneissa)", - "External storages" : "Ulkoiset tallennustilat", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cULR tuki PHPsta ei ole aktivoitu tai asennettu. Kohteen %s liittäminen ei ole mahdollista. Ota yhteyttä järjestelmänvalvojaan asentaaksesi puuttuvan osan.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP tuki PHPsta ei ole aktivoitu tai asennettu. Kohteen %s liittäminen ei ole mahdollista. Ota yhteyttä järjestelmänvalvojaan asentaaksesi puuttuvan osan.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ei ole asennettu. Kohteen %s liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan puuttuva kohde.", @@ -116,6 +115,7 @@ "Never" : "Ei koskaan", "Once every direct access" : "Kerran aina suoran käytön yhteydessä", "Folder name" : "Kansion nimi", + "External storage" : "Ulkoinen tallennustila", "Authentication" : "Tunnistautuminen", "Configuration" : "Asetukset", "Available for" : "Saatavuus", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index 80c3ff58a04..2fcea0a7324 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Veuillez fournir une clé d'application et un mot de passe valides.", "Step 1 failed. Exception: %s" : "L’étape 1 a échoué. Erreur : %s", "Step 2 failed. Exception: %s" : "L’étape 2 a échoué. Erreur : %s", - "External storage" : "Stockage externe", + "External storages" : "Stockages externe", "Dropbox App Configuration" : "Configuration de l'application Dropbox", "Google Drive App Configuration" : "Configuration de l'application Google Drive", "Personal" : "Personnel", @@ -102,10 +102,10 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nom du service", "Request timeout (seconds)" : "Délai d'expiration des requêtes (en secondes)", - "External storages" : "Stockages externe", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Le support de cURL dans PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Veuillez demander à votre administrateur système de l'installer.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Le support du FTP dans PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Merci de demander à votre administrateur de l'installer.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" n'est pas installé. Le montage de %s n'est pas possible. Merci de demander à l'administrateur système de l'installer.", + "External storage support" : "Prise en charge du stockage externe", "No external storage configured" : "Aucun stockage externe configuré", "You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes via vos paramètres personnels", "Name" : "Nom", @@ -118,6 +118,7 @@ OC.L10N.register( "Never" : "Jamais", "Once every direct access" : "Une fois à chaque accès direct", "Folder name" : "Nom du dossier", + "External storage" : "Stockage externe", "Authentication" : "Authentification", "Configuration" : "Configuration", "Available for" : "Disponible pour", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index 7f19073c228..dda1877e9e0 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Veuillez fournir une clé d'application et un mot de passe valides.", "Step 1 failed. Exception: %s" : "L’étape 1 a échoué. Erreur : %s", "Step 2 failed. Exception: %s" : "L’étape 2 a échoué. Erreur : %s", - "External storage" : "Stockage externe", + "External storages" : "Stockages externe", "Dropbox App Configuration" : "Configuration de l'application Dropbox", "Google Drive App Configuration" : "Configuration de l'application Google Drive", "Personal" : "Personnel", @@ -100,10 +100,10 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nom du service", "Request timeout (seconds)" : "Délai d'expiration des requêtes (en secondes)", - "External storages" : "Stockages externe", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Le support de cURL dans PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Veuillez demander à votre administrateur système de l'installer.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Le support du FTP dans PHP n'est pas activé ou installé. Le montage de %s n'est pas possible. Merci de demander à votre administrateur de l'installer.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" n'est pas installé. Le montage de %s n'est pas possible. Merci de demander à l'administrateur système de l'installer.", + "External storage support" : "Prise en charge du stockage externe", "No external storage configured" : "Aucun stockage externe configuré", "You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes via vos paramètres personnels", "Name" : "Nom", @@ -116,6 +116,7 @@ "Never" : "Jamais", "Once every direct access" : "Une fois à chaque accès direct", "Folder name" : "Nom du dossier", + "External storage" : "Stockage externe", "Authentication" : "Authentification", "Configuration" : "Configuration", "Available for" : "Disponible pour", diff --git a/apps/files_external/l10n/he.js b/apps/files_external/l10n/he.js index f882f82799c..1945d866141 100644 --- a/apps/files_external/l10n/he.js +++ b/apps/files_external/l10n/he.js @@ -6,7 +6,6 @@ OC.L10N.register( "Please provide a valid app key and secret." : "יש לספק מפתח יישום וסוד תקניים.", "Step 1 failed. Exception: %s" : "שלב 1 נכשל. חריג: %s", "Step 2 failed. Exception: %s" : "שלב 2 נכשל. חריג: %s", - "External storage" : "אחסון חיצוני", "Dropbox App Configuration" : "הגדרות יישום דרופבוקס", "Google Drive App Configuration" : "הגדרות יישום גוגל דרייב", "Personal" : "אישי", @@ -106,6 +105,7 @@ OC.L10N.register( "Never" : "לעולם לא", "Once every direct access" : "פעם אחת כל כניסה ישירה", "Folder name" : "שם התיקייה", + "External storage" : "אחסון חיצוני", "Authentication" : "אימות", "Configuration" : "הגדרות", "Available for" : "זמין עבור", diff --git a/apps/files_external/l10n/he.json b/apps/files_external/l10n/he.json index 950ee01d7f1..6fd1bae007f 100644 --- a/apps/files_external/l10n/he.json +++ b/apps/files_external/l10n/he.json @@ -4,7 +4,6 @@ "Please provide a valid app key and secret." : "יש לספק מפתח יישום וסוד תקניים.", "Step 1 failed. Exception: %s" : "שלב 1 נכשל. חריג: %s", "Step 2 failed. Exception: %s" : "שלב 2 נכשל. חריג: %s", - "External storage" : "אחסון חיצוני", "Dropbox App Configuration" : "הגדרות יישום דרופבוקס", "Google Drive App Configuration" : "הגדרות יישום גוגל דרייב", "Personal" : "אישי", @@ -104,6 +103,7 @@ "Never" : "לעולם לא", "Once every direct access" : "פעם אחת כל כניסה ישירה", "Folder name" : "שם התיקייה", + "External storage" : "אחסון חיצוני", "Authentication" : "אימות", "Configuration" : "הגדרות", "Available for" : "זמין עבור", diff --git a/apps/files_external/l10n/hu.js b/apps/files_external/l10n/hu.js index 0329d216743..ceec7cbd0e8 100644 --- a/apps/files_external/l10n/hu.js +++ b/apps/files_external/l10n/hu.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Kérlek adj meg egy érvényes alkalmazás kulcsot és jelszót.", "Step 1 failed. Exception: %s" : "1. lépés sikertelen. Kivétel: %s", "Step 2 failed. Exception: %s" : "2. lépés sikertelen. Kivétel: %s", - "External storage" : "Külső tárolók", + "External storages" : "Külső tárolók", "Dropbox App Configuration" : "Dropbox alkalmazás beállítás", "Google Drive App Configuration" : "Google Drive alkalmazás beállítás", "Personal" : "Személyes", @@ -93,7 +93,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Szolgáltatás neve", "Request timeout (seconds)" : "Időtúllépés (másodperc)", - "External storages" : "Külső tárolók", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "A cURL támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Az FTP támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s nincs telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", @@ -109,6 +108,7 @@ OC.L10N.register( "Never" : "Soha", "Once every direct access" : "Minden közvetlen elérésnél", "Folder name" : "Mappa neve", + "External storage" : "Külső tárolók", "Authentication" : "Azonisítás", "Configuration" : "Beállítások", "Available for" : "Elérhető számukra", diff --git a/apps/files_external/l10n/hu.json b/apps/files_external/l10n/hu.json index 4b6a6a25a48..7413b33c954 100644 --- a/apps/files_external/l10n/hu.json +++ b/apps/files_external/l10n/hu.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Kérlek adj meg egy érvényes alkalmazás kulcsot és jelszót.", "Step 1 failed. Exception: %s" : "1. lépés sikertelen. Kivétel: %s", "Step 2 failed. Exception: %s" : "2. lépés sikertelen. Kivétel: %s", - "External storage" : "Külső tárolók", + "External storages" : "Külső tárolók", "Dropbox App Configuration" : "Dropbox alkalmazás beállítás", "Google Drive App Configuration" : "Google Drive alkalmazás beállítás", "Personal" : "Személyes", @@ -91,7 +91,6 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Szolgáltatás neve", "Request timeout (seconds)" : "Időtúllépés (másodperc)", - "External storages" : "Külső tárolók", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "A cURL támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Az FTP támogatás, a PHP-ban nincs engedélyezve vagy telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s nincs telepítve. %s csatolása lehetetlen. Kérd meg a rendszergazdádat, hogy telepítse.", @@ -107,6 +106,7 @@ "Never" : "Soha", "Once every direct access" : "Minden közvetlen elérésnél", "Folder name" : "Mappa neve", + "External storage" : "Külső tárolók", "Authentication" : "Azonisítás", "Configuration" : "Beállítások", "Available for" : "Elérhető számukra", diff --git a/apps/files_external/l10n/id.js b/apps/files_external/l10n/id.js index 3247a96e000..ea4aa63c00d 100644 --- a/apps/files_external/l10n/id.js +++ b/apps/files_external/l10n/id.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Silakan berikan kunci dan kerahasiaan aplikasi yang benar.", "Step 1 failed. Exception: %s" : "Langkah 1 gagal. Kecuali: %s", "Step 2 failed. Exception: %s" : "Langkah 2 gagal. Kecuali: %s", - "External storage" : "Penyimpanan eksternal", + "External storages" : "Penyimpanan Eksternal", "Dropbox App Configuration" : "Konfigurasi Aplikasi Dropbox", "Google Drive App Configuration" : "Konfigurasi Aplikasi Google Drive", "Personal" : "Pribadi", @@ -100,7 +100,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nama layanan", "Request timeout (seconds)" : "Minta waktu habis (detik)", - "External storages" : "Penyimpanan Eksternal", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan cURL di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanyakan administrator sistem anda untuk memasangnya.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan FTP di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem anda untuk memasangnya.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" tidak terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem anda untuk memasangnya.", @@ -116,6 +115,7 @@ OC.L10N.register( "Never" : "Jangan pernah", "Once every direct access" : "Setiap kali akses langsung", "Folder name" : "Nama folder", + "External storage" : "Penyimpanan eksternal", "Authentication" : "Otentikasi", "Configuration" : "Konfigurasi", "Available for" : "Tersedia untuk", diff --git a/apps/files_external/l10n/id.json b/apps/files_external/l10n/id.json index 3326954fb98..0126765f1c7 100644 --- a/apps/files_external/l10n/id.json +++ b/apps/files_external/l10n/id.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Silakan berikan kunci dan kerahasiaan aplikasi yang benar.", "Step 1 failed. Exception: %s" : "Langkah 1 gagal. Kecuali: %s", "Step 2 failed. Exception: %s" : "Langkah 2 gagal. Kecuali: %s", - "External storage" : "Penyimpanan eksternal", + "External storages" : "Penyimpanan Eksternal", "Dropbox App Configuration" : "Konfigurasi Aplikasi Dropbox", "Google Drive App Configuration" : "Konfigurasi Aplikasi Google Drive", "Personal" : "Pribadi", @@ -98,7 +98,6 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nama layanan", "Request timeout (seconds)" : "Minta waktu habis (detik)", - "External storages" : "Penyimpanan Eksternal", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan cURL di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanyakan administrator sistem anda untuk memasangnya.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Dukungan FTP di PHP tidak diaktifkan atau terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem anda untuk memasangnya.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" tidak terpasang. Mengaitkan %s tidak memungkinkan. Harap tanya administrator sistem anda untuk memasangnya.", @@ -114,6 +113,7 @@ "Never" : "Jangan pernah", "Once every direct access" : "Setiap kali akses langsung", "Folder name" : "Nama folder", + "External storage" : "Penyimpanan eksternal", "Authentication" : "Otentikasi", "Configuration" : "Konfigurasi", "Available for" : "Tersedia untuk", diff --git a/apps/files_external/l10n/is.js b/apps/files_external/l10n/is.js index 2362f0c0326..984c3553c26 100644 --- a/apps/files_external/l10n/is.js +++ b/apps/files_external/l10n/is.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Settu inn gildan forritslykil og leynilykil (secret).", "Step 1 failed. Exception: %s" : "Skref 1 mistókst. Undantekning: %s", "Step 2 failed. Exception: %s" : "Skref 2 mistókst. Undantekning: %s", - "External storage" : "Ytri gagnageymsla", + "External storages" : "Utanáliggjandi gagnageymslur", "Dropbox App Configuration" : "Uppsetning Dropbox forrits", "Google Drive App Configuration" : "Uppsetning Google Drive forrits", "Personal" : "Einka", @@ -102,10 +102,10 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Heiti á þjónustu", "Request timeout (seconds)" : "Tímamörk á beiðni (sekúndur)", - "External storages" : "Utanáliggjandi gagnageymslur", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Stuðningur við cURL í PHP er ekki virkjaður eða ekki uppsettur. Tenging %s í skráakerfi er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Stuðningur við FTP í PHP er ekki virkjaður eða ekki uppsettur. Tenging %s í skráakerfi er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ekki uppsett. Tenging %s í skráakerfi er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.", + "External storage support" : "Stuðningur við utanáliggjandi gagnageymslur", "No external storage configured" : "Engin ytri-gagnageymsla stillt", "You can add external storages in the personal settings" : "Þú getur bætt við ytri gagnageymslum í einkastillingunum þínum", "Name" : "Nafn", @@ -118,6 +118,7 @@ OC.L10N.register( "Never" : "Aldrei", "Once every direct access" : "Einu sinni við hvern beinan aðgang", "Folder name" : "Nafn möppu", + "External storage" : "Ytri gagnageymsla", "Authentication" : "Auðkenning", "Configuration" : "Uppsetning", "Available for" : "Tiltækt fyrir", diff --git a/apps/files_external/l10n/is.json b/apps/files_external/l10n/is.json index 7d0fcedb985..848e28145ed 100644 --- a/apps/files_external/l10n/is.json +++ b/apps/files_external/l10n/is.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Settu inn gildan forritslykil og leynilykil (secret).", "Step 1 failed. Exception: %s" : "Skref 1 mistókst. Undantekning: %s", "Step 2 failed. Exception: %s" : "Skref 2 mistókst. Undantekning: %s", - "External storage" : "Ytri gagnageymsla", + "External storages" : "Utanáliggjandi gagnageymslur", "Dropbox App Configuration" : "Uppsetning Dropbox forrits", "Google Drive App Configuration" : "Uppsetning Google Drive forrits", "Personal" : "Einka", @@ -100,10 +100,10 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Heiti á þjónustu", "Request timeout (seconds)" : "Tímamörk á beiðni (sekúndur)", - "External storages" : "Utanáliggjandi gagnageymslur", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Stuðningur við cURL í PHP er ekki virkjaður eða ekki uppsettur. Tenging %s í skráakerfi er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Stuðningur við FTP í PHP er ekki virkjaður eða ekki uppsettur. Tenging %s í skráakerfi er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ekki uppsett. Tenging %s í skráakerfi er ekki möguleg. Biddu kerfisstjórann þinn um að setja þetta upp.", + "External storage support" : "Stuðningur við utanáliggjandi gagnageymslur", "No external storage configured" : "Engin ytri-gagnageymsla stillt", "You can add external storages in the personal settings" : "Þú getur bætt við ytri gagnageymslum í einkastillingunum þínum", "Name" : "Nafn", @@ -116,6 +116,7 @@ "Never" : "Aldrei", "Once every direct access" : "Einu sinni við hvern beinan aðgang", "Folder name" : "Nafn möppu", + "External storage" : "Ytri gagnageymsla", "Authentication" : "Auðkenning", "Configuration" : "Uppsetning", "Available for" : "Tiltækt fyrir", diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js index eedb78f0368..8bada6bf024 100644 --- a/apps/files_external/l10n/it.js +++ b/apps/files_external/l10n/it.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Fornisci chiave e segreto dell'applicazione validi.", "Step 1 failed. Exception: %s" : "Fase 1 non riuscita. Eccezione: %s", "Step 2 failed. Exception: %s" : "Fase 2 non riuscita. Eccezione: %s", - "External storage" : "Archiviazione esterna", + "External storages" : "Archiviazioni esterne", "Dropbox App Configuration" : "Configurazione applicazione Dropbox", "Google Drive App Configuration" : "Configurazione applicazione Google Drive", "Personal" : "Personale", @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Credenziali salvate", "Credentials saving failed" : "Salvataggio delle credenziali non riuscito", "Credentials required" : "Credenziali richieste", + "Storage with ID \"%d\" not found" : "Archiviazione con ID \"%d\" non trovata", "Invalid backend or authentication mechanism class" : "Motore o classe del meccanismo di autenticazione non valido", "Invalid mount point" : "Punto di mount non valido", "Objectstore forbidden" : "Objectstore vietato", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Parametri del meccanismo di autenticazione non soddisfatti", "Insufficient data: %s" : "Dati insufficienti: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Archiviazione con ID \"%d\" non modificabile dall'utente", "Access key" : "Chiave di accesso", "Secret key" : "Chiave segreta", "Builtin" : "Integrata", @@ -100,7 +102,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nome servizio", "Request timeout (seconds)" : "Tempo massimo della richiesta (secondi)", - "External storages" : "Archiviazioni esterne", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Il supporto cURL di PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Il supporto FTP in PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" non è installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.", @@ -116,6 +117,7 @@ OC.L10N.register( "Never" : "Mai", "Once every direct access" : "Una volta per ogni accesso diretto", "Folder name" : "Nome della cartella", + "External storage" : "Archiviazione esterna", "Authentication" : "Autenticazione", "Configuration" : "Configurazione", "Available for" : "Disponibile per", diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json index eae20972e47..c3c916c2cc7 100644 --- a/apps/files_external/l10n/it.json +++ b/apps/files_external/l10n/it.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Fornisci chiave e segreto dell'applicazione validi.", "Step 1 failed. Exception: %s" : "Fase 1 non riuscita. Eccezione: %s", "Step 2 failed. Exception: %s" : "Fase 2 non riuscita. Eccezione: %s", - "External storage" : "Archiviazione esterna", + "External storages" : "Archiviazioni esterne", "Dropbox App Configuration" : "Configurazione applicazione Dropbox", "Google Drive App Configuration" : "Configurazione applicazione Google Drive", "Personal" : "Personale", @@ -36,6 +36,7 @@ "Credentials saved" : "Credenziali salvate", "Credentials saving failed" : "Salvataggio delle credenziali non riuscito", "Credentials required" : "Credenziali richieste", + "Storage with ID \"%d\" not found" : "Archiviazione con ID \"%d\" non trovata", "Invalid backend or authentication mechanism class" : "Motore o classe del meccanismo di autenticazione non valido", "Invalid mount point" : "Punto di mount non valido", "Objectstore forbidden" : "Objectstore vietato", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Parametri del meccanismo di autenticazione non soddisfatti", "Insufficient data: %s" : "Dati insufficienti: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Archiviazione con ID \"%d\" non modificabile dall'utente", "Access key" : "Chiave di accesso", "Secret key" : "Chiave segreta", "Builtin" : "Integrata", @@ -98,7 +100,6 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Nome servizio", "Request timeout (seconds)" : "Tempo massimo della richiesta (secondi)", - "External storages" : "Archiviazioni esterne", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Il supporto cURL di PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Il supporto FTP in PHP non è abilitato o installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" non è installato. Impossibile montare %s. Chiedi al tuo amministratore di sistema di installarlo.", @@ -114,6 +115,7 @@ "Never" : "Mai", "Once every direct access" : "Una volta per ogni accesso diretto", "Folder name" : "Nome della cartella", + "External storage" : "Archiviazione esterna", "Authentication" : "Autenticazione", "Configuration" : "Configurazione", "Available for" : "Disponibile per", diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index fa923be83c7..361b1b8f9d8 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。", "Step 1 failed. Exception: %s" : "ステップ 1 の実行に失敗しました。例外: %s", "Step 2 failed. Exception: %s" : "ステップ 2 の実行に失敗しました。例外: %s", - "External storage" : "外部ストレージ", + "External storages" : "外部ストレージ", "Dropbox App Configuration" : "Dropbox アプリ設定", "Google Drive App Configuration" : "Google アプリ設定", "Personal" : "個人", @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "資格情報を保存しました", "Credentials saving failed" : "資格情報の保存に失敗しました", "Credentials required" : "資格情報が必要です", + "Storage with ID \"%d\" not found" : "ID \"%d\" のストレージが見つかりません", "Invalid backend or authentication mechanism class" : "バックエンドまたは認証システムクラスが無効", "Invalid mount point" : "無効なマウントポイント", "Objectstore forbidden" : "オブジェクトストアが禁じられています", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "認証のためのパラメータが不十分です", "Insufficient data: %s" : "データが不足しています: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "ID \"%d\" のストレージはユーザーが編集できません", "Access key" : "アクセスキー", "Secret key" : "シークレットキー", "Builtin" : "ビルトイン", @@ -100,7 +102,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack ObjectStorage", "Service name" : "サービス名", "Request timeout (seconds)" : "リクエストがタイムアウトするまでの秒数", - "External storages" : "外部ストレージ", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHPでのcURLのサポートが有効になっていないか、インストールされていません。 %s のマウントは不可能です。システム管理者にインストールを依頼してください。", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHPのFTPサポートが有効になっていないか、インストールされていません。%s のマウントは不可能です。システム管理者にインストールを依頼してください。", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\"はインストールされていません。 %s のマウントは不可能です。システム管理者にインストールを依頼してください。", @@ -116,6 +117,7 @@ OC.L10N.register( "Never" : "更新無", "Once every direct access" : "直指定時のみ", "Folder name" : "フォルダー名", + "External storage" : "外部ストレージ", "Authentication" : "認証", "Configuration" : "設定", "Available for" : "利用可能", diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index d8b415df9c6..dceab2d640c 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "有効なアプリのキーとパスワードを入力してください。", "Step 1 failed. Exception: %s" : "ステップ 1 の実行に失敗しました。例外: %s", "Step 2 failed. Exception: %s" : "ステップ 2 の実行に失敗しました。例外: %s", - "External storage" : "外部ストレージ", + "External storages" : "外部ストレージ", "Dropbox App Configuration" : "Dropbox アプリ設定", "Google Drive App Configuration" : "Google アプリ設定", "Personal" : "個人", @@ -36,6 +36,7 @@ "Credentials saved" : "資格情報を保存しました", "Credentials saving failed" : "資格情報の保存に失敗しました", "Credentials required" : "資格情報が必要です", + "Storage with ID \"%d\" not found" : "ID \"%d\" のストレージが見つかりません", "Invalid backend or authentication mechanism class" : "バックエンドまたは認証システムクラスが無効", "Invalid mount point" : "無効なマウントポイント", "Objectstore forbidden" : "オブジェクトストアが禁じられています", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "認証のためのパラメータが不十分です", "Insufficient data: %s" : "データが不足しています: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "ID \"%d\" のストレージはユーザーが編集できません", "Access key" : "アクセスキー", "Secret key" : "シークレットキー", "Builtin" : "ビルトイン", @@ -98,7 +100,6 @@ "OpenStack Object Storage" : "OpenStack ObjectStorage", "Service name" : "サービス名", "Request timeout (seconds)" : "リクエストがタイムアウトするまでの秒数", - "External storages" : "外部ストレージ", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHPでのcURLのサポートが有効になっていないか、インストールされていません。 %s のマウントは不可能です。システム管理者にインストールを依頼してください。", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHPのFTPサポートが有効になっていないか、インストールされていません。%s のマウントは不可能です。システム管理者にインストールを依頼してください。", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\"はインストールされていません。 %s のマウントは不可能です。システム管理者にインストールを依頼してください。", @@ -114,6 +115,7 @@ "Never" : "更新無", "Once every direct access" : "直指定時のみ", "Folder name" : "フォルダー名", + "External storage" : "外部ストレージ", "Authentication" : "認証", "Configuration" : "設定", "Available for" : "利用可能", diff --git a/apps/files_external/l10n/ko.js b/apps/files_external/l10n/ko.js index c0578979e22..cb081062c06 100644 --- a/apps/files_external/l10n/ko.js +++ b/apps/files_external/l10n/ko.js @@ -6,9 +6,9 @@ OC.L10N.register( "Please provide a valid app key and secret." : "올바른 앱 키와 비밀 값을 입력하십시오.", "Step 1 failed. Exception: %s" : "1단계 실패. 예외: %s", "Step 2 failed. Exception: %s" : "2단계 실패. 예외: %s", - "External storage" : "외부 저장소", + "External storages" : "외부 저장소", "Dropbox App Configuration" : "Dropbox 앱 설정", - "Google Drive App Configuration" : "구글 드라이브 앱 설정", + "Google Drive App Configuration" : "Google 드라이브 앱 설정", "Personal" : "개인", "System" : "시스템", "Grant access" : "접근 권한 부여", @@ -16,13 +16,16 @@ OC.L10N.register( "Error configuring OAuth2" : "OAuth2 설정 오류", "Generate keys" : "키 생성", "Error generating key pair" : "키 쌍을 생성하는 중 오류 발생", - "All users. Type to select user or group." : "모든 사용자입니다. 사용자나 그룹을 선택하려면 입력하십시오", + "All users. Type to select user or group." : "모든 사용자입니다. 사용자나 그룹을 선택하려면 입력하십시오.", "(group)" : "(그룹)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD 인코딩 호환성 사용(느림)", "Admin defined" : "관리자 지정", "Saved" : "저장됨", + "Saving..." : "저장 중...", "Save" : "저장", "Empty response from the server" : "서버에서 빈 응답이 돌아옴", "Couldn't access. Please logout and login to activate this mount point" : "접근할 수 없습니다. 이 마운트 지점을 활성화하려면 로그아웃 후 로그인하십시오", + "Couldn't get the information from the remote server: {code} {type}" : "원격 서버에서 정보를 가져올 수 없음: {code} {type}", "Couldn't get the list of external mount points: {type}" : "외부 마운트 지점 목록을 가져올 수 없음: {type}", "There was an error with message: " : "오류 메시지: ", "External mount error" : "외부 마운트 오류", @@ -35,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "인증 정보 저장됨", "Credentials saving failed" : "인증 정보를 저장할 수 없음", "Credentials required" : "인증 정보 필요함", + "Storage with ID \"%d\" not found" : "ID \"%d\"인 공유를 찾을 수 없음", "Invalid backend or authentication mechanism class" : "백엔드나 인증 방식 클래스가 잘못됨", "Invalid mount point" : "잘못된 마운트 지점", "Objectstore forbidden" : "Objectstore에 접근 금지됨", @@ -45,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "인증 방식 인자가 부족함", "Insufficient data: %s" : "충분하지 않은 데이터: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "저장소 ID \"%d\"을(를) 사용자가 편집할 수 없음", "Access key" : "접근 키", "Secret key" : "비밀 키", "Builtin" : "내장", @@ -97,7 +102,9 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack 객체 저장소", "Service name" : "서비스 이름", "Request timeout (seconds)" : "요청 시간 제한(초)", - "External storages" : "외부 저장소", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP의 cURL 지원이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP의 FTP 지원이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\"이(가) 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", "No external storage configured" : "외부 저장소가 설정되지 않았음", "You can add external storages in the personal settings" : "개인 설정에서 외부 저장소를 추가할 수 있습니다", "Name" : "이름", @@ -110,6 +117,7 @@ OC.L10N.register( "Never" : "하지 않음", "Once every direct access" : "한 번 직접 접근할 때마다", "Folder name" : "폴더 이름", + "External storage" : "외부 저장소", "Authentication" : "인증", "Configuration" : "설정", "Available for" : "다음으로 사용 가능", diff --git a/apps/files_external/l10n/ko.json b/apps/files_external/l10n/ko.json index 7ae25545ffc..1e13f696dda 100644 --- a/apps/files_external/l10n/ko.json +++ b/apps/files_external/l10n/ko.json @@ -4,9 +4,9 @@ "Please provide a valid app key and secret." : "올바른 앱 키와 비밀 값을 입력하십시오.", "Step 1 failed. Exception: %s" : "1단계 실패. 예외: %s", "Step 2 failed. Exception: %s" : "2단계 실패. 예외: %s", - "External storage" : "외부 저장소", + "External storages" : "외부 저장소", "Dropbox App Configuration" : "Dropbox 앱 설정", - "Google Drive App Configuration" : "구글 드라이브 앱 설정", + "Google Drive App Configuration" : "Google 드라이브 앱 설정", "Personal" : "개인", "System" : "시스템", "Grant access" : "접근 권한 부여", @@ -14,13 +14,16 @@ "Error configuring OAuth2" : "OAuth2 설정 오류", "Generate keys" : "키 생성", "Error generating key pair" : "키 쌍을 생성하는 중 오류 발생", - "All users. Type to select user or group." : "모든 사용자입니다. 사용자나 그룹을 선택하려면 입력하십시오", + "All users. Type to select user or group." : "모든 사용자입니다. 사용자나 그룹을 선택하려면 입력하십시오.", "(group)" : "(그룹)", + "Compatibility with Mac NFD encoding (slow)" : "Mac NFD 인코딩 호환성 사용(느림)", "Admin defined" : "관리자 지정", "Saved" : "저장됨", + "Saving..." : "저장 중...", "Save" : "저장", "Empty response from the server" : "서버에서 빈 응답이 돌아옴", "Couldn't access. Please logout and login to activate this mount point" : "접근할 수 없습니다. 이 마운트 지점을 활성화하려면 로그아웃 후 로그인하십시오", + "Couldn't get the information from the remote server: {code} {type}" : "원격 서버에서 정보를 가져올 수 없음: {code} {type}", "Couldn't get the list of external mount points: {type}" : "외부 마운트 지점 목록을 가져올 수 없음: {type}", "There was an error with message: " : "오류 메시지: ", "External mount error" : "외부 마운트 오류", @@ -33,6 +36,7 @@ "Credentials saved" : "인증 정보 저장됨", "Credentials saving failed" : "인증 정보를 저장할 수 없음", "Credentials required" : "인증 정보 필요함", + "Storage with ID \"%d\" not found" : "ID \"%d\"인 공유를 찾을 수 없음", "Invalid backend or authentication mechanism class" : "백엔드나 인증 방식 클래스가 잘못됨", "Invalid mount point" : "잘못된 마운트 지점", "Objectstore forbidden" : "Objectstore에 접근 금지됨", @@ -43,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "인증 방식 인자가 부족함", "Insufficient data: %s" : "충분하지 않은 데이터: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "저장소 ID \"%d\"을(를) 사용자가 편집할 수 없음", "Access key" : "접근 키", "Secret key" : "비밀 키", "Builtin" : "내장", @@ -95,7 +100,9 @@ "OpenStack Object Storage" : "OpenStack 객체 저장소", "Service name" : "서비스 이름", "Request timeout (seconds)" : "요청 시간 제한(초)", - "External storages" : "외부 저장소", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP의 cURL 지원이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP의 FTP 지원이 비활성화되어 있거나 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\"이(가) 설치되어 있지 않습니다. %s을(를) 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", "No external storage configured" : "외부 저장소가 설정되지 않았음", "You can add external storages in the personal settings" : "개인 설정에서 외부 저장소를 추가할 수 있습니다", "Name" : "이름", @@ -108,6 +115,7 @@ "Never" : "하지 않음", "Once every direct access" : "한 번 직접 접근할 때마다", "Folder name" : "폴더 이름", + "External storage" : "외부 저장소", "Authentication" : "인증", "Configuration" : "설정", "Available for" : "다음으로 사용 가능", diff --git a/apps/files_external/l10n/nb.js b/apps/files_external/l10n/nb.js index 72c33458ae7..cb1e4d7f174 100644 --- a/apps/files_external/l10n/nb.js +++ b/apps/files_external/l10n/nb.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Vær vennlig å oppgi gyldig appnøkkel og hemmelighet.", "Step 1 failed. Exception: %s" : "Steg 1 mislyktes. Unntak: %s", "Step 2 failed. Exception: %s" : "Steg 2 mislyktes. Unntak: %s", - "External storage" : "Ekstern lagringsplass", + "External storages" : "Ekstern lagring", "Dropbox App Configuration" : "Oppsett for Dropbox-program", "Google Drive App Configuration" : "Oppsett av Google Drive-program", "Personal" : "Personlig", @@ -30,7 +30,7 @@ OC.L10N.register( "There was an error with message: " : "Det oppstod en feil med melding: ", "External mount error" : "Ekstern oppkoblingsfeil", "external-storage" : "eksternlagring", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra serveren", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Noen av de oppsatte eksterne oppkoblingspunktene er ikke tilkoblet. Klikk på de røde raden(e) for mer informasjon.", "Please enter the credentials for the {mount} mount" : "Legg inn påloggingsdetaljer for {mount}", "Username" : "Brukernavn", @@ -102,7 +102,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack objektlager", "Service name" : "Tjenestenavn", "Request timeout (seconds)" : "Tidsavbrudd for forespørsel (sekunder)", - "External storages" : "Ekstern lagring", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> Støtte for cURL i PHP er ikke aktivert eller installert. Oppkobling av %s er ikke mulig. Be systemadministratoren om å installere det.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> FTP-støtte i PHP er ikke slått på eller installert. Kan ikke koble opp %s. Ta kontakt med systemadministratoren for å få dette installert.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ikke installert. Oppkobling av %s er ikke mulig. Vennligst spør din systemadministrator om å installere det.", @@ -118,6 +117,7 @@ OC.L10N.register( "Never" : "Aldri", "Once every direct access" : "En gang pr. direkte tilgang", "Folder name" : "Mappenavn", + "External storage" : "Ekstern lagringsplass", "Authentication" : "Autentisering", "Configuration" : "Oppsett", "Available for" : "Tilgjengelig for", diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json index 7d36ac32850..9e713c2bc1a 100644 --- a/apps/files_external/l10n/nb.json +++ b/apps/files_external/l10n/nb.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Vær vennlig å oppgi gyldig appnøkkel og hemmelighet.", "Step 1 failed. Exception: %s" : "Steg 1 mislyktes. Unntak: %s", "Step 2 failed. Exception: %s" : "Steg 2 mislyktes. Unntak: %s", - "External storage" : "Ekstern lagringsplass", + "External storages" : "Ekstern lagring", "Dropbox App Configuration" : "Oppsett for Dropbox-program", "Google Drive App Configuration" : "Oppsett av Google Drive-program", "Personal" : "Personlig", @@ -28,7 +28,7 @@ "There was an error with message: " : "Det oppstod en feil med melding: ", "External mount error" : "Ekstern oppkoblingsfeil", "external-storage" : "eksternlagring", - "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra serveren", + "Couldn't get the list of Windows network drive mount points: empty response from the server" : "Klarte ikke å hente listen over oppkoblingspunkter for Windowsnettverks-disker: Tomt svar fra tjeneren", "Some of the configured external mount points are not connected. Please click on the red row(s) for more information" : "Noen av de oppsatte eksterne oppkoblingspunktene er ikke tilkoblet. Klikk på de røde raden(e) for mer informasjon.", "Please enter the credentials for the {mount} mount" : "Legg inn påloggingsdetaljer for {mount}", "Username" : "Brukernavn", @@ -100,7 +100,6 @@ "OpenStack Object Storage" : "OpenStack objektlager", "Service name" : "Tjenestenavn", "Request timeout (seconds)" : "Tidsavbrudd for forespørsel (sekunder)", - "External storages" : "Ekstern lagring", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> Støtte for cURL i PHP er ikke aktivert eller installert. Oppkobling av %s er ikke mulig. Be systemadministratoren om å installere det.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "<b>Merk:</b> FTP-støtte i PHP er ikke slått på eller installert. Kan ikke koble opp %s. Ta kontakt med systemadministratoren for å få dette installert.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" er ikke installert. Oppkobling av %s er ikke mulig. Vennligst spør din systemadministrator om å installere det.", @@ -116,6 +115,7 @@ "Never" : "Aldri", "Once every direct access" : "En gang pr. direkte tilgang", "Folder name" : "Mappenavn", + "External storage" : "Ekstern lagringsplass", "Authentication" : "Autentisering", "Configuration" : "Oppsett", "Available for" : "Tilgjengelig for", diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js index 733238772d2..31e95aca97e 100644 --- a/apps/files_external/l10n/nl.js +++ b/apps/files_external/l10n/nl.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Geef een geldige app sleutel en geheime sleutel op.", "Step 1 failed. Exception: %s" : "Stap 1 is mislukt. Uitzondering: %s", "Step 2 failed. Exception: %s" : "Stap 2 is mislukt. Uitzondering: %s", - "External storage" : "Externe opslag", + "External storages" : "Externe opslag", "Dropbox App Configuration" : "Dropbox app configuratie", "Google Drive App Configuration" : "Google Drive app configuratie", "Personal" : "Persoonlijk", @@ -102,7 +102,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Servicenaam", "Request timeout (seconds)" : "Aanvraag time-out (seconds)", - "External storages" : "Externe opslag", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Curl ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je systeembeheerder dit te installeren.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je beheerder dit te installeren.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" is niet geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je beheerder om dit te installeren.", @@ -118,6 +117,7 @@ OC.L10N.register( "Never" : "Nooit", "Once every direct access" : "Een keer bij elke directe toegang", "Folder name" : "Mapnaam", + "External storage" : "Externe opslag", "Authentication" : "Authenticatie", "Configuration" : "Configuratie", "Available for" : "Beschikbaar voor", diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json index ff460235d40..64e98798d03 100644 --- a/apps/files_external/l10n/nl.json +++ b/apps/files_external/l10n/nl.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Geef een geldige app sleutel en geheime sleutel op.", "Step 1 failed. Exception: %s" : "Stap 1 is mislukt. Uitzondering: %s", "Step 2 failed. Exception: %s" : "Stap 2 is mislukt. Uitzondering: %s", - "External storage" : "Externe opslag", + "External storages" : "Externe opslag", "Dropbox App Configuration" : "Dropbox app configuratie", "Google Drive App Configuration" : "Google Drive app configuratie", "Personal" : "Persoonlijk", @@ -100,7 +100,6 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Servicenaam", "Request timeout (seconds)" : "Aanvraag time-out (seconds)", - "External storages" : "Externe opslag", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Curl ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je systeembeheerder dit te installeren.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP ondersteuning in PHP is niet ingeschakeld of geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je beheerder dit te installeren.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" is niet geïnstalleerd. Mounten van %s is niet mogelijk. Vraag je beheerder om dit te installeren.", @@ -116,6 +115,7 @@ "Never" : "Nooit", "Once every direct access" : "Een keer bij elke directe toegang", "Folder name" : "Mapnaam", + "External storage" : "Externe opslag", "Authentication" : "Authenticatie", "Configuration" : "Configuratie", "Available for" : "Beschikbaar voor", diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js index d35058891e3..cb523d31215 100644 --- a/apps/files_external/l10n/pl.js +++ b/apps/files_external/l10n/pl.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Proszę podać prawidłowy klucz aplikacji i klucz sekretny.", "Step 1 failed. Exception: %s" : "Krok 1 błędny. Błąd: %s", "Step 2 failed. Exception: %s" : "Krok 2 błędny. Błąd: %s", - "External storage" : "Zewnętrzne zasoby dyskowe", + "External storages" : "Zewnętrzne zasoby dyskowe", "Dropbox App Configuration" : "Konfiguracja aplikacji Dropbox", "Google Drive App Configuration" : "Konfiguracja aplikacji Google Drive", "Personal" : "Osobiste", @@ -102,10 +102,10 @@ OC.L10N.register( "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.", + "External storage support" : "Wsparcie dla zewnętrznego magazynu", "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", @@ -118,6 +118,7 @@ OC.L10N.register( "Never" : "Nigdy", "Once every direct access" : "Jeden raz przy każdym dostępie", "Folder name" : "Nazwa folderu", + "External storage" : "Zewnętrzne zasoby dyskowe", "Authentication" : "Poświadczenie", "Configuration" : "Konfiguracja", "Available for" : "Dostępne przez", diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json index 3de59414e30..e9d45a1e804 100644 --- a/apps/files_external/l10n/pl.json +++ b/apps/files_external/l10n/pl.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Proszę podać prawidłowy klucz aplikacji i klucz sekretny.", "Step 1 failed. Exception: %s" : "Krok 1 błędny. Błąd: %s", "Step 2 failed. Exception: %s" : "Krok 2 błędny. Błąd: %s", - "External storage" : "Zewnętrzne zasoby dyskowe", + "External storages" : "Zewnętrzne zasoby dyskowe", "Dropbox App Configuration" : "Konfiguracja aplikacji Dropbox", "Google Drive App Configuration" : "Konfiguracja aplikacji Google Drive", "Personal" : "Osobiste", @@ -100,10 +100,10 @@ "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.", + "External storage support" : "Wsparcie dla zewnętrznego magazynu", "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", @@ -116,6 +116,7 @@ "Never" : "Nigdy", "Once every direct access" : "Jeden raz przy każdym dostępie", "Folder name" : "Nazwa folderu", + "External storage" : "Zewnętrzne zasoby dyskowe", "Authentication" : "Poświadczenie", "Configuration" : "Konfiguracja", "Available for" : "Dostępne przez", diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index dc307664c29..41c298ca2b3 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Por favor forneça uma chave de aplicativo e segurança válidos.", "Step 1 failed. Exception: %s" : "Passo 1 falhou. Exceção: %s", "Step 2 failed. Exception: %s" : "Passo 2 falhou. Exceção: %s", - "External storage" : "Armazenamento Externo", + "External storages" : "Armazenamentos externos", "Dropbox App Configuration" : "Configuração do Aplicativo Dropbox", "Google Drive App Configuration" : "Configuração do Aplicativo Google Drive", "Personal" : "Pessoal", @@ -39,13 +39,13 @@ OC.L10N.register( "Credentials saving failed" : "A gravação das credenciais falhou", "Credentials required" : "Credenciais são requeridas", "Storage with ID \"%d\" not found" : "A armazenagem com a ID \"%d\" não foi encontrada", - "Invalid backend or authentication mechanism class" : "Backend ou classe de mecanismo de autenticação inválido", + "Invalid backend or authentication mechanism class" : "Plataforma de serviço ou classe de mecanismo de autenticação inválido", "Invalid mount point" : "Ponto de montagem inválido", "Objectstore forbidden" : "Proibido armazenamento de objetos", - "Invalid storage backend \"%s\"" : "Backend de armazenamento \"%s\" inválido", - "Not permitted to use backend \"%s\"" : "Não é permitido o uso de backend \"%s\"", + "Invalid storage backend \"%s\"" : "Plataforma de serviço de armazenamento \"%s\" inválido", + "Not permitted to use backend \"%s\"" : "Não é permitido o uso da plataforma de serviço \"%s\"", "Not permitted to use authentication mechanism \"%s\"" : "Não é permitido usar o mecanismo de autenticação \"%s\"", - "Unsatisfied backend parameters" : "Parâmetros de backend não atendidos", + "Unsatisfied backend parameters" : "Parâmetros da plataforma de serviço não atendidos", "Unsatisfied authentication mechanism parameters" : "Parâmetros de mecanismos de autenticação não satisfeitos", "Insufficient data: %s" : "Dados insuficientes: %s", "%s" : "%s", @@ -102,10 +102,10 @@ OC.L10N.register( "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", "Request timeout (seconds)" : "Tempo requerido esgotado (segundos)", - "External storages" : "Armazenamentos externos", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. A montagem de %s não é possível. Por favor, solicite a instalação ao administrador do sistema.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a FTP no PHP não está habilitado ou instalado. A montagem de %s não é possível. Por favor, solicite a instalação ao administrador do sistema.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. A montagem de %s não é possível. Por favor, solicite a instalação ao administrador do sistema.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a FTP no PHP não está habilitado ou instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.", + "External storage support" : "Suporte a armazenamento externo", "No external storage configured" : "Nenhum armazendo externo foi configurado", "You can add external storages in the personal settings" : "Você pode adicionar armazenamentos externos nas configurações pessoais", "Name" : "Nome", @@ -118,6 +118,7 @@ OC.L10N.register( "Never" : "Nunca", "Once every direct access" : "Uma vez a cada acesso direto", "Folder name" : "Nome da pasta", + "External storage" : "Armazenamento Externo", "Authentication" : "Autenticação", "Configuration" : "Configuração", "Available for" : "Disponível por", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index 8703e577756..121abf34e37 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Por favor forneça uma chave de aplicativo e segurança válidos.", "Step 1 failed. Exception: %s" : "Passo 1 falhou. Exceção: %s", "Step 2 failed. Exception: %s" : "Passo 2 falhou. Exceção: %s", - "External storage" : "Armazenamento Externo", + "External storages" : "Armazenamentos externos", "Dropbox App Configuration" : "Configuração do Aplicativo Dropbox", "Google Drive App Configuration" : "Configuração do Aplicativo Google Drive", "Personal" : "Pessoal", @@ -37,13 +37,13 @@ "Credentials saving failed" : "A gravação das credenciais falhou", "Credentials required" : "Credenciais são requeridas", "Storage with ID \"%d\" not found" : "A armazenagem com a ID \"%d\" não foi encontrada", - "Invalid backend or authentication mechanism class" : "Backend ou classe de mecanismo de autenticação inválido", + "Invalid backend or authentication mechanism class" : "Plataforma de serviço ou classe de mecanismo de autenticação inválido", "Invalid mount point" : "Ponto de montagem inválido", "Objectstore forbidden" : "Proibido armazenamento de objetos", - "Invalid storage backend \"%s\"" : "Backend de armazenamento \"%s\" inválido", - "Not permitted to use backend \"%s\"" : "Não é permitido o uso de backend \"%s\"", + "Invalid storage backend \"%s\"" : "Plataforma de serviço de armazenamento \"%s\" inválido", + "Not permitted to use backend \"%s\"" : "Não é permitido o uso da plataforma de serviço \"%s\"", "Not permitted to use authentication mechanism \"%s\"" : "Não é permitido usar o mecanismo de autenticação \"%s\"", - "Unsatisfied backend parameters" : "Parâmetros de backend não atendidos", + "Unsatisfied backend parameters" : "Parâmetros da plataforma de serviço não atendidos", "Unsatisfied authentication mechanism parameters" : "Parâmetros de mecanismos de autenticação não satisfeitos", "Insufficient data: %s" : "Dados insuficientes: %s", "%s" : "%s", @@ -100,10 +100,10 @@ "OpenStack Object Storage" : "Armazenamento de Objetos OpenStack", "Service name" : "Nome do serviço", "Request timeout (seconds)" : "Tempo requerido esgotado (segundos)", - "External storages" : "Armazenamentos externos", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. A montagem de %s não é possível. Por favor, solicite a instalação ao administrador do sistema.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a FTP no PHP não está habilitado ou instalado. A montagem de %s não é possível. Por favor, solicite a instalação ao administrador do sistema.", - "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. A montagem de %s não é possível. Por favor, solicite a instalação ao administrador do sistema.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a cURL no PHP não está habilitado ou instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "O suporte a FTP no PHP não está habilitado ou instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.", + "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" não está instalado. A montagem de %s não foi possível. Por favor, solicite a instalação ao administrador do sistema.", + "External storage support" : "Suporte a armazenamento externo", "No external storage configured" : "Nenhum armazendo externo foi configurado", "You can add external storages in the personal settings" : "Você pode adicionar armazenamentos externos nas configurações pessoais", "Name" : "Nome", @@ -116,6 +116,7 @@ "Never" : "Nunca", "Once every direct access" : "Uma vez a cada acesso direto", "Folder name" : "Nome da pasta", + "External storage" : "Armazenamento Externo", "Authentication" : "Autenticação", "Configuration" : "Configuração", "Available for" : "Disponível por", diff --git a/apps/files_external/l10n/pt_PT.js b/apps/files_external/l10n/pt_PT.js index 69cdfac498f..c351c9f1ad0 100644 --- a/apps/files_external/l10n/pt_PT.js +++ b/apps/files_external/l10n/pt_PT.js @@ -6,7 +6,6 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Por favor, indique um código e segredo de app válidos.", "Step 1 failed. Exception: %s" : "Passo 1 falhou. Exceção: %s", "Step 2 failed. Exception: %s" : "Passo 2 falhou. Exceção: %s", - "External storage" : "Armazenamento Externo", "Dropbox App Configuration" : "Configuração da aplicação Dropbox", "Google Drive App Configuration" : "Configuração da aplicação Google Drive", "Personal" : "Pessoal", @@ -106,6 +105,7 @@ OC.L10N.register( "Never" : "Nunca", "Once every direct access" : "Uma vez em cada acesso direto", "Folder name" : "Nome da pasta", + "External storage" : "Armazenamento Externo", "Authentication" : "Autenticação", "Configuration" : "Configuração", "Available for" : "Disponível para ", diff --git a/apps/files_external/l10n/pt_PT.json b/apps/files_external/l10n/pt_PT.json index 62c87b32028..80eb41bb30c 100644 --- a/apps/files_external/l10n/pt_PT.json +++ b/apps/files_external/l10n/pt_PT.json @@ -4,7 +4,6 @@ "Please provide a valid app key and secret." : "Por favor, indique um código e segredo de app válidos.", "Step 1 failed. Exception: %s" : "Passo 1 falhou. Exceção: %s", "Step 2 failed. Exception: %s" : "Passo 2 falhou. Exceção: %s", - "External storage" : "Armazenamento Externo", "Dropbox App Configuration" : "Configuração da aplicação Dropbox", "Google Drive App Configuration" : "Configuração da aplicação Google Drive", "Personal" : "Pessoal", @@ -104,6 +103,7 @@ "Never" : "Nunca", "Once every direct access" : "Uma vez em cada acesso direto", "Folder name" : "Nome da pasta", + "External storage" : "Armazenamento Externo", "Authentication" : "Autenticação", "Configuration" : "Configuração", "Available for" : "Disponível para ", diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index c6ad1041781..ab3e39bff69 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Пожалуйста укажите корректные ключ и секрет приложения.", "Step 1 failed. Exception: %s" : "Шаг 1 неудачен. Исключение: %s", "Step 2 failed. Exception: %s" : "Шаг 2 неудачен. Исключение: %s", - "External storage" : "Внешнее хранилище", + "External storages" : "Внешние хранилища", "Dropbox App Configuration" : "Настройка приложения Dropbox", "Google Drive App Configuration" : "Настройка приложения Google Drive", "Personal" : "Личное", @@ -102,10 +102,10 @@ OC.L10N.register( "OpenStack Object Storage" : "Хранилище объектов OpenStack", "Service name" : "Название сервиса", "Request timeout (seconds)" : "Таймаут запроса (в секундах)", - "External storages" : "Внешние хранилища", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Поддержка cURL в PHP не включена и/или не установлена, монтирование %s невозможно. Обратитесь к вашему системному администратору.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Поддержка FTP в PHP не включена и/или не установлена, монтирование %s невозможно. Обратитесь к вашему системному администратору.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" не установлен, монтирование %s невозможно. Обратитесь к вашему системному администратору.", + "External storage support" : "Поддержка внешних хранилищ", "No external storage configured" : "Нет внешних хранилищ", "You can add external storages in the personal settings" : "Вы можете добавить внешние накопители в личных настройках", "Name" : "Имя", @@ -118,6 +118,7 @@ OC.L10N.register( "Never" : "Никогда", "Once every direct access" : "Один раз при прямом доступе", "Folder name" : "Имя каталога", + "External storage" : "Внешнее хранилище", "Authentication" : "Авторизация", "Configuration" : "Конфигурация", "Available for" : "Доступно для", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index b14a55a4a18..e817c9dea50 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Пожалуйста укажите корректные ключ и секрет приложения.", "Step 1 failed. Exception: %s" : "Шаг 1 неудачен. Исключение: %s", "Step 2 failed. Exception: %s" : "Шаг 2 неудачен. Исключение: %s", - "External storage" : "Внешнее хранилище", + "External storages" : "Внешние хранилища", "Dropbox App Configuration" : "Настройка приложения Dropbox", "Google Drive App Configuration" : "Настройка приложения Google Drive", "Personal" : "Личное", @@ -100,10 +100,10 @@ "OpenStack Object Storage" : "Хранилище объектов OpenStack", "Service name" : "Название сервиса", "Request timeout (seconds)" : "Таймаут запроса (в секундах)", - "External storages" : "Внешние хранилища", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Поддержка cURL в PHP не включена и/или не установлена, монтирование %s невозможно. Обратитесь к вашему системному администратору.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Поддержка FTP в PHP не включена и/или не установлена, монтирование %s невозможно. Обратитесь к вашему системному администратору.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" не установлен, монтирование %s невозможно. Обратитесь к вашему системному администратору.", + "External storage support" : "Поддержка внешних хранилищ", "No external storage configured" : "Нет внешних хранилищ", "You can add external storages in the personal settings" : "Вы можете добавить внешние накопители в личных настройках", "Name" : "Имя", @@ -116,6 +116,7 @@ "Never" : "Никогда", "Once every direct access" : "Один раз при прямом доступе", "Folder name" : "Имя каталога", + "External storage" : "Внешнее хранилище", "Authentication" : "Авторизация", "Configuration" : "Конфигурация", "Available for" : "Доступно для", diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js index 1bfc1504544..5ac0f649bad 100644 --- a/apps/files_external/l10n/sl.js +++ b/apps/files_external/l10n/sl.js @@ -6,7 +6,6 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Vpisati je treba veljaven ključ programa in kodo.", "Step 1 failed. Exception: %s" : "1. korak je spodletel. Izjemna napaka: %s", "Step 2 failed. Exception: %s" : "2. korak je spodletel. Izjemna napaka: %s", - "External storage" : "Zunanja shramba", "Dropbox App Configuration" : "Nastavitve programa Dropbox", "Google Drive App Configuration" : "Nastavitve programa Google Drive", "Personal" : "Osebno", @@ -109,6 +108,7 @@ OC.L10N.register( "Never" : "Nikoli", "Once every direct access" : "Enkrat ob neposrednem dostopu", "Folder name" : "Ime mape", + "External storage" : "Zunanja shramba", "Authentication" : "Overitev", "Configuration" : "Nastavitve", "Available for" : "Na voljo za", diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json index b695d2b93ae..d624689d955 100644 --- a/apps/files_external/l10n/sl.json +++ b/apps/files_external/l10n/sl.json @@ -4,7 +4,6 @@ "Please provide a valid app key and secret." : "Vpisati je treba veljaven ključ programa in kodo.", "Step 1 failed. Exception: %s" : "1. korak je spodletel. Izjemna napaka: %s", "Step 2 failed. Exception: %s" : "2. korak je spodletel. Izjemna napaka: %s", - "External storage" : "Zunanja shramba", "Dropbox App Configuration" : "Nastavitve programa Dropbox", "Google Drive App Configuration" : "Nastavitve programa Google Drive", "Personal" : "Osebno", @@ -107,6 +106,7 @@ "Never" : "Nikoli", "Once every direct access" : "Enkrat ob neposrednem dostopu", "Folder name" : "Ime mape", + "External storage" : "Zunanja shramba", "Authentication" : "Overitev", "Configuration" : "Nastavitve", "Available for" : "Na voljo za", diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js index b36623211b5..e45e1cf261b 100644 --- a/apps/files_external/l10n/sq.js +++ b/apps/files_external/l10n/sq.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Ju lutemi jepni një kyç dhe një të fshehtë aplikacioni të vlefshme.", "Step 1 failed. Exception: %s" : "Hapi 1 dështoi. Përjashtim: %s", "Step 2 failed. Exception: %s" : "Hapi 2 dështoi. Përjashtim: %s", - "External storage" : "Depozitë e jashtme", + "External storages" : "Kujtesë e jashtëme", "Dropbox App Configuration" : "Formësim i Aplikacionit Dropbox", "Google Drive App Configuration" : "Formësim i Aplikacionit Google Drive", "Personal" : "Personale", @@ -100,7 +100,6 @@ OC.L10N.register( "OpenStack Object Storage" : "Depozitë OpenStack Object", "Service name" : "Emër shërbimi", "Request timeout (seconds)" : "Kohë skadimi kërkese (sekonda)", - "External storages" : "Kujtesë e jashtëme", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e cURL në PHP nuk është e instaluar ose e aktivizuar. Lidhja e %s nuk është e mundur. Ju lutemi kërkojini administratorin të sistemit tuaj që ta instaloj.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nuk është instaluar.Montimi i %s nuk është i mundur.Ju lutem kërkojini administratorit të sistemit tuaj ta instalojë.", @@ -116,6 +115,7 @@ OC.L10N.register( "Never" : "Kurrë", "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta", "Folder name" : "Emër dosjeje", + "External storage" : "Depozitë e jashtme", "Authentication" : "Mirëfilltësim", "Configuration" : "Formësim", "Available for" : "E gatshme për", diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json index 9d3b25c1961..4fa3b01ce8d 100644 --- a/apps/files_external/l10n/sq.json +++ b/apps/files_external/l10n/sq.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Ju lutemi jepni një kyç dhe një të fshehtë aplikacioni të vlefshme.", "Step 1 failed. Exception: %s" : "Hapi 1 dështoi. Përjashtim: %s", "Step 2 failed. Exception: %s" : "Hapi 2 dështoi. Përjashtim: %s", - "External storage" : "Depozitë e jashtme", + "External storages" : "Kujtesë e jashtëme", "Dropbox App Configuration" : "Formësim i Aplikacionit Dropbox", "Google Drive App Configuration" : "Formësim i Aplikacionit Google Drive", "Personal" : "Personale", @@ -98,7 +98,6 @@ "OpenStack Object Storage" : "Depozitë OpenStack Object", "Service name" : "Emër shërbimi", "Request timeout (seconds)" : "Kohë skadimi kërkese (sekonda)", - "External storages" : "Kujtesë e jashtëme", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e cURL në PHP nuk është e instaluar ose e aktivizuar. Lidhja e %s nuk është e mundur. Ju lutemi kërkojini administratorin të sistemit tuaj që ta instaloj.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Mbështetja e FTP në PHP nuk është e aktivizuar ose instaluar.Lidhja e %s nuk është e mundur.Ju lutem kërkojini administratorit të sistemit tuaj që ta instalojë.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" nuk është instaluar.Montimi i %s nuk është i mundur.Ju lutem kërkojini administratorit të sistemit tuaj ta instalojë.", @@ -114,6 +113,7 @@ "Never" : "Kurrë", "Once every direct access" : "Çdo herë pas hyrjesh të drejtpërdrejta", "Folder name" : "Emër dosjeje", + "External storage" : "Depozitë e jashtme", "Authentication" : "Mirëfilltësim", "Configuration" : "Formësim", "Available for" : "E gatshme për", diff --git a/apps/files_external/l10n/sv.js b/apps/files_external/l10n/sv.js index fcb91f14ae4..c47779943a8 100644 --- a/apps/files_external/l10n/sv.js +++ b/apps/files_external/l10n/sv.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Vänligen ange en giltig applikationsnyckel och hemlig fras.", "Step 1 failed. Exception: %s" : "Steg 1 flaerade. Undantag: %s", "Step 2 failed. Exception: %s" : "Steg 2 falerade. Undantag: %s", - "External storage" : "Extern lagring", + "External storages" : "Extern Lagring", "Dropbox App Configuration" : "Dropbox Konfiguration", "Google Drive App Configuration" : "Google Drive Konfiguration", "Personal" : "Privat", @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Sparade uppgifter", "Credentials saving failed" : "Misslyckades med att spara uppgifterna", "Credentials required" : "Uppgifter krävs", + "Storage with ID \"%d\" not found" : "Lagringsutrymme med ID \"%d\" hittades inte", "Invalid backend or authentication mechanism class" : "Ogiltig backend eller autentiseringsmekanism-klass", "Invalid mount point" : "Ogiltig monteringspunkt", "Objectstore forbidden" : "Objekt förbjudet", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Otillfredsställda autentiseringsmekanism parametrar", "Insufficient data: %s" : "Otillräcklig data: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Lagringsutrymme med ID \"%d\" är inte redigerbart för användare", "Access key" : "Åtkomstnyckel", "Secret key" : "Hemlig nyckel", "Builtin" : "Inbyggt", @@ -100,7 +102,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Namn på tjänst", "Request timeout (seconds)" : "Sekunder för anslutningsförsök", - "External storages" : "Extern Lagring", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-stöd i PHP är inte aktiverat eller har inte installerats. Montering av %s är inte möjlig. Be din systemadministratör om installation.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP-stöd i PHP är inte aktiverat eller har inte installerats. Montering av %s är inte möjlig. Be din systemadministratör om installation.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" är inte installerad. Montering av %s är inte möjlig. Be din systemadministratör om installation.", @@ -116,6 +117,7 @@ OC.L10N.register( "Never" : "Aldrig", "Once every direct access" : "En gång vid varje direktanslutning", "Folder name" : "Mappnamn", + "External storage" : "Extern lagring", "Authentication" : "Autentisering", "Configuration" : "Konfiguration", "Available for" : "Tillgänglig för", diff --git a/apps/files_external/l10n/sv.json b/apps/files_external/l10n/sv.json index 6fd3d8d34ef..e15b1322064 100644 --- a/apps/files_external/l10n/sv.json +++ b/apps/files_external/l10n/sv.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Vänligen ange en giltig applikationsnyckel och hemlig fras.", "Step 1 failed. Exception: %s" : "Steg 1 flaerade. Undantag: %s", "Step 2 failed. Exception: %s" : "Steg 2 falerade. Undantag: %s", - "External storage" : "Extern lagring", + "External storages" : "Extern Lagring", "Dropbox App Configuration" : "Dropbox Konfiguration", "Google Drive App Configuration" : "Google Drive Konfiguration", "Personal" : "Privat", @@ -36,6 +36,7 @@ "Credentials saved" : "Sparade uppgifter", "Credentials saving failed" : "Misslyckades med att spara uppgifterna", "Credentials required" : "Uppgifter krävs", + "Storage with ID \"%d\" not found" : "Lagringsutrymme med ID \"%d\" hittades inte", "Invalid backend or authentication mechanism class" : "Ogiltig backend eller autentiseringsmekanism-klass", "Invalid mount point" : "Ogiltig monteringspunkt", "Objectstore forbidden" : "Objekt förbjudet", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Otillfredsställda autentiseringsmekanism parametrar", "Insufficient data: %s" : "Otillräcklig data: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Lagringsutrymme med ID \"%d\" är inte redigerbart för användare", "Access key" : "Åtkomstnyckel", "Secret key" : "Hemlig nyckel", "Builtin" : "Inbyggt", @@ -98,7 +100,6 @@ "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Namn på tjänst", "Request timeout (seconds)" : "Sekunder för anslutningsförsök", - "External storages" : "Extern Lagring", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "cURL-stöd i PHP är inte aktiverat eller har inte installerats. Montering av %s är inte möjlig. Be din systemadministratör om installation.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "FTP-stöd i PHP är inte aktiverat eller har inte installerats. Montering av %s är inte möjlig. Be din systemadministratör om installation.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" är inte installerad. Montering av %s är inte möjlig. Be din systemadministratör om installation.", @@ -114,6 +115,7 @@ "Never" : "Aldrig", "Once every direct access" : "En gång vid varje direktanslutning", "Folder name" : "Mappnamn", + "External storage" : "Extern lagring", "Authentication" : "Autentisering", "Configuration" : "Konfiguration", "Available for" : "Tillgänglig för", diff --git a/apps/files_external/l10n/th.js b/apps/files_external/l10n/th.js index 6f6a34f900a..faaad69c684 100644 --- a/apps/files_external/l10n/th.js +++ b/apps/files_external/l10n/th.js @@ -6,7 +6,6 @@ OC.L10N.register( "Please provide a valid app key and secret." : "โปรดระบุคีย์และรหัสลับของแอพฯ ให้ถูกต้อง", "Step 1 failed. Exception: %s" : "ขั้นตอนที่ 1 ล้มเหลว ข้อยกเว้น: %s", "Step 2 failed. Exception: %s" : "ขั้นตอนที่ 2 ล้มเหลว ข้อยกเว้น: %s", - "External storage" : "จัดเก็บข้อมูลภายนอก", "Personal" : "ส่วนตัว", "System" : "ระบบ", "Grant access" : "อนุญาตให้เข้าถึงได้", @@ -103,6 +102,7 @@ OC.L10N.register( "Never" : "ไม่เคย", "Once every direct access" : "เมื่อทุกคนเข้าถึงโดยตรง", "Folder name" : "ชื่อโฟลเดอร์", + "External storage" : "จัดเก็บข้อมูลภายนอก", "Authentication" : "รับรองความถูกต้อง", "Configuration" : "การกำหนดค่า", "Available for" : "สามารถใช้ได้สำหรับ", diff --git a/apps/files_external/l10n/th.json b/apps/files_external/l10n/th.json index 4235731072b..9349bc382ea 100644 --- a/apps/files_external/l10n/th.json +++ b/apps/files_external/l10n/th.json @@ -4,7 +4,6 @@ "Please provide a valid app key and secret." : "โปรดระบุคีย์และรหัสลับของแอพฯ ให้ถูกต้อง", "Step 1 failed. Exception: %s" : "ขั้นตอนที่ 1 ล้มเหลว ข้อยกเว้น: %s", "Step 2 failed. Exception: %s" : "ขั้นตอนที่ 2 ล้มเหลว ข้อยกเว้น: %s", - "External storage" : "จัดเก็บข้อมูลภายนอก", "Personal" : "ส่วนตัว", "System" : "ระบบ", "Grant access" : "อนุญาตให้เข้าถึงได้", @@ -101,6 +100,7 @@ "Never" : "ไม่เคย", "Once every direct access" : "เมื่อทุกคนเข้าถึงโดยตรง", "Folder name" : "ชื่อโฟลเดอร์", + "External storage" : "จัดเก็บข้อมูลภายนอก", "Authentication" : "รับรองความถูกต้อง", "Configuration" : "การกำหนดค่า", "Available for" : "สามารถใช้ได้สำหรับ", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index 0c255199915..9aa54a5ea29 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "Lütfen geçerli bir uygulama anahtarı ve parola yazın.", "Step 1 failed. Exception: %s" : "1. Adım tamamlanamadı. Sorun: %s", "Step 2 failed. Exception: %s" : "2. Adım tamamlanamadı. Sorun: %s", - "External storage" : "Dış depolama", + "External storages" : "Dış depolama", "Dropbox App Configuration" : "Dropbox Uygulaması Yapılandırması", "Google Drive App Configuration" : "Google Drive Uygulaması Yapılandırması", "Personal" : "Kişisel", @@ -102,10 +102,10 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack Nesne Depolama", "Service name" : "Hizmet adı", "Request timeout (seconds)" : "İstek zaman aşımı (saniye)", - "External storages" : "Dış depolama", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s kurulmamış. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", + "External storage support" : "Dış depolama desteği", "No external storage configured" : "Herhangi bir dış depolama yapılandırılmamış", "You can add external storages in the personal settings" : "Kişisel ayarlar bölümünden dış depolamaları ekleyebilirsiniz", "Name" : "Ad", @@ -118,6 +118,7 @@ OC.L10N.register( "Never" : "Asla", "Once every direct access" : "Her doğrudan erişimde bir kez", "Folder name" : "Klasör adı", + "External storage" : "Dış depolama", "Authentication" : "Kimlik Doğrulama", "Configuration" : "Yapılandırma", "Available for" : "Kullanabilecekler", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index 7d5b940897e..448c708a318 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "Lütfen geçerli bir uygulama anahtarı ve parola yazın.", "Step 1 failed. Exception: %s" : "1. Adım tamamlanamadı. Sorun: %s", "Step 2 failed. Exception: %s" : "2. Adım tamamlanamadı. Sorun: %s", - "External storage" : "Dış depolama", + "External storages" : "Dış depolama", "Dropbox App Configuration" : "Dropbox Uygulaması Yapılandırması", "Google Drive App Configuration" : "Google Drive Uygulaması Yapılandırması", "Personal" : "Kişisel", @@ -100,10 +100,10 @@ "OpenStack Object Storage" : "OpenStack Nesne Depolama", "Service name" : "Hizmet adı", "Request timeout (seconds)" : "İstek zaman aşımı (saniye)", - "External storages" : "Dış depolama", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP cURL desteği kurulmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "PHP FTP desteği kuurlmamış ya da etkinleştirilmemiş. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "%s kurulmamış. %s bağlanamaz. Lütfen kurulum için sistem yöneticinizle görüşün.", + "External storage support" : "Dış depolama desteği", "No external storage configured" : "Herhangi bir dış depolama yapılandırılmamış", "You can add external storages in the personal settings" : "Kişisel ayarlar bölümünden dış depolamaları ekleyebilirsiniz", "Name" : "Ad", @@ -116,6 +116,7 @@ "Never" : "Asla", "Once every direct access" : "Her doğrudan erişimde bir kez", "Folder name" : "Klasör adı", + "External storage" : "Dış depolama", "Authentication" : "Kimlik Doğrulama", "Configuration" : "Yapılandırma", "Available for" : "Kullanabilecekler", diff --git a/apps/files_external/l10n/zh_CN.js b/apps/files_external/l10n/zh_CN.js index 5661efc4f14..f2a6772925f 100644 --- a/apps/files_external/l10n/zh_CN.js +++ b/apps/files_external/l10n/zh_CN.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "请提供有效的 appkey 和密钥.", "Step 1 failed. Exception: %s" : "步骤 1 失败. 异常: %s", "Step 2 failed. Exception: %s" : "步骤 2 失败. 异常: %s", - "External storage" : "外部存储", + "External storages" : "外部存储", "Dropbox App Configuration" : "Dropbox 配置", "Google Drive App Configuration" : "Google Drive 配置", "Personal" : "个人", @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "凭据已保存", "Credentials saving failed" : "凭据保存失败", "Credentials required" : "需要凭据", + "Storage with ID \"%d\" not found" : "ID%d的存储未找到", "Invalid backend or authentication mechanism class" : "无效的后端或认证类型", "Invalid mount point" : "无效的挂载点", "Objectstore forbidden" : "对象存储禁止访问", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "无法满足认证类型条件", "Insufficient data: %s" : "数据不足: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "ID%d的存储不可编辑", "Access key" : "Access key", "Secret key" : "Secret key", "Builtin" : "内置", @@ -100,10 +102,10 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack 对象存储", "Service name" : "服务名称", "Request timeout (seconds)" : "请求超时时间 (秒)", - "External storages" : "外部存储", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装或启用 PHP 中的 cURL 支持. 无法挂载 %s. 请联系您的系统管理员安装.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装或启用 PHP 中的 FTP 支持. 无法挂载 %s. 请联系您的系统管理员安装.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装 \"%s\". 无法挂载 %s. 请联系您的系统管理员安装.", + "External storage support" : "外部存储支持", "No external storage configured" : "没有配置外部存储", "You can add external storages in the personal settings" : "您可以在个人设置中添加外部存储", "Name" : "名称", @@ -116,6 +118,7 @@ OC.L10N.register( "Never" : "从不", "Once every direct access" : "每次访问时", "Folder name" : "目录名称", + "External storage" : "外部存储", "Authentication" : "认证", "Configuration" : "配置", "Available for" : "可用于", diff --git a/apps/files_external/l10n/zh_CN.json b/apps/files_external/l10n/zh_CN.json index d7201ec7cf7..5b3e95dfdbe 100644 --- a/apps/files_external/l10n/zh_CN.json +++ b/apps/files_external/l10n/zh_CN.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "请提供有效的 appkey 和密钥.", "Step 1 failed. Exception: %s" : "步骤 1 失败. 异常: %s", "Step 2 failed. Exception: %s" : "步骤 2 失败. 异常: %s", - "External storage" : "外部存储", + "External storages" : "外部存储", "Dropbox App Configuration" : "Dropbox 配置", "Google Drive App Configuration" : "Google Drive 配置", "Personal" : "个人", @@ -36,6 +36,7 @@ "Credentials saved" : "凭据已保存", "Credentials saving failed" : "凭据保存失败", "Credentials required" : "需要凭据", + "Storage with ID \"%d\" not found" : "ID%d的存储未找到", "Invalid backend or authentication mechanism class" : "无效的后端或认证类型", "Invalid mount point" : "无效的挂载点", "Objectstore forbidden" : "对象存储禁止访问", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "无法满足认证类型条件", "Insufficient data: %s" : "数据不足: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "ID%d的存储不可编辑", "Access key" : "Access key", "Secret key" : "Secret key", "Builtin" : "内置", @@ -98,10 +100,10 @@ "OpenStack Object Storage" : "OpenStack 对象存储", "Service name" : "服务名称", "Request timeout (seconds)" : "请求超时时间 (秒)", - "External storages" : "外部存储", "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装或启用 PHP 中的 cURL 支持. 无法挂载 %s. 请联系您的系统管理员安装.", "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装或启用 PHP 中的 FTP 支持. 无法挂载 %s. 请联系您的系统管理员安装.", "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "没有安装 \"%s\". 无法挂载 %s. 请联系您的系统管理员安装.", + "External storage support" : "外部存储支持", "No external storage configured" : "没有配置外部存储", "You can add external storages in the personal settings" : "您可以在个人设置中添加外部存储", "Name" : "名称", @@ -114,6 +116,7 @@ "Never" : "从不", "Once every direct access" : "每次访问时", "Folder name" : "目录名称", + "External storage" : "外部存储", "Authentication" : "认证", "Configuration" : "配置", "Available for" : "可用于", diff --git a/apps/files_external/l10n/zh_TW.js b/apps/files_external/l10n/zh_TW.js index b404016f934..f33986f0fcb 100644 --- a/apps/files_external/l10n/zh_TW.js +++ b/apps/files_external/l10n/zh_TW.js @@ -6,7 +6,7 @@ OC.L10N.register( "Please provide a valid app key and secret." : "請提供有效的應用程式金鑰及密碼", "Step 1 failed. Exception: %s" : "步驟 1 失敗,出現異常: %s", "Step 2 failed. Exception: %s" : "步驟 2 失敗,出現異常: %s", - "External storage" : "外部儲存", + "External storages" : "外部儲存", "Dropbox App Configuration" : "Dropbox 應用設置", "Google Drive App Configuration" : "Google Drive 應用設置", "Personal" : "個人", @@ -83,7 +83,6 @@ OC.L10N.register( "OpenStack Object Storage" : "OpenStack 物件儲存", "Service name" : "服務名稱", "Request timeout (seconds)" : "請求超時 (秒)", - "External storages" : "外部儲存", "No external storage configured" : "目前尚未配置任何外部儲存", "You can add external storages in the personal settings" : "在個人設定裡您可以自行加入外部儲存設定", "Name" : "名稱", @@ -95,6 +94,7 @@ OC.L10N.register( "Check for changes" : "檢查變動", "Never" : "絕不", "Folder name" : "資料夾名稱", + "External storage" : "外部儲存", "Authentication" : "驗證", "Configuration" : "設定", "Available for" : "可用的", diff --git a/apps/files_external/l10n/zh_TW.json b/apps/files_external/l10n/zh_TW.json index 8a63c441d39..db55e88b287 100644 --- a/apps/files_external/l10n/zh_TW.json +++ b/apps/files_external/l10n/zh_TW.json @@ -4,7 +4,7 @@ "Please provide a valid app key and secret." : "請提供有效的應用程式金鑰及密碼", "Step 1 failed. Exception: %s" : "步驟 1 失敗,出現異常: %s", "Step 2 failed. Exception: %s" : "步驟 2 失敗,出現異常: %s", - "External storage" : "外部儲存", + "External storages" : "外部儲存", "Dropbox App Configuration" : "Dropbox 應用設置", "Google Drive App Configuration" : "Google Drive 應用設置", "Personal" : "個人", @@ -81,7 +81,6 @@ "OpenStack Object Storage" : "OpenStack 物件儲存", "Service name" : "服務名稱", "Request timeout (seconds)" : "請求超時 (秒)", - "External storages" : "外部儲存", "No external storage configured" : "目前尚未配置任何外部儲存", "You can add external storages in the personal settings" : "在個人設定裡您可以自行加入外部儲存設定", "Name" : "名稱", @@ -93,6 +92,7 @@ "Check for changes" : "檢查變動", "Never" : "絕不", "Folder name" : "資料夾名稱", + "External storage" : "外部儲存", "Authentication" : "驗證", "Configuration" : "設定", "Available for" : "可用的", diff --git a/apps/files_external/lib/Config/ExternalMountPoint.php b/apps/files_external/lib/Config/ExternalMountPoint.php new file mode 100644 index 00000000000..76a090b7ec4 --- /dev/null +++ b/apps/files_external/lib/Config/ExternalMountPoint.php @@ -0,0 +1,30 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @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\Files_External\Config; + +use OC\Files\Mount\MountPoint; + +class ExternalMountPoint extends MountPoint { + public function getMountType() { + return 'external'; + } +} diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php index cc4cd641ce5..7afdb746a98 100644 --- a/apps/files_external/lib/Lib/Storage/SMB.php +++ b/apps/files_external/lib/Lib/Storage/SMB.php @@ -31,6 +31,7 @@ namespace OCA\Files_External\Lib\Storage; +use Icewind\SMB\Exception\AlreadyExistsException; use Icewind\SMB\Exception\ConnectException; use Icewind\SMB\Exception\Exception; use Icewind\SMB\Exception\ForbiddenException; @@ -90,6 +91,7 @@ class SMB extends Common implements INotifyStorage { throw new \Exception('Invalid configuration'); } $this->statCache = new CappedMemoryCache(); + parent::__construct($params); } /** @@ -162,10 +164,42 @@ class SMB extends Common implements INotifyStorage { * @return array */ protected function formatInfo($info) { - return array( + $result = [ 'size' => $info->getSize(), - 'mtime' => $info->getMTime() - ); + 'mtime' => $info->getMTime(), + ]; + if ($info->isDirectory()) { + $result['type'] = 'dir'; + } else { + $result['type'] = 'file'; + } + return $result; + } + + /** + * Rename the files. If the source or the target is the root, the rename won't happen. + * + * @param string $source the old name of the path + * @param string $target the new name of the path + * @return bool true if the rename is successful, false otherwise + */ + public function rename($source, $target) { + if ($this->isRootDir($source) || $this->isRootDir($target)) { + return false; + } + + $absoluteSource = $this->buildPath($source); + $absoluteTarget = $this->buildPath($target); + try { + $result = $this->share->rename($absoluteSource, $absoluteTarget); + } catch (AlreadyExistsException $e) { + $this->remove($target); + $result = $this->share->rename($absoluteSource, $absoluteTarget); + } catch (\Exception $e) { + return false; + } + unset($this->statCache[$absoluteSource], $this->statCache[$absoluteTarget]); + return $result; } /** @@ -220,6 +254,10 @@ class SMB extends Common implements INotifyStorage { * @return bool */ public function unlink($path) { + if ($this->isRootDir($path)) { + return false; + } + try { if ($this->is_dir($path)) { return $this->rmdir($path); @@ -239,26 +277,6 @@ class SMB extends Common implements INotifyStorage { } /** - * @param string $path1 the old name - * @param string $path2 the new name - * @return bool - */ - public function rename($path1, $path2) { - try { - $this->remove($path2); - $path1 = $this->buildPath($path1); - $path2 = $this->buildPath($path2); - return $this->share->rename($path1, $path2); - } catch (NotFoundException $e) { - return false; - } catch (ForbiddenException $e) { - return false; - } catch (ConnectException $e) { - throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); - } - } - - /** * check if a file or folder has been updated since $time * * @param string $path @@ -266,7 +284,7 @@ class SMB extends Common implements INotifyStorage { * @return bool */ public function hasUpdated($path, $time) { - if (!$path and $this->root == '/') { + if (!$path and $this->root === '/') { // mtime doesn't work for shares, but giving the nature of the backend, // doing a full update is still just fast enough return true; @@ -343,6 +361,10 @@ class SMB extends Common implements INotifyStorage { } public function rmdir($path) { + if ($this->isRootDir($path)) { + return false; + } + try { $this->statCache = array(); $content = $this->share->dir($this->buildPath($path)); diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index 9d8c179dd32..e463a0d3c37 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -88,7 +88,7 @@ ?> <form data-can-create="<?php echo $canCreateMounts?'true':'false' ?>" id="files_external" class="section" data-encryption-enabled="<?php echo $_['encryptionEnabled']?'true': 'false'; ?>"> - <h2><?php p($l->t('External storage')); ?></h2> + <h2 data-anchor-name="external-storage"><?php p($l->t('External storages')); ?></h2> <?php if (isset($_['dependencies']) and ($_['dependencies']<>'') and $canCreateMounts) print_unescaped(''.$_['dependencies'].''); ?> <table id="externalStorage" class="grid" data-admin='<?php print_unescaped(json_encode($_['visibilityType'] === BackendService::VISIBILITY_ADMIN)); ?>'> <thead> diff --git a/apps/files_external/tests/Storage/SmbTest.php b/apps/files_external/tests/Storage/SmbTest.php index 45c01a0c59e..037c4cd4d39 100644 --- a/apps/files_external/tests/Storage/SmbTest.php +++ b/apps/files_external/tests/Storage/SmbTest.php @@ -132,4 +132,23 @@ class SmbTest extends \Test\Files\Storage\Storage { $this->assertEquals(new Change(IChange::ADDED, 'newfile.txt'), $result); } + + public function testRenameRoot() { + // root can't be renamed + $this->assertFalse($this->instance->rename('', 'foo1')); + + $this->instance->mkdir('foo2'); + $this->assertFalse($this->instance->rename('foo2', '')); + $this->instance->rmdir('foo2'); + } + + public function testUnlinkRoot() { + // root can't be deleted + $this->assertFalse($this->instance->unlink('')); + } + + public function testRmdirRoot() { + // root can't be deleted + $this->assertFalse($this->instance->rmdir('')); + } } diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js index ddfcfcd3d8b..f1fc71c6ce2 100644 --- a/apps/files_sharing/js/files_drop.js +++ b/apps/files_sharing/js/files_drop.js @@ -72,34 +72,43 @@ return true; }, + setFileIcon: function (fileName,fileIcon) { + $('#public-upload ul li[data-name="' + fileName + '"]').html(fileIcon); + $('[data-toggle="tooltip"]').tooltip(); + }, + initialize: function () { $(document).bind('drop dragover', function (e) { // Prevent the default browser drop action: e.preventDefault(); }); var output = this.template(); + var fileName = undefined; $('#public-upload').fileupload({ type: 'PUT', dropZone: $('#public-upload'), sequentialUploads: true, add: function(e, data) { Drop.addFileToUpload(e, data); + fileName = escapeHTML(data.files[0].name); //we return true to keep trying to upload next file even //if addFileToUpload did not like the privious one return true; }, done: function(e, data) { // Created - if (data.jqXHR.status === 201) { - var mimeTypeUrl = OC.MimeType.getIconUrl(data.files[0].type); - $('#public-upload ul li[data-name="' + escapeHTML(data.files[0].name) + '"]').html('<img src="' + escapeHTML(mimeTypeUrl) + '"/> ' + escapeHTML(data.files[0].name)); - $('[data-toggle="tooltip"]').tooltip(); - } else { - var name = data.files[0].name; - OC.Notification.showTemporary(OC.L10N.translate('files_sharing', 'Could not upload "{filename}"', {filename: name})); - $('#public-upload ul li[data-name="' + escapeHTML(name) + '"]').html(output({isUploading: false, name: escapeHTML(name)})); - $('[data-toggle="tooltip"]').tooltip(); - } + var mimeTypeUrl = OC.MimeType.getIconUrl(data.files[0].type); + var fileIcon = '<img src="' + escapeHTML(mimeTypeUrl) + '"/> ' + fileName; + Drop.setFileIcon(fileName,fileIcon); + }, + fail: function(e, data, errorThrown) { + OC.Notification.showTemporary(OC.L10N.translate( + 'files_sharing', + 'Could not upload "{filename}"', + {filename: fileName} + )); + var fileIcon = output({isUploading: false, name: fileName}); + Drop.setFileIcon(fileName,fileIcon); }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index 35b5d6c78d3..fa065a2f367 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Nelze navýšit oprávnění", "%s is publicly shared" : "%s je veřejně sdílen", "Share API is disabled" : "Sdílení API je zakázané", + "File sharing" : "Sdílení souborů", "This share is password-protected" : "Toto sdílení je chráněno heslem", "The password is wrong. Try again." : "Heslo není správné. Zkuste to znovu.", "Password" : "Heslo", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index af0f671069e..e56596365e3 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Nelze navýšit oprávnění", "%s is publicly shared" : "%s je veřejně sdílen", "Share API is disabled" : "Sdílení API je zakázané", + "File sharing" : "Sdílení souborů", "This share is password-protected" : "Toto sdílení je chráněno heslem", "The password is wrong. Try again." : "Heslo není správné. Zkuste to znovu.", "Password" : "Heslo", diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index 99684c3e7e6..0d22e991d88 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "%s is publicly shared" : "%s wurde öffentlich geteilt", "Share API is disabled" : "Teilen-API ist deaktivert", + "File sharing" : "Dateifreigaben", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", "The password is wrong. Try again." : "Das Passwort ist falsch. Versuche es erneut.", "Password" : "Passwort", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index 22d17d4e398..e7e758c0fcf 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "%s is publicly shared" : "%s wurde öffentlich geteilt", "Share API is disabled" : "Teilen-API ist deaktivert", + "File sharing" : "Dateifreigaben", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", "The password is wrong. Try again." : "Das Passwort ist falsch. Versuche es erneut.", "Password" : "Passwort", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 5a24532a35b..4d6529d80a8 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "%s is publicly shared" : "%s ist öffentlich geteilt", "Share API is disabled" : "Teilen-API ist deaktivert", + "File sharing" : "Dateifreigabe", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", "The password is wrong. Try again." : "Das Passwort ist falsch. Bitte versuchen Sie es erneut.", "Password" : "Passwort", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 884eab04648..03c717acca3 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "%s is publicly shared" : "%s ist öffentlich geteilt", "Share API is disabled" : "Teilen-API ist deaktivert", + "File sharing" : "Dateifreigabe", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", "The password is wrong. Try again." : "Das Passwort ist falsch. Bitte versuchen Sie es erneut.", "Password" : "Passwort", diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index 9ab8ca10e27..4b4f9e9ecfc 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Δεν μπορούμε να αυξήσουμε δικαιώματα", "%s is publicly shared" : "%s είναι δημόσια διαμοιρασμένο", "Share API is disabled" : "API διαμοιρασμού είναι απενεργοποιημένο", + "File sharing" : "Διαμοιρασμός αρχείων", "This share is password-protected" : "Αυτός ο κοινόχρηστος φάκελος προστατεύεται με κωδικό", "The password is wrong. Try again." : "Εσφαλμένος κωδικός πρόσβασης. Προσπαθήστε ξανά.", "Password" : "Κωδικός πρόσβασης", diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index bf12d262230..8cd4acd2d0b 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Δεν μπορούμε να αυξήσουμε δικαιώματα", "%s is publicly shared" : "%s είναι δημόσια διαμοιρασμένο", "Share API is disabled" : "API διαμοιρασμού είναι απενεργοποιημένο", + "File sharing" : "Διαμοιρασμός αρχείων", "This share is password-protected" : "Αυτός ο κοινόχρηστος φάκελος προστατεύεται με κωδικό", "The password is wrong. Try again." : "Εσφαλμένος κωδικός πρόσβασης. Προσπαθήστε ξανά.", "Password" : "Κωδικός πρόσβασης", diff --git a/apps/files_sharing/l10n/es_MX.js b/apps/files_sharing/l10n/es_MX.js index 4c90b30040a..aa41fff18af 100644 --- a/apps/files_sharing/l10n/es_MX.js +++ b/apps/files_sharing/l10n/es_MX.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "No es posible incrementar los permisos", "%s is publicly shared" : "%s está compartido públicamente", "Share API is disabled" : "El API para compartir está deshabilitado", + "File sharing" : "Compartir archivos", "This share is password-protected" : "Este elemento compartido esta protegido con contraseña", "The password is wrong. Try again." : "La contraseña es incorrecta. Favor de intentarlo de nuevo.", "Password" : "Contraseña", diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json index f5697284120..1f7c46b2ff7 100644 --- a/apps/files_sharing/l10n/es_MX.json +++ b/apps/files_sharing/l10n/es_MX.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "No es posible incrementar los permisos", "%s is publicly shared" : "%s está compartido públicamente", "Share API is disabled" : "El API para compartir está deshabilitado", + "File sharing" : "Compartir archivos", "This share is password-protected" : "Este elemento compartido esta protegido con contraseña", "The password is wrong. Try again." : "La contraseña es incorrecta. Favor de intentarlo de nuevo.", "Password" : "Contraseña", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 12a83043de6..43a90ab04fa 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Impossible d'augmenter les permissions", "%s is publicly shared" : "%s a été partagé publiquement", "Share API is disabled" : "l'API de partage est désactivée", + "File sharing" : "Partage de fichiers", "This share is password-protected" : "Ce partage est protégé par un mot de passe", "The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.", "Password" : "Mot de passe", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 3b31113f45a..3c6370873b7 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Impossible d'augmenter les permissions", "%s is publicly shared" : "%s a été partagé publiquement", "Share API is disabled" : "l'API de partage est désactivée", + "File sharing" : "Partage de fichiers", "This share is password-protected" : "Ce partage est protégé par un mot de passe", "The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.", "Password" : "Mot de passe", diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js index 58d41c0c1cf..0bfe415807e 100644 --- a/apps/files_sharing/l10n/is.js +++ b/apps/files_sharing/l10n/is.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Get ekki aukið aðgangsheimildir", "%s is publicly shared" : "%s er deilt opinberlega", "Share API is disabled" : "Deilingar-API er óvirkt", + "File sharing" : "Skráadeiling", "This share is password-protected" : "Þessi sameign er varin með lykilorði", "The password is wrong. Try again." : "Lykilorðið er rangt. Reyndu aftur.", "Password" : "Lykilorð", diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json index 558df52aaeb..02d206257df 100644 --- a/apps/files_sharing/l10n/is.json +++ b/apps/files_sharing/l10n/is.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Get ekki aukið aðgangsheimildir", "%s is publicly shared" : "%s er deilt opinberlega", "Share API is disabled" : "Deilingar-API er óvirkt", + "File sharing" : "Skráadeiling", "This share is password-protected" : "Þessi sameign er varin með lykilorði", "The password is wrong. Try again." : "Lykilorðið er rangt. Reyndu aftur.", "Password" : "Lykilorð", diff --git a/apps/files_sharing/l10n/ko.js b/apps/files_sharing/l10n/ko.js index 5b5d00b98a4..1b342560312 100644 --- a/apps/files_sharing/l10n/ko.js +++ b/apps/files_sharing/l10n/ko.js @@ -1,13 +1,6 @@ OC.L10N.register( "files_sharing", { - "Server to server sharing is not enabled on this server" : "이 서버에서 서버간 공유를 사용할 수 없음", - "The mountpoint name contains invalid characters." : "마운트 지점 이름에 잘못된 글자가 포함되어 있습니다.", - "Not allowed to create a federated share with the same user server" : "같은 사용자 서버 내에서 연합 공유를 만들 수 없음", - "Invalid or untrusted SSL certificate" : "잘못되었거나 신뢰할 수 없는 SSL 인증서", - "Could not authenticate to remote share, password might be wrong" : "원격 공유에서 인증할 수 없습니다. 암호가 맞지 않을 수 있습니다.", - "Storage not valid" : "저장소가 잘못됨", - "Couldn't add remote share" : "원격 공유를 추가할 수 없음", "Shared with you" : "나와 공유됨", "Shared with others" : "다른 사람과 공유됨", "Shared by link" : "링크로 공유됨", @@ -17,72 +10,105 @@ OC.L10N.register( "Files and folders you share will show up here" : "내가 공유하는 파일과 폴더가 여기에 나타납니다", "No shared links" : "공유된 링크 없음", "Files and folders you share by link will show up here" : "내가 링크로 공유하는 파일과 폴더가 여기에 나타납니다", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "{owner}@{remote}의 원격 공유 {name}을(를) 추가하시겠습니까?", - "Remote share" : "원격 공유", - "Remote share password" : "원격 공유 암호", - "Cancel" : "취소", - "Add remote share" : "원격 공유 추가", "You can upload into this folder" : "이 폴더에 업로드할 수 있습니다", + "No compatible server found at {remote}" : "{remote}에서 호환 서버를 찾을 수 없음", + "Invalid server URL" : "잘못된 서버 URL", + "Failed to add the public link to your Nextcloud" : "Nextcloud에 공개 링크를 추가할 수 없음", + "Share" : "공유", + "No expiration date set" : "만료 날짜가 설정되지 않음", "Shared by" : "공유한 사용자:", "Sharing" : "공유", - "A file or folder has been <strong>shared</strong>" : "파일이나 폴더가 <strong>공유됨</strong>", - "A file or folder was shared from <strong>another server</strong>" : "<strong>다른 서버</strong>에서 파일이나 폴더를 공유함", - "A public shared file or folder was <strong>downloaded</strong>" : "공개 공유된 파일이나 폴더가 <strong>다운로드됨</strong>", - "You received a new remote share %2$s from %1$s" : "%1$s에서 새 원격 공유 %2$s을(를) 받았습니다", - "You received a new remote share from %s" : "%s에서 원격 공유 요청을 받았습니다", - "%1$s accepted remote share %2$s" : "%1$s 님이 원격 공유 %2$s을(를) 수락함", - "%1$s declined remote share %2$s" : "%1$s 님이 원격 공유 %2$s을(를) 거절함", - "%1$s unshared %2$s from you" : "%1$s 님이 %2$s의 공유를 중단함", - "Public shared folder %1$s was downloaded" : "공개 공유 폴더 %1$s이(가) 다운로드됨", - "Public shared file %1$s was downloaded" : "공개 공유 파일 %1$s이(가) 다운로드됨", - "You shared %1$s with %2$s" : "내가 %2$s 님과 %1$s을(를) 공유함", - "%2$s shared %1$s with %3$s" : "%2$s 님이 %1$s을(를) %3$s 님과 공유함", - "You removed the share of %2$s for %1$s" : "%1$s을(를) 위한 %2$s 그룹의 공유를 삭제함", - "%2$s removed the share of %3$s for %1$s" : "%2$s 님이 %1$s을(를) 위한 %3$s 그룹의 공유를 삭제함", - "You shared %1$s with group %2$s" : "내가 %2$s 그룹과 %1$s을(를) 공유함", - "%2$s shared %1$s with group %3$s" : "%2$s 님이 %1$s을(를) %3$s 그룹과 공유함", - "You removed the share of group %2$s for %1$s" : "%1$s 님을 위한 %2$s 그룹 공유를 삭제함", - "%2$s removed the share of group %3$s for %1$s" : "%2$s 님이 %1$s에 대한 %3$s 그룹의 공유를 삭제함", - "%2$s shared %1$s via link" : "%2$s 님이 %1$s을(를) 링크로 공유함", - "You shared %1$s via link" : "내가 %1$s을(를) 링크로 공유함", - "You removed the public link for %1$s" : "%1$s의 공개 링크를 삭제함", - "%2$s removed the public link for %1$s" : "%2$s 님이 %1$s의 공개 링크를 삭제함", - "Your public link for %1$s expired" : "%1$s의 공개 링크가 만료됨", - "The public link of %2$s for %1$s expired" : "%2$s 님의 %1$s 공개 링크가 만료됨", - "%2$s shared %1$s with you" : "%2$s 님이 내게 %1$s을(를) 공유함", - "%2$s removed the share for %1$s" : "%2$s 님이 %1$s 공유를 삭제함", + "File shares" : "파일 공유", "Downloaded via public link" : "공개 링크로 다운로드", - "Shared with %2$s" : "%2$s 님과 공유함", - "Shared with %3$s by %2$s" : "%2$s 님이 %3$s 님과 공유함", - "Removed share for %2$s" : "%2$s 님의 공유를 삭제함", - "%2$s removed share for %3$s" : "%2$s 님이 %3$s 님의 공유를 삭제함", - "Shared with group %2$s" : "%2$s 그룹과 공유함", - "Shared with group %3$s by %2$s" : "%2$s 님이 %3$s 그룹과 공유함", - "Removed share of group %2$s" : "%2$s 그룹의 공유를 삭제함", - "%2$s removed share of group %3$s" : "%2$s 님이 그룹 %3$s의 공유를 삭제함", - "Shared via link by %2$s" : "%2$s 님이 링크로 공유함", - "Shared via public link" : "공개 링크로 공유함", + "Downloaded by {email}" : "{email} 님이 다운로드함", + "{file} downloaded via public link" : "공개 링크로 {file} 다운로드함", + "{email} downloaded {file}" : "{email} 님이 {file}을(를) 다운로드함", + "Shared with group {group}" : "그룹 {group}와(과) 공유함", + "Removed share for group {group}" : "그룹 {group}의 공유를 삭제함", + "{actor} shared with group {group}" : "{actor} 님이 그룹 {group}와(과) 공유함", + "{actor} removed share for group {group}" : "{actor} 님이 그룹 {group}의 공유를 삭제함", + "You shared {file} with group {group}" : "파일 {file}을(를) 그룹 {group}와(과) 공유함", + "You removed group {group} from {file}" : "그룹 {group}을(를) {file}에서 삭제함", + "{actor} shared {file} with group {group}" : "{actor} 님이 {file}을(를) 그룹 {group}와(과) 공유함", + "{actor} removed group {group} from {file}" : "{actor} 님이 그룹 {group}을(를) {file}에서 삭제함", + "Shared as public link" : "공개 링크로 공유함", "Removed public link" : "공개 링크 삭제함", - "%2$s removed public link" : "%2$s 님이 공개 링크 삭제함", "Public link expired" : "공개 링크 만료됨", - "Public link of %2$s expired" : "%2$s 님의 공개 링크 만료됨", - "Shared by %2$s" : "%2$s 님이 공유함", - "Shares" : "공유", + "{actor} shared as public link" : "{actor} 님이 공개 링크로 공유함", + "{actor} removed public link" : "{actor} 님이 공개 링크를 삭제함", + "Public link of {actor} expired" : "{actor} 님의 공개 링크가 만료됨", + "You shared {file} as public link" : "{file}을(를) 공개 링크로 공유함", + "You removed public link for {file}" : "{file}의 공개 링크를 삭제함", + "Public link expired for {file}" : "{file}의 공개 링크가 만료됨", + "{actor} shared {file} as public link" : "{actor} 님이 {file}을(를) 공개 링크로 공유함", + "{actor} removed public link for {file}" : "{actor} 님이 {file}의 공개 링크를 삭제함", + "Public link of {actor} for {file} expired" : "{actor} 님의 {file} 공개 링크가 만료됨", + "{user} accepted the remote share" : "{user} 님이 원격 공유를 수락함", + "{user} declined the remote share" : "{user} 님이 원격 공유를 거절함", + "You received a new remote share {file} from {user}" : "{user} 님으로부터 원격 공유된 {file}을(를) 받음", + "{user} accepted the remote share of {file}" : "{user} 님이 {file}의 원격 공유를 수락함", + "{user} declined the remote share of {file}" : "{user} 님이 {file}의 원격 공유를 거절함", + "{user} unshared {file} from you" : "{user} 님이 {file} 공유를 해제함", + "Shared with {user}" : "{user} 님과 공유됨", + "Removed share for {user}" : "{user} 님의 공유 삭제함", + "{actor} shared with {user}" : "{actor} 님이 {user} 님과 공유함", + "{actor} removed share for {user}" : "{actor} 님이 {user} 님의 공유 삭제함", + "Shared by {actor}" : "{actor} 님이 공유함", + "{actor} removed share" : "{actor} 님이 공유 삭제함", + "You shared {file} with {user}" : "{file}을(를) {user} 님과 공유함", + "You removed {user} from {file}" : "{user} 님을 {file}에서 삭제함", + "{actor} shared {file} with {user}" : "{actor} 님이 {file}을(를) {user} 님과 공유함", + "{actor} removed {user} from {file}" : "{actor} 님이 {user} 님을 {file}에서 삭제함", + "{actor} shared {file} with you" : "{actor} 님이 {file}을 공유함", + "{actor} removed you from {file}" : "{actor} 님이 여러분을 {file}에서 삭제함", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "이메일이나 공개 공유로 공유한 파일이 <strong>다운로드됨</strong>", + "A file or folder was shared from <strong>another server</strong>" : "<strong>다른 서버</strong>에서 파일이나 폴더를 공유함", + "A file or folder has been <strong>shared</strong>" : "파일이나 폴더가 <strong>공유됨</strong>", + "Wrong share ID, share doesn't exist" : "잘못된 공유 ID, 공유가 존재하지 않음", + "could not delete share" : "공유를 삭제할 수 없음", + "Could not delete share" : "공유를 삭제할 수 없음", + "Please specify a file or folder path" : "파일이나 폴더 경로를 지정하십시오", + "Wrong path, file/folder doesn't exist" : "잘못된 경로, 파일/폴더가 존재하지 않음", + "Could not create share" : "공유를 만들 수 없음", + "invalid permissions" : "잘못된 권한", + "Please specify a valid user" : "유효한 사용자를 지정하십시오", + "Group sharing is disabled by the administrator" : "그룹 공유는 관리자에 의해 비활성화되어 있음", + "Please specify a valid group" : "유효한 그룹을 지정하십시오", + "Public link sharing is disabled by the administrator" : "공개 링크 공유는 관리자에 의해 비활성화되어 있음", + "Public upload disabled by the administrator" : "공개 업로드는 관리자에 의해 비활성화되어 있음", + "Public upload is only possible for publicly shared folders" : "공개 공유 폴더에만 공개 업로드를 사용할 수 있음", + "Invalid date, date format must be YYYY-MM-DD" : "잘못된 날짜, YYYY-MM-DD 형식이어야 합니다.", + "Sharing %s failed because the back end does not allow shares from type %s" : "%s을(를) 공유할 수 없습니다. 백엔드에서 %s 형식의 공유를 지원하지 않습니다", + "You cannot share to a Circle if the app is not enabled" : "서클 앱이 활성화되어 있지 않으면 서클로 공유할 수 없음", + "Please specify a valid circle" : "올바른 서클을 지정하십시오", + "Unknown share type" : "알 수 없는 공유 유형", + "Not a directory" : "디렉터리가 아님", + "Could not lock path" : "경로를 잠글 수 없음", + "Wrong or no update parameter given" : "업데이트 인자가 잘못되었거나 지정되지 않았음", + "Can't change permissions for public share links" : "공개 공유 링크의 권한을 변경할 수 없음", + "Cannot increase permissions" : "권한을 늘릴 수 없음", + "%s is publicly shared" : "%s이(가) 공개 공유됨", + "Share API is disabled" : "공유 API가 비활성화됨", "This share is password-protected" : "이 공유는 암호로 보호되어 있습니다", "The password is wrong. Try again." : "암호가 잘못되었습니다. 다시 입력해 주십시오.", "Password" : "암호", "No entries found in this folder" : "이 폴더에 항목 없음", "Name" : "이름", "Share time" : "공유 시간", + "Expiration date" : "만료 날짜", "Sorry, this link doesn’t seem to work anymore." : "죄송합니다. 이 링크는 더 이상 작동하지 않습니다.", "Reasons might be:" : "이유는 다음과 같을 수 있습니다:", "the item was removed" : "항목이 삭제됨", "the link expired" : "링크가 만료됨", "sharing is disabled" : "공유가 비활성화됨", "For more info, please ask the person who sent this link." : "자세한 정보는 링크를 보낸 사람에게 문의하십시오.", - "Add to your ownCloud" : "내 ownCloud에 추가하기", + "Add to your Nextcloud" : "내 Nextcloud에 추가", "Download" : "다운로드", "Download %s" : "%s 다운로드", - "Direct link" : "직접 링크" + "Direct link" : "직접 링크", + "Upload files to %s" : "%s에 파일 업로드", + "Select or drop files" : "파일을 선택하거나 끌어다 놓기", + "Uploading files…" : "파일 업로드 중…", + "Uploaded files:" : "업로드한 파일:" }, "nplurals=1; plural=0;"); diff --git a/apps/files_sharing/l10n/ko.json b/apps/files_sharing/l10n/ko.json index 7804a5f49c4..2120e6a8023 100644 --- a/apps/files_sharing/l10n/ko.json +++ b/apps/files_sharing/l10n/ko.json @@ -1,11 +1,4 @@ { "translations": { - "Server to server sharing is not enabled on this server" : "이 서버에서 서버간 공유를 사용할 수 없음", - "The mountpoint name contains invalid characters." : "마운트 지점 이름에 잘못된 글자가 포함되어 있습니다.", - "Not allowed to create a federated share with the same user server" : "같은 사용자 서버 내에서 연합 공유를 만들 수 없음", - "Invalid or untrusted SSL certificate" : "잘못되었거나 신뢰할 수 없는 SSL 인증서", - "Could not authenticate to remote share, password might be wrong" : "원격 공유에서 인증할 수 없습니다. 암호가 맞지 않을 수 있습니다.", - "Storage not valid" : "저장소가 잘못됨", - "Couldn't add remote share" : "원격 공유를 추가할 수 없음", "Shared with you" : "나와 공유됨", "Shared with others" : "다른 사람과 공유됨", "Shared by link" : "링크로 공유됨", @@ -15,72 +8,105 @@ "Files and folders you share will show up here" : "내가 공유하는 파일과 폴더가 여기에 나타납니다", "No shared links" : "공유된 링크 없음", "Files and folders you share by link will show up here" : "내가 링크로 공유하는 파일과 폴더가 여기에 나타납니다", - "Do you want to add the remote share {name} from {owner}@{remote}?" : "{owner}@{remote}의 원격 공유 {name}을(를) 추가하시겠습니까?", - "Remote share" : "원격 공유", - "Remote share password" : "원격 공유 암호", - "Cancel" : "취소", - "Add remote share" : "원격 공유 추가", "You can upload into this folder" : "이 폴더에 업로드할 수 있습니다", + "No compatible server found at {remote}" : "{remote}에서 호환 서버를 찾을 수 없음", + "Invalid server URL" : "잘못된 서버 URL", + "Failed to add the public link to your Nextcloud" : "Nextcloud에 공개 링크를 추가할 수 없음", + "Share" : "공유", + "No expiration date set" : "만료 날짜가 설정되지 않음", "Shared by" : "공유한 사용자:", "Sharing" : "공유", - "A file or folder has been <strong>shared</strong>" : "파일이나 폴더가 <strong>공유됨</strong>", - "A file or folder was shared from <strong>another server</strong>" : "<strong>다른 서버</strong>에서 파일이나 폴더를 공유함", - "A public shared file or folder was <strong>downloaded</strong>" : "공개 공유된 파일이나 폴더가 <strong>다운로드됨</strong>", - "You received a new remote share %2$s from %1$s" : "%1$s에서 새 원격 공유 %2$s을(를) 받았습니다", - "You received a new remote share from %s" : "%s에서 원격 공유 요청을 받았습니다", - "%1$s accepted remote share %2$s" : "%1$s 님이 원격 공유 %2$s을(를) 수락함", - "%1$s declined remote share %2$s" : "%1$s 님이 원격 공유 %2$s을(를) 거절함", - "%1$s unshared %2$s from you" : "%1$s 님이 %2$s의 공유를 중단함", - "Public shared folder %1$s was downloaded" : "공개 공유 폴더 %1$s이(가) 다운로드됨", - "Public shared file %1$s was downloaded" : "공개 공유 파일 %1$s이(가) 다운로드됨", - "You shared %1$s with %2$s" : "내가 %2$s 님과 %1$s을(를) 공유함", - "%2$s shared %1$s with %3$s" : "%2$s 님이 %1$s을(를) %3$s 님과 공유함", - "You removed the share of %2$s for %1$s" : "%1$s을(를) 위한 %2$s 그룹의 공유를 삭제함", - "%2$s removed the share of %3$s for %1$s" : "%2$s 님이 %1$s을(를) 위한 %3$s 그룹의 공유를 삭제함", - "You shared %1$s with group %2$s" : "내가 %2$s 그룹과 %1$s을(를) 공유함", - "%2$s shared %1$s with group %3$s" : "%2$s 님이 %1$s을(를) %3$s 그룹과 공유함", - "You removed the share of group %2$s for %1$s" : "%1$s 님을 위한 %2$s 그룹 공유를 삭제함", - "%2$s removed the share of group %3$s for %1$s" : "%2$s 님이 %1$s에 대한 %3$s 그룹의 공유를 삭제함", - "%2$s shared %1$s via link" : "%2$s 님이 %1$s을(를) 링크로 공유함", - "You shared %1$s via link" : "내가 %1$s을(를) 링크로 공유함", - "You removed the public link for %1$s" : "%1$s의 공개 링크를 삭제함", - "%2$s removed the public link for %1$s" : "%2$s 님이 %1$s의 공개 링크를 삭제함", - "Your public link for %1$s expired" : "%1$s의 공개 링크가 만료됨", - "The public link of %2$s for %1$s expired" : "%2$s 님의 %1$s 공개 링크가 만료됨", - "%2$s shared %1$s with you" : "%2$s 님이 내게 %1$s을(를) 공유함", - "%2$s removed the share for %1$s" : "%2$s 님이 %1$s 공유를 삭제함", + "File shares" : "파일 공유", "Downloaded via public link" : "공개 링크로 다운로드", - "Shared with %2$s" : "%2$s 님과 공유함", - "Shared with %3$s by %2$s" : "%2$s 님이 %3$s 님과 공유함", - "Removed share for %2$s" : "%2$s 님의 공유를 삭제함", - "%2$s removed share for %3$s" : "%2$s 님이 %3$s 님의 공유를 삭제함", - "Shared with group %2$s" : "%2$s 그룹과 공유함", - "Shared with group %3$s by %2$s" : "%2$s 님이 %3$s 그룹과 공유함", - "Removed share of group %2$s" : "%2$s 그룹의 공유를 삭제함", - "%2$s removed share of group %3$s" : "%2$s 님이 그룹 %3$s의 공유를 삭제함", - "Shared via link by %2$s" : "%2$s 님이 링크로 공유함", - "Shared via public link" : "공개 링크로 공유함", + "Downloaded by {email}" : "{email} 님이 다운로드함", + "{file} downloaded via public link" : "공개 링크로 {file} 다운로드함", + "{email} downloaded {file}" : "{email} 님이 {file}을(를) 다운로드함", + "Shared with group {group}" : "그룹 {group}와(과) 공유함", + "Removed share for group {group}" : "그룹 {group}의 공유를 삭제함", + "{actor} shared with group {group}" : "{actor} 님이 그룹 {group}와(과) 공유함", + "{actor} removed share for group {group}" : "{actor} 님이 그룹 {group}의 공유를 삭제함", + "You shared {file} with group {group}" : "파일 {file}을(를) 그룹 {group}와(과) 공유함", + "You removed group {group} from {file}" : "그룹 {group}을(를) {file}에서 삭제함", + "{actor} shared {file} with group {group}" : "{actor} 님이 {file}을(를) 그룹 {group}와(과) 공유함", + "{actor} removed group {group} from {file}" : "{actor} 님이 그룹 {group}을(를) {file}에서 삭제함", + "Shared as public link" : "공개 링크로 공유함", "Removed public link" : "공개 링크 삭제함", - "%2$s removed public link" : "%2$s 님이 공개 링크 삭제함", "Public link expired" : "공개 링크 만료됨", - "Public link of %2$s expired" : "%2$s 님의 공개 링크 만료됨", - "Shared by %2$s" : "%2$s 님이 공유함", - "Shares" : "공유", + "{actor} shared as public link" : "{actor} 님이 공개 링크로 공유함", + "{actor} removed public link" : "{actor} 님이 공개 링크를 삭제함", + "Public link of {actor} expired" : "{actor} 님의 공개 링크가 만료됨", + "You shared {file} as public link" : "{file}을(를) 공개 링크로 공유함", + "You removed public link for {file}" : "{file}의 공개 링크를 삭제함", + "Public link expired for {file}" : "{file}의 공개 링크가 만료됨", + "{actor} shared {file} as public link" : "{actor} 님이 {file}을(를) 공개 링크로 공유함", + "{actor} removed public link for {file}" : "{actor} 님이 {file}의 공개 링크를 삭제함", + "Public link of {actor} for {file} expired" : "{actor} 님의 {file} 공개 링크가 만료됨", + "{user} accepted the remote share" : "{user} 님이 원격 공유를 수락함", + "{user} declined the remote share" : "{user} 님이 원격 공유를 거절함", + "You received a new remote share {file} from {user}" : "{user} 님으로부터 원격 공유된 {file}을(를) 받음", + "{user} accepted the remote share of {file}" : "{user} 님이 {file}의 원격 공유를 수락함", + "{user} declined the remote share of {file}" : "{user} 님이 {file}의 원격 공유를 거절함", + "{user} unshared {file} from you" : "{user} 님이 {file} 공유를 해제함", + "Shared with {user}" : "{user} 님과 공유됨", + "Removed share for {user}" : "{user} 님의 공유 삭제함", + "{actor} shared with {user}" : "{actor} 님이 {user} 님과 공유함", + "{actor} removed share for {user}" : "{actor} 님이 {user} 님의 공유 삭제함", + "Shared by {actor}" : "{actor} 님이 공유함", + "{actor} removed share" : "{actor} 님이 공유 삭제함", + "You shared {file} with {user}" : "{file}을(를) {user} 님과 공유함", + "You removed {user} from {file}" : "{user} 님을 {file}에서 삭제함", + "{actor} shared {file} with {user}" : "{actor} 님이 {file}을(를) {user} 님과 공유함", + "{actor} removed {user} from {file}" : "{actor} 님이 {user} 님을 {file}에서 삭제함", + "{actor} shared {file} with you" : "{actor} 님이 {file}을 공유함", + "{actor} removed you from {file}" : "{actor} 님이 여러분을 {file}에서 삭제함", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "이메일이나 공개 공유로 공유한 파일이 <strong>다운로드됨</strong>", + "A file or folder was shared from <strong>another server</strong>" : "<strong>다른 서버</strong>에서 파일이나 폴더를 공유함", + "A file or folder has been <strong>shared</strong>" : "파일이나 폴더가 <strong>공유됨</strong>", + "Wrong share ID, share doesn't exist" : "잘못된 공유 ID, 공유가 존재하지 않음", + "could not delete share" : "공유를 삭제할 수 없음", + "Could not delete share" : "공유를 삭제할 수 없음", + "Please specify a file or folder path" : "파일이나 폴더 경로를 지정하십시오", + "Wrong path, file/folder doesn't exist" : "잘못된 경로, 파일/폴더가 존재하지 않음", + "Could not create share" : "공유를 만들 수 없음", + "invalid permissions" : "잘못된 권한", + "Please specify a valid user" : "유효한 사용자를 지정하십시오", + "Group sharing is disabled by the administrator" : "그룹 공유는 관리자에 의해 비활성화되어 있음", + "Please specify a valid group" : "유효한 그룹을 지정하십시오", + "Public link sharing is disabled by the administrator" : "공개 링크 공유는 관리자에 의해 비활성화되어 있음", + "Public upload disabled by the administrator" : "공개 업로드는 관리자에 의해 비활성화되어 있음", + "Public upload is only possible for publicly shared folders" : "공개 공유 폴더에만 공개 업로드를 사용할 수 있음", + "Invalid date, date format must be YYYY-MM-DD" : "잘못된 날짜, YYYY-MM-DD 형식이어야 합니다.", + "Sharing %s failed because the back end does not allow shares from type %s" : "%s을(를) 공유할 수 없습니다. 백엔드에서 %s 형식의 공유를 지원하지 않습니다", + "You cannot share to a Circle if the app is not enabled" : "서클 앱이 활성화되어 있지 않으면 서클로 공유할 수 없음", + "Please specify a valid circle" : "올바른 서클을 지정하십시오", + "Unknown share type" : "알 수 없는 공유 유형", + "Not a directory" : "디렉터리가 아님", + "Could not lock path" : "경로를 잠글 수 없음", + "Wrong or no update parameter given" : "업데이트 인자가 잘못되었거나 지정되지 않았음", + "Can't change permissions for public share links" : "공개 공유 링크의 권한을 변경할 수 없음", + "Cannot increase permissions" : "권한을 늘릴 수 없음", + "%s is publicly shared" : "%s이(가) 공개 공유됨", + "Share API is disabled" : "공유 API가 비활성화됨", "This share is password-protected" : "이 공유는 암호로 보호되어 있습니다", "The password is wrong. Try again." : "암호가 잘못되었습니다. 다시 입력해 주십시오.", "Password" : "암호", "No entries found in this folder" : "이 폴더에 항목 없음", "Name" : "이름", "Share time" : "공유 시간", + "Expiration date" : "만료 날짜", "Sorry, this link doesn’t seem to work anymore." : "죄송합니다. 이 링크는 더 이상 작동하지 않습니다.", "Reasons might be:" : "이유는 다음과 같을 수 있습니다:", "the item was removed" : "항목이 삭제됨", "the link expired" : "링크가 만료됨", "sharing is disabled" : "공유가 비활성화됨", "For more info, please ask the person who sent this link." : "자세한 정보는 링크를 보낸 사람에게 문의하십시오.", - "Add to your ownCloud" : "내 ownCloud에 추가하기", + "Add to your Nextcloud" : "내 Nextcloud에 추가", "Download" : "다운로드", "Download %s" : "%s 다운로드", - "Direct link" : "직접 링크" + "Direct link" : "직접 링크", + "Upload files to %s" : "%s에 파일 업로드", + "Select or drop files" : "파일을 선택하거나 끌어다 놓기", + "Uploading files…" : "파일 업로드 중…", + "Uploaded files:" : "업로드한 파일:" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js index 4abb9e6ef53..7c85614262e 100644 --- a/apps/files_sharing/l10n/pl.js +++ b/apps/files_sharing/l10n/pl.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Nie można zwiększyć uprawnień", "%s is publicly shared" : "%s jest publicznie dostępny", "Share API is disabled" : "API udostępniania jest wyłączone", + "File sharing" : "Udostępnianie plików", "This share is password-protected" : "Udział ten jest chroniony hasłem", "The password is wrong. Try again." : "To hasło jest niewłaściwe. Spróbuj ponownie.", "Password" : "Hasło", diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json index 8803b0375b4..d96a0ba132d 100644 --- a/apps/files_sharing/l10n/pl.json +++ b/apps/files_sharing/l10n/pl.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Nie można zwiększyć uprawnień", "%s is publicly shared" : "%s jest publicznie dostępny", "Share API is disabled" : "API udostępniania jest wyłączone", + "File sharing" : "Udostępnianie plików", "This share is password-protected" : "Udział ten jest chroniony hasłem", "The password is wrong. Try again." : "To hasło jest niewłaściwe. Spróbuj ponownie.", "Password" : "Hasło", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index c562b175b25..378439281ba 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -45,7 +45,7 @@ OC.L10N.register( "Public link of {actor} for {file} expired" : "O link público de {actor} para {file} expirou", "{user} accepted the remote share" : "{user} aceitou o compartilhamento remoto", "{user} declined the remote share" : "{user} declinou do compartilhamento remoto", - "You received a new remote share {file} from {user}" : "Voce recebeu um novo compartilhamento remoto {file} de {user}", + "You received a new remote share {file} from {user}" : "Você recebeu um novo compartilhamento remoto {file} de {user}", "{user} accepted the remote share of {file}" : "{user} aceitou o compartilhamento remoto de {file}", "{user} declined the remote share of {file}" : "{user} declinou do compartilhamento remoto de {file}", "{user} unshared {file} from you" : "{user} descompartilhou {file} de você", @@ -56,12 +56,12 @@ OC.L10N.register( "Shared by {actor}" : "Compartilhado por {actor}", "{actor} removed share" : "{actor} compartilhamento removido", "You shared {file} with {user}" : "Você compartilhou {arquivo} com {user}", - "You removed {user} from {file}" : "Voce excluiu {user} de {file}", + "You removed {user} from {file}" : "Você excluiu {user} de {file}", "{actor} shared {file} with {user}" : "{actor} compartilhou {file} com {user}", "{actor} removed {user} from {file}" : "{actor} excluiu {user} de {file}", "{actor} shared {file} with you" : "{actor} compartilhou {file} com você", "{actor} removed you from {file}" : "{actor} excluiu você de {file}", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por email ou por link publico foi <strong>baixado</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por e-mail ou por link publico foi <strong>baixado</strong>", "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", "Wrong share ID, share doesn't exist" : "ID de compartilhamento errado, o compartilhamento não existe", @@ -78,17 +78,18 @@ OC.L10N.register( "Public upload disabled by the administrator" : "O envio público foi desativado pelo administrador", "Public upload is only possible for publicly shared folders" : "O envio público só é possível para pastas compartilhadas publicamente", "Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser YYYY-MM-DD", - "Sharing %s failed because the back end does not allow shares from type %s" : "O compartilhando %s falhou porque o backend não permite ações de tipo %s", + "Sharing %s failed because the back end does not allow shares from type %s" : "O compartilhando %s falhou porque o serviço não permite ações de tipo %s", "You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um círculo se o aplicativo não está habilitado", "Please specify a valid circle" : "Por favor especifique um círculo válido", "Unknown share type" : "Tipo de compartilhamento desconhecido", "Not a directory" : "Não é um diretório", "Could not lock path" : "Não foi possível bloquear o caminho", "Wrong or no update parameter given" : "O parâmetro da atualização fornecido está errado ou não existe", - "Can't change permissions for public share links" : "Não é possível alterar as permissões para links de compartilhamento público", - "Cannot increase permissions" : "Não é possível aumentar as permissões", + "Can't change permissions for public share links" : "Não foi possível alterar as permissões para links de compartilhamento público", + "Cannot increase permissions" : "Não foi possível aumentar as permissões", "%s is publicly shared" : "%s está compartilhado publicamente", "Share API is disabled" : "O compartilhamento de API está desabilitado.", + "File sharing" : "Compartilhamento de arquivo", "This share is password-protected" : "Este compartilhamento é protegido por senha", "The password is wrong. Try again." : "Senha incorreta. Tente novamente.", "Password" : "Senha", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index 3d3d0ab784b..656d601fa98 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -43,7 +43,7 @@ "Public link of {actor} for {file} expired" : "O link público de {actor} para {file} expirou", "{user} accepted the remote share" : "{user} aceitou o compartilhamento remoto", "{user} declined the remote share" : "{user} declinou do compartilhamento remoto", - "You received a new remote share {file} from {user}" : "Voce recebeu um novo compartilhamento remoto {file} de {user}", + "You received a new remote share {file} from {user}" : "Você recebeu um novo compartilhamento remoto {file} de {user}", "{user} accepted the remote share of {file}" : "{user} aceitou o compartilhamento remoto de {file}", "{user} declined the remote share of {file}" : "{user} declinou do compartilhamento remoto de {file}", "{user} unshared {file} from you" : "{user} descompartilhou {file} de você", @@ -54,12 +54,12 @@ "Shared by {actor}" : "Compartilhado por {actor}", "{actor} removed share" : "{actor} compartilhamento removido", "You shared {file} with {user}" : "Você compartilhou {arquivo} com {user}", - "You removed {user} from {file}" : "Voce excluiu {user} de {file}", + "You removed {user} from {file}" : "Você excluiu {user} de {file}", "{actor} shared {file} with {user}" : "{actor} compartilhou {file} com {user}", "{actor} removed {user} from {file}" : "{actor} excluiu {user} de {file}", "{actor} shared {file} with you" : "{actor} compartilhou {file} com você", "{actor} removed you from {file}" : "{actor} excluiu você de {file}", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por email ou por link publico foi <strong>baixado</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por e-mail ou por link publico foi <strong>baixado</strong>", "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", "Wrong share ID, share doesn't exist" : "ID de compartilhamento errado, o compartilhamento não existe", @@ -76,17 +76,18 @@ "Public upload disabled by the administrator" : "O envio público foi desativado pelo administrador", "Public upload is only possible for publicly shared folders" : "O envio público só é possível para pastas compartilhadas publicamente", "Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser YYYY-MM-DD", - "Sharing %s failed because the back end does not allow shares from type %s" : "O compartilhando %s falhou porque o backend não permite ações de tipo %s", + "Sharing %s failed because the back end does not allow shares from type %s" : "O compartilhando %s falhou porque o serviço não permite ações de tipo %s", "You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um círculo se o aplicativo não está habilitado", "Please specify a valid circle" : "Por favor especifique um círculo válido", "Unknown share type" : "Tipo de compartilhamento desconhecido", "Not a directory" : "Não é um diretório", "Could not lock path" : "Não foi possível bloquear o caminho", "Wrong or no update parameter given" : "O parâmetro da atualização fornecido está errado ou não existe", - "Can't change permissions for public share links" : "Não é possível alterar as permissões para links de compartilhamento público", - "Cannot increase permissions" : "Não é possível aumentar as permissões", + "Can't change permissions for public share links" : "Não foi possível alterar as permissões para links de compartilhamento público", + "Cannot increase permissions" : "Não foi possível aumentar as permissões", "%s is publicly shared" : "%s está compartilhado publicamente", "Share API is disabled" : "O compartilhamento de API está desabilitado.", + "File sharing" : "Compartilhamento de arquivo", "This share is password-protected" : "Este compartilhamento é protegido por senha", "The password is wrong. Try again." : "Senha incorreta. Tente novamente.", "Password" : "Senha", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index aeb623c0ee0..dcfa058e96a 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Нельзя увеличить права", "%s is publicly shared" : "%s опубликован ", "Share API is disabled" : "API общего доступа отключён", + "File sharing" : "Обмен файлами", "This share is password-protected" : "Общий ресурс защищен паролем", "The password is wrong. Try again." : "Неверный пароль. Попробуйте еще раз.", "Password" : "Пароль", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index daba8b0b633..480f8efc419 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Нельзя увеличить права", "%s is publicly shared" : "%s опубликован ", "Share API is disabled" : "API общего доступа отключён", + "File sharing" : "Обмен файлами", "This share is password-protected" : "Общий ресурс защищен паролем", "The password is wrong. Try again." : "Неверный пароль. Попробуйте еще раз.", "Password" : "Пароль", diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index a0f8fa73a53..5f8a126b7da 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "Erişim izinleri yükseltilemez", "%s is publicly shared" : "%s herkese açık olarak paylaşıldı", "Share API is disabled" : "Paylaşım API arayüzü devre dışı", + "File sharing" : "Dosya paylaşımı", "This share is password-protected" : "Bu paylaşım parola korumalı", "The password is wrong. Try again." : "Parola hatalı. Yeniden deneyin.", "Password" : "Parola", diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 4f1411b994f..198705ba445 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "Erişim izinleri yükseltilemez", "%s is publicly shared" : "%s herkese açık olarak paylaşıldı", "Share API is disabled" : "Paylaşım API arayüzü devre dışı", + "File sharing" : "Dosya paylaşımı", "This share is password-protected" : "Bu paylaşım parola korumalı", "The password is wrong. Try again." : "Parola hatalı. Yeniden deneyin.", "Password" : "Parola", diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index 34b25c1a9e3..d4655f8d798 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -89,6 +89,7 @@ OC.L10N.register( "Cannot increase permissions" : "不能增加权限", "%s is publicly shared" : "%s 是公开共享", "Share API is disabled" : "共享 API 已被禁用", + "File sharing" : "文件共享", "This share is password-protected" : "这是一个密码保护的共享", "The password is wrong. Try again." : "用户名或密码错误!请重试", "Password" : "密码", diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index 42622cc89a3..ebb971213da 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -87,6 +87,7 @@ "Cannot increase permissions" : "不能增加权限", "%s is publicly shared" : "%s 是公开共享", "Share API is disabled" : "共享 API 已被禁用", + "File sharing" : "文件共享", "This share is password-protected" : "这是一个密码保护的共享", "The password is wrong. Try again." : "用户名或密码错误!请重试", "Password" : "密码", diff --git a/apps/files_sharing/lib/Controller/PublicPreviewController.php b/apps/files_sharing/lib/Controller/PublicPreviewController.php index b91b84c9c34..49e48993f5c 100644 --- a/apps/files_sharing/lib/Controller/PublicPreviewController.php +++ b/apps/files_sharing/lib/Controller/PublicPreviewController.php @@ -97,6 +97,8 @@ class PublicPreviewController extends Controller { return new FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]); } catch (NotFoundException $e) { return new DataResponse([], Http::STATUS_NOT_FOUND); + } catch (\InvalidArgumentException $e) { + return new DataResponse([], Http::STATUS_BAD_REQUEST); } } } diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php index eb65727c770..7d345efb3eb 100644 --- a/apps/files_sharing/lib/Controller/ShareesAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php @@ -654,13 +654,15 @@ class ShareesAPIController extends OCSController { protected function getLookup($search) { $isEnabled = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no'); + $lookupServerUrl = $this->config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); + $lookupServerUrl = rtrim($lookupServerUrl, '/'); $result = []; if($isEnabled === 'yes') { try { $client = $this->clientService->newClient(); $response = $client->get( - 'https://lookup.nextcloud.com/users?search=' . urlencode($search), + $lookupServerUrl . '/users?search=' . urlencode($search), [ 'timeout' => 10, 'connect_timeout' => 3, diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php index d5ae303390f..b42682ab2a8 100644 --- a/apps/files_sharing/lib/SharedMount.php +++ b/apps/files_sharing/lib/SharedMount.php @@ -258,4 +258,8 @@ class SharedMount extends MountPoint implements MoveableMount { return -1; } } + + public function getMountType() { + return 'shared'; + } } diff --git a/apps/files_trashbin/l10n/ast.js b/apps/files_trashbin/l10n/ast.js index 01e643f0db0..02f073b7408 100644 --- a/apps/files_trashbin/l10n/ast.js +++ b/apps/files_trashbin/l10n/ast.js @@ -1,19 +1,21 @@ OC.L10N.register( "files_trashbin", { - "Couldn't delete %s permanently" : "Nun pudo desaniciase %s dafechu", + "Couldn't delete %s permanently" : "Nun pudo desaniciase dafechu %s", "Couldn't restore %s" : "Nun pudo restaurase %s", + "Deleted files" : "Ficheros desaniciaos", "Restore" : "Restaurar", "Delete" : "Desaniciar", "Delete permanently" : "Desaniciar dafechu", "Error" : "Fallu", - "This operation is forbidden" : "La operación ta prohibida", - "This directory is unavailable, please check the logs or contact the administrator" : "Esti direutoriu nun ta disponible, por favor verifica'l rexistru o contacta l'alministrador", - "No deleted files" : "Ensin ficheros desaniciaos", - "You will be able to recover deleted files from here" : "Dende equí podrás recureperar los ficheros desaniciaos", - "No entries found in this folder" : "Nenguna entrada en esta carpeta", + "This operation is forbidden" : "Esta operación ta prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Esti direutoriu nun ta disponible, por favor comprueba'l rexistru o contauta col alministrador", + "restored" : "restauróse", + "No deleted files" : "Nun hai ficheros desaniciaos", + "You will be able to recover deleted files from here" : "Dende equí sedrás a recureperar los ficheros desaniciaos", + "No entries found in this folder" : "Nun s'alcontraron entraes nesti carpeta", "Select all" : "Esbillar too", "Name" : "Nome", - "Deleted" : "Desaniciáu" + "Deleted" : "Desanicióse" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/ast.json b/apps/files_trashbin/l10n/ast.json index ea7423221ea..d778b1e2ccd 100644 --- a/apps/files_trashbin/l10n/ast.json +++ b/apps/files_trashbin/l10n/ast.json @@ -1,17 +1,19 @@ { "translations": { - "Couldn't delete %s permanently" : "Nun pudo desaniciase %s dafechu", + "Couldn't delete %s permanently" : "Nun pudo desaniciase dafechu %s", "Couldn't restore %s" : "Nun pudo restaurase %s", + "Deleted files" : "Ficheros desaniciaos", "Restore" : "Restaurar", "Delete" : "Desaniciar", "Delete permanently" : "Desaniciar dafechu", "Error" : "Fallu", - "This operation is forbidden" : "La operación ta prohibida", - "This directory is unavailable, please check the logs or contact the administrator" : "Esti direutoriu nun ta disponible, por favor verifica'l rexistru o contacta l'alministrador", - "No deleted files" : "Ensin ficheros desaniciaos", - "You will be able to recover deleted files from here" : "Dende equí podrás recureperar los ficheros desaniciaos", - "No entries found in this folder" : "Nenguna entrada en esta carpeta", + "This operation is forbidden" : "Esta operación ta prohibida", + "This directory is unavailable, please check the logs or contact the administrator" : "Esti direutoriu nun ta disponible, por favor comprueba'l rexistru o contauta col alministrador", + "restored" : "restauróse", + "No deleted files" : "Nun hai ficheros desaniciaos", + "You will be able to recover deleted files from here" : "Dende equí sedrás a recureperar los ficheros desaniciaos", + "No entries found in this folder" : "Nun s'alcontraron entraes nesti carpeta", "Select all" : "Esbillar too", "Name" : "Nome", - "Deleted" : "Desaniciáu" + "Deleted" : "Desanicióse" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/lib/Controller/PreviewController.php b/apps/files_trashbin/lib/Controller/PreviewController.php index c73b1c17c16..ae3a106d627 100644 --- a/apps/files_trashbin/lib/Controller/PreviewController.php +++ b/apps/files_trashbin/lib/Controller/PreviewController.php @@ -114,6 +114,8 @@ class PreviewController extends Controller { return new Http\FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]); } catch (NotFoundException $e) { return new DataResponse([], Http::STATUS_NOT_FOUND); + } catch (\InvalidArgumentException $e) { + return new DataResponse([], Http::STATUS_BAD_REQUEST); } } } diff --git a/apps/files_versions/l10n/ast.js b/apps/files_versions/l10n/ast.js index 56ce76fe4f3..f6f56bc2100 100644 --- a/apps/files_versions/l10n/ast.js +++ b/apps/files_versions/l10n/ast.js @@ -4,8 +4,11 @@ OC.L10N.register( "Could not revert: %s" : "Nun pudo revertise: %s", "Versions" : "Versiones", "Failed to revert {file} to revision {timestamp}." : "Fallu al revertir {file} a la revisión {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Restaurar", - "More versions..." : "Más versiones...", - "No other versions available" : "Nun hai otres versiones disponibles" + "No earlier versions available" : "Nun hai versiones más tempranes disponibles", + "More versions …" : "Más versiones...", + "No versions available" : "Nun hai versiones disponibles", + "More versions..." : "Más versiones..." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/ast.json b/apps/files_versions/l10n/ast.json index 549c043df69..0c61764c382 100644 --- a/apps/files_versions/l10n/ast.json +++ b/apps/files_versions/l10n/ast.json @@ -2,8 +2,11 @@ "Could not revert: %s" : "Nun pudo revertise: %s", "Versions" : "Versiones", "Failed to revert {file} to revision {timestamp}." : "Fallu al revertir {file} a la revisión {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Restaurar", - "More versions..." : "Más versiones...", - "No other versions available" : "Nun hai otres versiones disponibles" + "No earlier versions available" : "Nun hai versiones más tempranes disponibles", + "More versions …" : "Más versiones...", + "No versions available" : "Nun hai versiones disponibles", + "More versions..." : "Más versiones..." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/cs.js b/apps/files_versions/l10n/cs.js index 72695abde6c..c9daaf91989 100644 --- a/apps/files_versions/l10n/cs.js +++ b/apps/files_versions/l10n/cs.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Selhalo vrácení souboru {file} na verzi {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"], "Restore" : "Obnovit", + "No earlier versions available" : "Nejsou dostupné dřívější verze", + "More versions …" : "Víc verzí …", "No versions available" : "Nejsou dostupné žádné verze", "More versions..." : "Více verzí..." }, diff --git a/apps/files_versions/l10n/cs.json b/apps/files_versions/l10n/cs.json index f8309856688..0486090f2ab 100644 --- a/apps/files_versions/l10n/cs.json +++ b/apps/files_versions/l10n/cs.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Selhalo vrácení souboru {file} na verzi {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů"], "Restore" : "Obnovit", + "No earlier versions available" : "Nejsou dostupné dřívější verze", + "More versions …" : "Víc verzí …", "No versions available" : "Nejsou dostupné žádné verze", "More versions..." : "Více verzí..." },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" diff --git a/apps/files_versions/l10n/da.js b/apps/files_versions/l10n/da.js index ee85e6266ea..4fce738597f 100644 --- a/apps/files_versions/l10n/da.js +++ b/apps/files_versions/l10n/da.js @@ -4,6 +4,7 @@ OC.L10N.register( "Could not revert: %s" : "Kunne ikke genskabe: %s", "Versions" : "Versioner", "Failed to revert {file} to revision {timestamp}." : "Kunne ikke tilbagerulle {file} til den tidligere udgave: {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Gendan", "No earlier versions available" : "Ingen tidligere versioner tilgængelige", "More versions …" : "Flere versioner ...", diff --git a/apps/files_versions/l10n/da.json b/apps/files_versions/l10n/da.json index 3fdfedaa38f..08aef15ad7f 100644 --- a/apps/files_versions/l10n/da.json +++ b/apps/files_versions/l10n/da.json @@ -2,6 +2,7 @@ "Could not revert: %s" : "Kunne ikke genskabe: %s", "Versions" : "Versioner", "Failed to revert {file} to revision {timestamp}." : "Kunne ikke tilbagerulle {file} til den tidligere udgave: {timestamp}.", + "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Gendan", "No earlier versions available" : "Ingen tidligere versioner tilgængelige", "More versions …" : "Flere versioner ...", diff --git a/apps/files_versions/l10n/ko.js b/apps/files_versions/l10n/ko.js index 49472d556cb..81b258b1060 100644 --- a/apps/files_versions/l10n/ko.js +++ b/apps/files_versions/l10n/ko.js @@ -1,11 +1,14 @@ OC.L10N.register( "files_versions", { - "Could not revert: %s" : "되돌릴 수 없음: %s", + "Could not revert: %s" : "되돌릴 수 없습니다: %s", "Versions" : "버전", "Failed to revert {file} to revision {timestamp}." : "{file}을(를) 리비전 {timestamp}으(로) 되돌리는 데 실패했습니다.", + "_%n byte_::_%n bytes_" : ["%n 바이트"], "Restore" : "복원", - "More versions..." : "더 많은 버전...", - "No other versions available" : "다른 버전을 사용할 수 없습니다" + "No earlier versions available" : "이전 버전을 사용할 수 없음", + "More versions …" : "더 많은 버전 …", + "No versions available" : "버전을 사용할 수 없음", + "More versions..." : "더 많은 버전..." }, "nplurals=1; plural=0;"); diff --git a/apps/files_versions/l10n/ko.json b/apps/files_versions/l10n/ko.json index 8c9985ad437..0b6a54a1e9c 100644 --- a/apps/files_versions/l10n/ko.json +++ b/apps/files_versions/l10n/ko.json @@ -1,9 +1,12 @@ { "translations": { - "Could not revert: %s" : "되돌릴 수 없음: %s", + "Could not revert: %s" : "되돌릴 수 없습니다: %s", "Versions" : "버전", "Failed to revert {file} to revision {timestamp}." : "{file}을(를) 리비전 {timestamp}으(로) 되돌리는 데 실패했습니다.", + "_%n byte_::_%n bytes_" : ["%n 바이트"], "Restore" : "복원", - "More versions..." : "더 많은 버전...", - "No other versions available" : "다른 버전을 사용할 수 없습니다" + "No earlier versions available" : "이전 버전을 사용할 수 없음", + "More versions …" : "더 많은 버전 …", + "No versions available" : "버전을 사용할 수 없음", + "More versions..." : "더 많은 버전..." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/sq.js b/apps/files_versions/l10n/sq.js index 8d211519404..e7cb0d518b4 100644 --- a/apps/files_versions/l10n/sq.js +++ b/apps/files_versions/l10n/sq.js @@ -6,6 +6,7 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Dështoi në rikthimin e {file} te rishikimi {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bajte","%n bajte"], "Restore" : "Riktheje", + "No earlier versions available" : "Nuk ka versione të tjera të gatshme", "No versions available" : "Ska versione të gatshme", "More versions..." : "Më shumë versione…" }, diff --git a/apps/files_versions/l10n/sq.json b/apps/files_versions/l10n/sq.json index e6b2aa5bb68..3fb127f2ea7 100644 --- a/apps/files_versions/l10n/sq.json +++ b/apps/files_versions/l10n/sq.json @@ -4,6 +4,7 @@ "Failed to revert {file} to revision {timestamp}." : "Dështoi në rikthimin e {file} te rishikimi {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bajte","%n bajte"], "Restore" : "Riktheje", + "No earlier versions available" : "Nuk ka versione të tjera të gatshme", "No versions available" : "Ska versione të gatshme", "More versions..." : "Më shumë versione…" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_versions/l10n/sv.js b/apps/files_versions/l10n/sv.js index 79a92d0db80..43187f92ef6 100644 --- a/apps/files_versions/l10n/sv.js +++ b/apps/files_versions/l10n/sv.js @@ -6,6 +6,8 @@ OC.L10N.register( "Failed to revert {file} to revision {timestamp}." : "Kunde inte återställa {file} till {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Återskapa", + "No earlier versions available" : "Inga tidigare versioner tillgänliga", + "More versions …" : "Fler versioner ...", "No versions available" : "Inga versioner tillgängliga", "More versions..." : "Fler versioner..." }, diff --git a/apps/files_versions/l10n/sv.json b/apps/files_versions/l10n/sv.json index ccb48ee72ac..df117926310 100644 --- a/apps/files_versions/l10n/sv.json +++ b/apps/files_versions/l10n/sv.json @@ -4,6 +4,8 @@ "Failed to revert {file} to revision {timestamp}." : "Kunde inte återställa {file} till {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"], "Restore" : "Återskapa", + "No earlier versions available" : "Inga tidigare versioner tillgänliga", + "More versions …" : "Fler versioner ...", "No versions available" : "Inga versioner tillgängliga", "More versions..." : "Fler versioner..." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_versions/lib/Controller/PreviewController.php b/apps/files_versions/lib/Controller/PreviewController.php index 8d961f47ee6..7a7c024fb52 100644 --- a/apps/files_versions/lib/Controller/PreviewController.php +++ b/apps/files_versions/lib/Controller/PreviewController.php @@ -94,6 +94,8 @@ class PreviewController extends Controller { return new FileDisplayResponse($f, Http::STATUS_OK, ['Content-Type' => $f->getMimeType()]); } catch (NotFoundException $e) { return new DataResponse([], Http::STATUS_NOT_FOUND); + } catch (\InvalidArgumentException $e) { + return new DataResponse([], Http::STATUS_BAD_REQUEST); } } } diff --git a/apps/files_versions/tests/VersioningTest.php b/apps/files_versions/tests/VersioningTest.php index a1649b2b600..4cd202113dd 100644 --- a/apps/files_versions/tests/VersioningTest.php +++ b/apps/files_versions/tests/VersioningTest.php @@ -289,11 +289,11 @@ class VersioningTest extends \Test\TestCase { $this->runCommands(); - $this->assertFalse($this->rootView->file_exists($v1)); - $this->assertFalse($this->rootView->file_exists($v2)); + $this->assertFalse($this->rootView->file_exists($v1), 'version 1 of old file does not exist'); + $this->assertFalse($this->rootView->file_exists($v2), 'version 2 of old file does not exist'); - $this->assertTrue($this->rootView->file_exists($v1Renamed)); - $this->assertTrue($this->rootView->file_exists($v2Renamed)); + $this->assertTrue($this->rootView->file_exists($v1Renamed), 'version 1 of renamed file exists'); + $this->assertTrue($this->rootView->file_exists($v2Renamed), 'version 2 of renamed file exists'); } public function testRenameInSharedFolder() { @@ -337,11 +337,11 @@ class VersioningTest extends \Test\TestCase { self::loginHelper(self::TEST_VERSIONS_USER); - $this->assertFalse($this->rootView->file_exists($v1)); - $this->assertFalse($this->rootView->file_exists($v2)); + $this->assertFalse($this->rootView->file_exists($v1), 'version 1 of old file does not exist'); + $this->assertFalse($this->rootView->file_exists($v2), 'version 2 of old file does not exist'); - $this->assertTrue($this->rootView->file_exists($v1Renamed)); - $this->assertTrue($this->rootView->file_exists($v2Renamed)); + $this->assertTrue($this->rootView->file_exists($v1Renamed), 'version 1 of renamed file exists'); + $this->assertTrue($this->rootView->file_exists($v2Renamed), 'version 2 of renamed file exists'); \OC::$server->getShareManager()->deleteShare($share); } @@ -553,11 +553,11 @@ class VersioningTest extends \Test\TestCase { $this->runCommands(); - $this->assertTrue($this->rootView->file_exists($v1)); - $this->assertTrue($this->rootView->file_exists($v2)); + $this->assertTrue($this->rootView->file_exists($v1), 'version 1 of original file exists'); + $this->assertTrue($this->rootView->file_exists($v2), 'version 2 of original file exists'); - $this->assertTrue($this->rootView->file_exists($v1Copied)); - $this->assertTrue($this->rootView->file_exists($v2Copied)); + $this->assertTrue($this->rootView->file_exists($v1Copied), 'version 1 of copied file exists'); + $this->assertTrue($this->rootView->file_exists($v2Copied), 'version 2 of copied file exists'); } /** diff --git a/apps/lookup_server_connector/appinfo/app.php b/apps/lookup_server_connector/appinfo/app.php index 639eeafcf3f..28e7bea192a 100644 --- a/apps/lookup_server_connector/appinfo/app.php +++ b/apps/lookup_server_connector/appinfo/app.php @@ -22,24 +22,10 @@ $dispatcher = \OC::$server->getEventDispatcher(); $dispatcher->addListener('OC\AccountManager::userUpdated', function(\Symfony\Component\EventDispatcher\GenericEvent $event) { + /** @var \OCP\IUser $user */ $user = $event->getSubject(); - $keyManager = new \OC\Security\IdentityProof\Manager( - \OC::$server->getAppDataDir('identityproof'), - \OC::$server->getCrypto() - ); - $updateLookupServer = new \OCA\LookupServerConnector\UpdateLookupServer( - new \OC\Accounts\AccountManager(\OC::$server->getDatabaseConnection(), \OC::$server->getEventDispatcher()), - \OC::$server->getConfig(), - \OC::$server->getSecureRandom(), - \OC::$server->getHTTPClientService(), - $keyManager, - new \OC\Security\IdentityProof\Signer( - $keyManager, - new \OC\AppFramework\Utility\TimeFactory(), - \OC::$server->getUserManager() - ), - \OC::$server->getJobList() - ); + /** @var \OCA\LookupServerConnector\UpdateLookupServer $updateLookupServer */ + $updateLookupServer = \OC::$server->query(\OCA\LookupServerConnector\UpdateLookupServer::class); $updateLookupServer->userUpdated($user); }); diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php index f33323b2d4f..3bc955f2fc1 100644 --- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php +++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php @@ -19,13 +19,15 @@ * */ - namespace OCA\LookupServerConnector\BackgroundJobs; use OC\BackgroundJob\Job; +use OC\BackgroundJob\JobList; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; +use OCP\IConfig; +use OCP\ILogger; class RetryJob extends Job { /** @var IClientService */ @@ -33,23 +35,36 @@ class RetryJob extends Job { /** @var IJobList */ private $jobList; /** @var string */ - private $lookupServer = 'https://lookup.nextcloud.com/users'; + private $lookupServer; + /** @var int how much time should be between two tries (10 minutes) */ + private $interval = 600; /** - * @param IClientService|null $clientService - * @param IJobList|null $jobList + * @param IClientService $clientService + * @param IJobList $jobList + * @param IConfig $config */ - public function __construct(IClientService $clientService = null, - IJobList $jobList = null) { - if($clientService !== null) { - $this->clientService = $clientService; - } else { - $this->clientService = \OC::$server->getHTTPClientService(); - } - if($jobList !== null) { - $this->jobList = $jobList; - } else { - $this->jobList = \OC::$server->getJobList(); + public function __construct(IClientService $clientService, + IJobList $jobList, + IConfig $config) { + $this->clientService = $clientService; + $this->jobList = $jobList; + + $this->lookupServer = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); + $this->lookupServer = rtrim($this->lookupServer, '/'); + $this->lookupServer .= '/users'; + } + + /** + * run the job, then remove it from the jobList + * + * @param JobList $jobList + * @param ILogger $logger + */ + public function execute($jobList, ILogger $logger = null) { + if ($this->shouldRun($this->argument)) { + parent::execute($jobList, $logger); + $jobList->remove($this, $this->argument); } } @@ -73,9 +88,20 @@ class RetryJob extends Job { [ 'dataArray' => $argument['dataArray'], 'retryNo' => $argument['retryNo'] + 1, + 'lastRun' => time(), ] ); } } + + /** + * test if it is time for the next run + * + * @param array $argument + * @return bool + */ + protected function shouldRun($argument) { + return !isset($argument['lastRun']) || ((time() - $argument['lastRun']) > $this->interval); + } } diff --git a/apps/lookup_server_connector/lib/UpdateLookupServer.php b/apps/lookup_server_connector/lib/UpdateLookupServer.php index 86865311725..ae8fcbd67ca 100644 --- a/apps/lookup_server_connector/lib/UpdateLookupServer.php +++ b/apps/lookup_server_connector/lib/UpdateLookupServer.php @@ -23,14 +23,12 @@ namespace OCA\LookupServerConnector; use OC\Accounts\AccountManager; -use OC\Security\IdentityProof\Manager; use OC\Security\IdentityProof\Signer; use OCA\LookupServerConnector\BackgroundJobs\RetryJob; use OCP\BackgroundJob\IJobList; use OCP\Http\Client\IClientService; use OCP\IConfig; use OCP\IUser; -use OCP\Security\ISecureRandom; /** * Class UpdateLookupServer @@ -40,44 +38,35 @@ use OCP\Security\ISecureRandom; class UpdateLookupServer { /** @var AccountManager */ private $accountManager; - /** @var IConfig */ - private $config; - /** @var ISecureRandom */ - private $secureRandom; /** @var IClientService */ private $clientService; - /** @var Manager */ - private $keyManager; /** @var Signer */ private $signer; /** @var IJobList */ private $jobList; /** @var string URL point to lookup server */ - private $lookupServer = 'https://lookup.nextcloud.com/users'; + private $lookupServer; /** * @param AccountManager $accountManager - * @param IConfig $config - * @param ISecureRandom $secureRandom * @param IClientService $clientService - * @param Manager $manager * @param Signer $signer * @param IJobList $jobList + * @param IConfig $config */ public function __construct(AccountManager $accountManager, - IConfig $config, - ISecureRandom $secureRandom, IClientService $clientService, - Manager $manager, Signer $signer, - IJobList $jobList) { + IJobList $jobList, + IConfig $config) { $this->accountManager = $accountManager; - $this->config = $config; - $this->secureRandom = $secureRandom; $this->clientService = $clientService; - $this->keyManager = $manager; $this->signer = $signer; $this->jobList = $jobList; + + $this->lookupServer = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); + $this->lookupServer = rtrim($this->lookupServer, '/'); + $this->lookupServer .= '/users'; } /** @@ -113,6 +102,13 @@ class UpdateLookupServer { $dataArray['website'] = isset($publicData[AccountManager::PROPERTY_WEBSITE]) ? $publicData[AccountManager::PROPERTY_WEBSITE]['value'] : ''; $dataArray['twitter'] = isset($publicData[AccountManager::PROPERTY_TWITTER]) ? $publicData[AccountManager::PROPERTY_TWITTER]['value'] : ''; $dataArray['phone'] = isset($publicData[AccountManager::PROPERTY_PHONE]) ? $publicData[AccountManager::PROPERTY_PHONE]['value'] : ''; + $dataArray['twitter_signature'] = isset($publicData[AccountManager::PROPERTY_TWITTER]['signature']) ? $publicData[AccountManager::PROPERTY_TWITTER]['signature'] : ''; + $dataArray['website_signature'] = isset($publicData[AccountManager::PROPERTY_WEBSITE]['signature']) ? $publicData[AccountManager::PROPERTY_WEBSITE]['signature'] : ''; + $dataArray['verificationStatus'] = + [ + AccountManager::PROPERTY_WEBSITE => isset($publicData[AccountManager::PROPERTY_WEBSITE]) ? $publicData[AccountManager::PROPERTY_WEBSITE]['verified'] : '', + AccountManager::PROPERTY_TWITTER => isset($publicData[AccountManager::PROPERTY_TWITTER]) ? $publicData[AccountManager::PROPERTY_TWITTER]['verified'] : '', + ]; } $dataArray = $this->signer->sign('lookupserver', $dataArray, $user); diff --git a/apps/sharebymail/l10n/ast.js b/apps/sharebymail/l10n/ast.js new file mode 100644 index 00000000000..1a740c1726b --- /dev/null +++ b/apps/sharebymail/l10n/ast.js @@ -0,0 +1,38 @@ +OC.L10N.register( + "sharebymail", + { + "Shared with %1$s" : "Compartióse con %1$s", + "Shared with {email}" : "Compartióse con {email}", + "Shared with %1$s by %2$s" : "Compartióse con %1$s por %2$s", + "Shared with {email} by {actor}" : "Compartióse con {email} por {actor}", + "Password for mail share sent to %1$s" : "Unvióse a %1$s la contraseña pa la compartición per corréu", + "Password for mail share sent to {email}" : "Unvióse a {email} la contraseña pa la compartición per corréu", + "Password for mail share sent to you" : "Unviósete la contraseña pa la compartición per corréu", + "You shared %1$s with %2$s by mail" : "Compartiesti %1$s con %2$s per corréu", + "You shared {file} with {email} by mail" : "Compartiesti {file} con {email} per corréu", + "%3$s shared %1$s with %2$s by mail" : "%3$s compartió %1$s con %2$s per corréu", + "{actor} shared {file} with {email} by mail" : "{actor} compartió {file} con {email} per corréu", + "Password to access %1$s was sent to %2s" : "Unvióse a %2s la contraseña p'acceder a %1$s", + "Password to access {file} was sent to {email}" : "Unvióse a {email} la contraseña p'acceder a {ficheru}", + "Password to access %1$s was sent to you" : "Unviósete la contraseña p'acceder a %1$s", + "Password to access {file} was sent to you" : "Unviósete la contraseña p'acceder a {file}", + "Sharing %s failed, this item is already shared with %s" : "Falló la compartición de %s, esti elementu yá se compartió con %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nun podemos unviate la contraseña auto-xenerada. Afita una direición de corréu válida nos tos axustes personales y volvi tentalo.", + "Failed to send share by E-mail" : "Fallu al unviar la compartición per corréu", + "%s shared »%s« with you" : "%s compartió «%s» contigo", + "%s shared »%s« with you." : "%s compartió «%s» contigo.", + "Click the button below to open it." : "Primi'l botón d'embaxo p'abrilu.", + "Open »%s«" : "Abrir «%s»", + "%s via %s" : "%s per %s", + "Password to access »%s«" : "Contraseña p'acceder a »%s«", + "It is protected with the following password: %s" : "Protexóse cola contraseña de darréu: %s", + "This is the password: %s" : "Esta ye la contraseña: %s", + "You can choose a different password at any time in the share dialog." : "Pues escoyer una contraseña diferente en cualesquier momentu nel diálogu de compartir.", + "Could not find share" : "Nun pudo alcontrase la compartición", + "Share by mail" : "Unviar per corréu", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite a los usuarios compartir un enllaz personalizáu a un ficheru o carpeta poniendo una direición de corréu.", + "Failed to create the E-mail" : "Fallu al crear el corréu", + "Cheers!" : "¡Salú!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Hola bones,<br><br>%s compartió <a href=\"%s\">%s</a> contigo.<br><br>" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/ast.json b/apps/sharebymail/l10n/ast.json new file mode 100644 index 00000000000..a9c9350c234 --- /dev/null +++ b/apps/sharebymail/l10n/ast.json @@ -0,0 +1,36 @@ +{ "translations": { + "Shared with %1$s" : "Compartióse con %1$s", + "Shared with {email}" : "Compartióse con {email}", + "Shared with %1$s by %2$s" : "Compartióse con %1$s por %2$s", + "Shared with {email} by {actor}" : "Compartióse con {email} por {actor}", + "Password for mail share sent to %1$s" : "Unvióse a %1$s la contraseña pa la compartición per corréu", + "Password for mail share sent to {email}" : "Unvióse a {email} la contraseña pa la compartición per corréu", + "Password for mail share sent to you" : "Unviósete la contraseña pa la compartición per corréu", + "You shared %1$s with %2$s by mail" : "Compartiesti %1$s con %2$s per corréu", + "You shared {file} with {email} by mail" : "Compartiesti {file} con {email} per corréu", + "%3$s shared %1$s with %2$s by mail" : "%3$s compartió %1$s con %2$s per corréu", + "{actor} shared {file} with {email} by mail" : "{actor} compartió {file} con {email} per corréu", + "Password to access %1$s was sent to %2s" : "Unvióse a %2s la contraseña p'acceder a %1$s", + "Password to access {file} was sent to {email}" : "Unvióse a {email} la contraseña p'acceder a {ficheru}", + "Password to access %1$s was sent to you" : "Unviósete la contraseña p'acceder a %1$s", + "Password to access {file} was sent to you" : "Unviósete la contraseña p'acceder a {file}", + "Sharing %s failed, this item is already shared with %s" : "Falló la compartición de %s, esti elementu yá se compartió con %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nun podemos unviate la contraseña auto-xenerada. Afita una direición de corréu válida nos tos axustes personales y volvi tentalo.", + "Failed to send share by E-mail" : "Fallu al unviar la compartición per corréu", + "%s shared »%s« with you" : "%s compartió «%s» contigo", + "%s shared »%s« with you." : "%s compartió «%s» contigo.", + "Click the button below to open it." : "Primi'l botón d'embaxo p'abrilu.", + "Open »%s«" : "Abrir «%s»", + "%s via %s" : "%s per %s", + "Password to access »%s«" : "Contraseña p'acceder a »%s«", + "It is protected with the following password: %s" : "Protexóse cola contraseña de darréu: %s", + "This is the password: %s" : "Esta ye la contraseña: %s", + "You can choose a different password at any time in the share dialog." : "Pues escoyer una contraseña diferente en cualesquier momentu nel diálogu de compartir.", + "Could not find share" : "Nun pudo alcontrase la compartición", + "Share by mail" : "Unviar per corréu", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite a los usuarios compartir un enllaz personalizáu a un ficheru o carpeta poniendo una direición de corréu.", + "Failed to create the E-mail" : "Fallu al crear el corréu", + "Cheers!" : "¡Salú!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Hola bones,<br><br>%s compartió <a href=\"%s\">%s</a> contigo.<br><br>" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/sharebymail/l10n/cs.js b/apps/sharebymail/l10n/cs.js index c24f35e3384..860b5157705 100644 --- a/apps/sharebymail/l10n/cs.js +++ b/apps/sharebymail/l10n/cs.js @@ -5,16 +5,41 @@ OC.L10N.register( "Shared with {email}" : "Sdíleno s {email}", "Shared with %1$s by %2$s" : "%2$s sdílí s %1$s", "Shared with {email} by {actor}" : "{actor} sdílí s {email}", + "Password for mail share sent to %1$s" : "Heslo e-mailového sdílení odesláno na %1$s", + "Password for mail share sent to {email}" : "Heslo e-mailového sdílení odesláno na {email}", + "Password for mail share sent to you" : "Heslo e-mailového sdílení vám bylo zasláno", "You shared %1$s with %2$s by mail" : "Sdílel(a) jste %1$s e-mailem s %2$s", "You shared {file} with {email} by mail" : "E-mailem jste s {email} sdíleli {file}", "%3$s shared %1$s with %2$s by mail" : "%3$s s %2$s sdílel e-mailem %1$s", "{actor} shared {file} with {email} by mail" : "{actor} sdílel(a) {file} e-mailem s {email}", + "Password to access %1$s was sent to %2s" : "Heslo pro přístupu k %1$s bylo zasláno na %2s", + "Password to access {file} was sent to {email}" : "Heslo pro přístup k {file} bylo zasláno na {email}", + "Password to access %1$s was sent to you" : "Heslo pro přístup k %1$s vám bylo zasláno", + "Password to access {file} was sent to you" : "Heslo pro přístupu k {file} vám bylo zasláno", "Sharing %s failed, this item is already shared with %s" : "Sdílení %s selhalo, tato položka je již s %s sdílena", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nemůžeme vám zaslat automaticky vygenerované heslo. Nastavte si v osobním nastavení platnou e-mailovou adresu a zkuste to znovu.", "Failed to send share by E-mail" : "Odeslání sdílení E-mailem se nezdařilo", "%s shared »%s« with you" : "%s s vámi sdílel(a) »%s»", + "%s shared »%s« with you." : "%s s vámi nasdílel(a) »%s«.", + "Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.", + "Open »%s«" : "Otevřít »%s«", + "%s via %s" : "%s přes %s", + "Password to access »%s« shared to you by %s" : "Heslo pro přístup k »%s« (vám nasdílel(a) %s)", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s s vámi sdílel(a) %s.", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s s vámi sdílel(a) »%s«. Již jste měli dostat e-mail s přístupovými údaji.", + "Password to access »%s«" : "Heslo pro přístup k »%s«", + "It is protected with the following password: %s" : "Je chráněn následujícím heslem: %s", + "Password to access »%s« shared with %s" : "Heslo pro přístup k »%s« sdíleno s %s", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Právě jste s »%s» nasdílel(a) %s. Sdílení bylo již příjemci zasláno. Kvůli bezpečnostní politice nastavené administrátorem %s musí být každé sdílení chráněno heslem a toto heslo nemůže být příjemci zasláno přímo. Kvůli tomu ho budete muset manuálně přeposlat.", + "This is the password: %s" : "Toto je heslo: %s", + "You can choose a different password at any time in the share dialog." : "V dialogu sdílení můžete kdykoliv vybrat jiné heslo.", + "Could not find share" : "Nelze nalézt sdílení", + "Share by mail" : "Sdílet e-mailem", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Dovoluje uživatelům odeslat personalizovaný odkaz na soubor nebo složku po zadání e-mailové adresy.", + "Send password by mail" : "Odeslat heslo e-mailem", + "Enforce password protection" : "Vynutit ochranu hesla", "%s shared »%s« with you on behalf of %s" : "%s s vámi sdílel »%s» místo %s", "Failed to create the E-mail" : "Vytváření E-mailu se nezdařilo", - "Could not find share" : "Nelze nalézt sdílení", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Ahoj,\n\n%s s vámi sdílel(a) »%s» na místo %s\n\n%s", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Ahoj,\n\n\n%s s vámi sdílel »%s».\n\n%s", "Cheers!" : "Mějte se!", diff --git a/apps/sharebymail/l10n/cs.json b/apps/sharebymail/l10n/cs.json index 07a016c80d3..f9491f6e2b6 100644 --- a/apps/sharebymail/l10n/cs.json +++ b/apps/sharebymail/l10n/cs.json @@ -3,16 +3,41 @@ "Shared with {email}" : "Sdíleno s {email}", "Shared with %1$s by %2$s" : "%2$s sdílí s %1$s", "Shared with {email} by {actor}" : "{actor} sdílí s {email}", + "Password for mail share sent to %1$s" : "Heslo e-mailového sdílení odesláno na %1$s", + "Password for mail share sent to {email}" : "Heslo e-mailového sdílení odesláno na {email}", + "Password for mail share sent to you" : "Heslo e-mailového sdílení vám bylo zasláno", "You shared %1$s with %2$s by mail" : "Sdílel(a) jste %1$s e-mailem s %2$s", "You shared {file} with {email} by mail" : "E-mailem jste s {email} sdíleli {file}", "%3$s shared %1$s with %2$s by mail" : "%3$s s %2$s sdílel e-mailem %1$s", "{actor} shared {file} with {email} by mail" : "{actor} sdílel(a) {file} e-mailem s {email}", + "Password to access %1$s was sent to %2s" : "Heslo pro přístupu k %1$s bylo zasláno na %2s", + "Password to access {file} was sent to {email}" : "Heslo pro přístup k {file} bylo zasláno na {email}", + "Password to access %1$s was sent to you" : "Heslo pro přístup k %1$s vám bylo zasláno", + "Password to access {file} was sent to you" : "Heslo pro přístupu k {file} vám bylo zasláno", "Sharing %s failed, this item is already shared with %s" : "Sdílení %s selhalo, tato položka je již s %s sdílena", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nemůžeme vám zaslat automaticky vygenerované heslo. Nastavte si v osobním nastavení platnou e-mailovou adresu a zkuste to znovu.", "Failed to send share by E-mail" : "Odeslání sdílení E-mailem se nezdařilo", "%s shared »%s« with you" : "%s s vámi sdílel(a) »%s»", + "%s shared »%s« with you." : "%s s vámi nasdílel(a) »%s«.", + "Click the button below to open it." : "Pro otevření kliknětena tlačítko níže.", + "Open »%s«" : "Otevřít »%s«", + "%s via %s" : "%s přes %s", + "Password to access »%s« shared to you by %s" : "Heslo pro přístup k »%s« (vám nasdílel(a) %s)", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s s vámi sdílel(a) %s.", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s s vámi sdílel(a) »%s«. Již jste měli dostat e-mail s přístupovými údaji.", + "Password to access »%s«" : "Heslo pro přístup k »%s«", + "It is protected with the following password: %s" : "Je chráněn následujícím heslem: %s", + "Password to access »%s« shared with %s" : "Heslo pro přístup k »%s« sdíleno s %s", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Právě jste s »%s» nasdílel(a) %s. Sdílení bylo již příjemci zasláno. Kvůli bezpečnostní politice nastavené administrátorem %s musí být každé sdílení chráněno heslem a toto heslo nemůže být příjemci zasláno přímo. Kvůli tomu ho budete muset manuálně přeposlat.", + "This is the password: %s" : "Toto je heslo: %s", + "You can choose a different password at any time in the share dialog." : "V dialogu sdílení můžete kdykoliv vybrat jiné heslo.", + "Could not find share" : "Nelze nalézt sdílení", + "Share by mail" : "Sdílet e-mailem", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Dovoluje uživatelům odeslat personalizovaný odkaz na soubor nebo složku po zadání e-mailové adresy.", + "Send password by mail" : "Odeslat heslo e-mailem", + "Enforce password protection" : "Vynutit ochranu hesla", "%s shared »%s« with you on behalf of %s" : "%s s vámi sdílel »%s» místo %s", "Failed to create the E-mail" : "Vytváření E-mailu se nezdařilo", - "Could not find share" : "Nelze nalézt sdílení", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Ahoj,\n\n%s s vámi sdílel(a) »%s» na místo %s\n\n%s", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Ahoj,\n\n\n%s s vámi sdílel »%s».\n\n%s", "Cheers!" : "Mějte se!", diff --git a/apps/sharebymail/l10n/de.js b/apps/sharebymail/l10n/de.js index ee50fbe21dc..5cbe65f01f1 100644 --- a/apps/sharebymail/l10n/de.js +++ b/apps/sharebymail/l10n/de.js @@ -12,13 +12,15 @@ OC.L10N.register( "You shared {file} with {email} by mail" : "Sie teilen {file} mit {email} über E-Mail", "%3$s shared %1$s with %2$s by mail" : "%3$s teilt %1$s mit %2$s über E-mail", "{actor} shared {file} with {email} by mail" : "{actor} teilt {file} mit {email} über E-Mail", + "Password to access %1$s was sent to %2s" : "Passwort für den Zugriff auf %1$s wurde an %2s versandt ", + "Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ", + "Password to access %1$s was sent to you" : " Passwort für den Zugriff auf %1$s wurde an Dich versandt ", + "Password to access {file} was sent to you" : " Passwort für den Zugriff auf {file} wurde an Dich versandt ", "Sharing %s failed, this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erstelltes Passwort kann nicht versandt werden. Bitte gebe in Deinen persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche es erneut.", "Failed to send share by E-mail" : "Senden der Freigabe über Mail ist fehlgeschlagen", "%s shared »%s« with you" : "%s hat „%s“ mit dir geteilt", - "%s shared »%s« with you on behalf of %s" : "%s hat »%s« im Auftrag von %s mit Dir geteilt", "%s shared »%s« with you." : "%s hat mit dir »%s« geteilt.", - "%s shared »%s« with you on behalf of %s." : "%s hat mit Dir »%s« im Auftrag von %s geteilt.", "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%s via %s" : "%s via %s", @@ -33,8 +35,10 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog kannst Du jederzeit ein anderes Passwort wählen.", "Could not find share" : "Freigabe konnte nicht gefunden werden", "Share by mail" : "Geteilt über eine E-Mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Ermöglicht Nutzern eine personalisierte Verknüpfung zu einer Datei oder einem Ordner durch Eingabe einer E-Mail-Adresse zu teilen.", "Send password by mail" : "Passwort per Mail senden", "Enforce password protection" : "Passwortschutz erzwingen", + "%s shared »%s« with you on behalf of %s" : "%s hat »%s« im Auftrag von %s mit Dir geteilt", "Failed to create the E-mail" : "Erstellen der E-Mail ist fehlgeschalgen", "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 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 Dir geteilt.\n\n%s\n", diff --git a/apps/sharebymail/l10n/de.json b/apps/sharebymail/l10n/de.json index 17257a93d23..eab4b4ed126 100644 --- a/apps/sharebymail/l10n/de.json +++ b/apps/sharebymail/l10n/de.json @@ -10,13 +10,15 @@ "You shared {file} with {email} by mail" : "Sie teilen {file} mit {email} über E-Mail", "%3$s shared %1$s with %2$s by mail" : "%3$s teilt %1$s mit %2$s über E-mail", "{actor} shared {file} with {email} by mail" : "{actor} teilt {file} mit {email} über E-Mail", + "Password to access %1$s was sent to %2s" : "Passwort für den Zugriff auf %1$s wurde an %2s versandt ", + "Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ", + "Password to access %1$s was sent to you" : " Passwort für den Zugriff auf %1$s wurde an Dich versandt ", + "Password to access {file} was sent to you" : " Passwort für den Zugriff auf {file} wurde an Dich versandt ", "Sharing %s failed, this item is already shared with %s" : "Freigabe von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wird", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erstelltes Passwort kann nicht versandt werden. Bitte gebe in Deinen persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche es erneut.", "Failed to send share by E-mail" : "Senden der Freigabe über Mail ist fehlgeschlagen", "%s shared »%s« with you" : "%s hat „%s“ mit dir geteilt", - "%s shared »%s« with you on behalf of %s" : "%s hat »%s« im Auftrag von %s mit Dir geteilt", "%s shared »%s« with you." : "%s hat mit dir »%s« geteilt.", - "%s shared »%s« with you on behalf of %s." : "%s hat mit Dir »%s« im Auftrag von %s geteilt.", "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%s via %s" : "%s via %s", @@ -31,8 +33,10 @@ "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog kannst Du jederzeit ein anderes Passwort wählen.", "Could not find share" : "Freigabe konnte nicht gefunden werden", "Share by mail" : "Geteilt über eine E-Mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Ermöglicht Nutzern eine personalisierte Verknüpfung zu einer Datei oder einem Ordner durch Eingabe einer E-Mail-Adresse zu teilen.", "Send password by mail" : "Passwort per Mail senden", "Enforce password protection" : "Passwortschutz erzwingen", + "%s shared »%s« with you on behalf of %s" : "%s hat »%s« im Auftrag von %s mit Dir geteilt", "Failed to create the E-mail" : "Erstellen der E-Mail ist fehlgeschalgen", "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 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 Dir geteilt.\n\n%s\n", diff --git a/apps/sharebymail/l10n/de_DE.js b/apps/sharebymail/l10n/de_DE.js index f8bd6112921..9cc47690cff 100644 --- a/apps/sharebymail/l10n/de_DE.js +++ b/apps/sharebymail/l10n/de_DE.js @@ -12,13 +12,15 @@ OC.L10N.register( "You shared {file} with {email} by mail" : "Sie haben {file} mit {email} per E-Mail geteilt ", "%3$s shared %1$s with %2$s by mail" : "%3$s hat %1$s mit %2$s per E-Mail geteilt", "{actor} shared {file} with {email} by mail" : "{actor} hat {file} mit {email} per E-Mail geteilt", + "Password to access %1$s was sent to %2s" : "Passwort für den Zugriff auf %1$s wurde an %2s versandt ", + "Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ", + "Password to access %1$s was sent to you" : "Passwort für den Zugriff auf %1$s wurde an Sie versandt", + "Password to access {file} was sent to you" : " Passwort für den Zugriff auf {file} wurde an Sie versandt ", "Sharing %s failed, this item is already shared with %s" : "Teilen von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wurde", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erstelltes Passwort kann nicht versandt werden. Bitte geben Sie in Ihren persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche Sie es erneut.", "Failed to send share by E-mail" : "Fehler beim Senden der Freigabe per E-Mail", "%s shared »%s« with you" : "%s hat »%s« mit Ihnen geteilt", - "%s shared »%s« with you on behalf of %s" : "%s hat »%s« im Auftrag von %s mit Ihnen geteilt", "%s shared »%s« with you." : "%s hat mit ihnen »%s« geteilt.", - "%s shared »%s« with you on behalf of %s." : "%s hat mit ihnen »%s« im Auftrag von %s geteilt.", "Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%s via %s" : "%s via %s", @@ -33,8 +35,10 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog können Sie jederzeit ein anderes Passwort wählen.", "Could not find share" : "Freigabe konnte nicht gefunden werden", "Share by mail" : "Geteilt über eine E-Mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Ermöglicht Nutzern eine personalisierte Verknüpfung zu einer Datei oder einem Ordner durch Eingabe einer E-Mail-Adresse zu teilen.", "Send password by mail" : "Passwort per Mail senden", "Enforce password protection" : "Passwortschutz erzwingen", + "%s shared »%s« with you on behalf of %s" : "%s hat »%s« im Auftrag von %s mit Ihnen geteilt", "Failed to create the E-mail" : "Erstellen der E-Mail fehlgeschlagen", "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 Ihnen geteilt.\n\n%s\n", diff --git a/apps/sharebymail/l10n/de_DE.json b/apps/sharebymail/l10n/de_DE.json index a9732b375be..5142b767776 100644 --- a/apps/sharebymail/l10n/de_DE.json +++ b/apps/sharebymail/l10n/de_DE.json @@ -10,13 +10,15 @@ "You shared {file} with {email} by mail" : "Sie haben {file} mit {email} per E-Mail geteilt ", "%3$s shared %1$s with %2$s by mail" : "%3$s hat %1$s mit %2$s per E-Mail geteilt", "{actor} shared {file} with {email} by mail" : "{actor} hat {file} mit {email} per E-Mail geteilt", + "Password to access %1$s was sent to %2s" : "Passwort für den Zugriff auf %1$s wurde an %2s versandt ", + "Password to access {file} was sent to {email}" : "Passwort für den Zugriff auf {file} wurde an {email} versandt ", + "Password to access %1$s was sent to you" : "Passwort für den Zugriff auf %1$s wurde an Sie versandt", + "Password to access {file} was sent to you" : " Passwort für den Zugriff auf {file} wurde an Sie versandt ", "Sharing %s failed, this item is already shared with %s" : "Teilen von %s fehlgeschlagen, da dieses Objekt schon mit %s geteilt wurde", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erstelltes Passwort kann nicht versandt werden. Bitte geben Sie in Ihren persönlichen Einstellungen eine gültige E-Mail-Adresse ein und versuche Sie es erneut.", "Failed to send share by E-mail" : "Fehler beim Senden der Freigabe per E-Mail", "%s shared »%s« with you" : "%s hat »%s« mit Ihnen geteilt", - "%s shared »%s« with you on behalf of %s" : "%s hat »%s« im Auftrag von %s mit Ihnen geteilt", "%s shared »%s« with you." : "%s hat mit ihnen »%s« geteilt.", - "%s shared »%s« with you on behalf of %s." : "%s hat mit ihnen »%s« im Auftrag von %s geteilt.", "Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%s via %s" : "%s via %s", @@ -31,8 +33,10 @@ "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog können Sie jederzeit ein anderes Passwort wählen.", "Could not find share" : "Freigabe konnte nicht gefunden werden", "Share by mail" : "Geteilt über eine E-Mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Ermöglicht Nutzern eine personalisierte Verknüpfung zu einer Datei oder einem Ordner durch Eingabe einer E-Mail-Adresse zu teilen.", "Send password by mail" : "Passwort per Mail senden", "Enforce password protection" : "Passwortschutz erzwingen", + "%s shared »%s« with you on behalf of %s" : "%s hat »%s« im Auftrag von %s mit Ihnen geteilt", "Failed to create the E-mail" : "Erstellen der E-Mail fehlgeschlagen", "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 Ihnen geteilt.\n\n%s\n", diff --git a/apps/sharebymail/l10n/el.js b/apps/sharebymail/l10n/el.js index bcd7944b8ff..f7c4e3d3edf 100644 --- a/apps/sharebymail/l10n/el.js +++ b/apps/sharebymail/l10n/el.js @@ -5,17 +5,19 @@ OC.L10N.register( "Shared with {email}" : "Διαμοιράστηκε με {email}", "Shared with %1$s by %2$s" : "Διαμοιράστηκε με %1$s από %2$s", "Shared with {email} by {actor}" : "Διαμοιράστηκε με {email} από {actor}", + "Password for mail share sent to %1$s" : "Το συνθηματικό για το διαμοιρασμό μέσου ηλ. αλληλογραφίας έχει αποσταλλεί %1$s", + "Password for mail share sent to {email}" : "Ο κωδικός πρόσβασης διαμοιρασμού αλληλογραφίας αποστέλλεται στο {email}", + "Password for mail share sent to you" : " Κωδικός πρόσβασης για διαμοιρασμό αλληλογραφίας σας έχει σταλεί", "You shared %1$s with %2$s by mail" : "Διαμοιραστήκατε το %1$s με %2$s μέσω mail", "You shared {file} with {email} by mail" : "Διαμοιραστήκατε {file} με {email} μέσω mail", "%3$s shared %1$s with %2$s by mail" : "%3$s Διαμοιραστηκε %1$s με %2$s μέσω mail", "{actor} shared {file} with {email} by mail" : "{actor} διαμοίρασε {file} με {email} μέσω mail", + "Password to access %1$s was sent to %2s" : "Το συνθηματικό για πρόσβαση στο %1$s στάθηκε στο %2s", "Sharing %s failed, this item is already shared with %s" : "Διαμοιρασμός %s απέτυχε, αυτό το αντικείμενο είναι ήδη διαμοιρασμένο με %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Δεν μπορούμε να σας στείλουμε αυτοδημιουργημένο συνθηματικό. Παρακαλούμε βάλτε μία έγκυρη διεύθυνση email στις προσωπικές σας ρυθμίσεις και προσπαθήστε ξανά.", "Failed to send share by E-mail" : "Αποτυχία αποστολής συνδέσμου διαμοιρασμού μέσω Ηλ.ταχυδρομείου", "%s shared »%s« with you" : "%s διαμοιρασμένα »%s« με σένα", - "%s shared »%s« with you on behalf of %s" : "%s διαμοιράστηκε »%s« με εσάς από μέρους του %s", "%s shared »%s« with you." : "%s διαμοιράστηκε »%s« με εσάς.", - "%s shared »%s« with you on behalf of %s." : "%s διαμοιράστηκε »%s« με εσάς από μέρους του %s.", "Click the button below to open it." : "Κάντε κλικ στο παρακάτω κουμπί για να το ανοίξετε.", "Open »%s«" : "Ανοίξτε »%s«", "%s via %s" : "%s μέσω %s", @@ -32,6 +34,7 @@ OC.L10N.register( "Share by mail" : "Διαμοιρασμός με ηλεκτρονική αλληλογραφία", "Send password by mail" : "Αποστολή συνθηματικου με ηλεκτρονική αλληλογραφία", "Enforce password protection" : "Επιβάλετε προστασία συνθηματικού", + "%s shared »%s« with you on behalf of %s" : "%s διαμοιράστηκε »%s« με εσάς από μέρους του %s", "Failed to create the E-mail" : "Αποτυχία δημιουργίας του Ηλ.ταχυδρομείου", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Γεια σας,\n\n%s διαμοιράστηκε »%s« με εσάς από μέρους του %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Γεια σας,\n\n%s διαμοιράστηκε »%s« με εσάς.\n\n%s\n", diff --git a/apps/sharebymail/l10n/el.json b/apps/sharebymail/l10n/el.json index f5f4f5f88e6..8f8e1140ef5 100644 --- a/apps/sharebymail/l10n/el.json +++ b/apps/sharebymail/l10n/el.json @@ -3,17 +3,19 @@ "Shared with {email}" : "Διαμοιράστηκε με {email}", "Shared with %1$s by %2$s" : "Διαμοιράστηκε με %1$s από %2$s", "Shared with {email} by {actor}" : "Διαμοιράστηκε με {email} από {actor}", + "Password for mail share sent to %1$s" : "Το συνθηματικό για το διαμοιρασμό μέσου ηλ. αλληλογραφίας έχει αποσταλλεί %1$s", + "Password for mail share sent to {email}" : "Ο κωδικός πρόσβασης διαμοιρασμού αλληλογραφίας αποστέλλεται στο {email}", + "Password for mail share sent to you" : " Κωδικός πρόσβασης για διαμοιρασμό αλληλογραφίας σας έχει σταλεί", "You shared %1$s with %2$s by mail" : "Διαμοιραστήκατε το %1$s με %2$s μέσω mail", "You shared {file} with {email} by mail" : "Διαμοιραστήκατε {file} με {email} μέσω mail", "%3$s shared %1$s with %2$s by mail" : "%3$s Διαμοιραστηκε %1$s με %2$s μέσω mail", "{actor} shared {file} with {email} by mail" : "{actor} διαμοίρασε {file} με {email} μέσω mail", + "Password to access %1$s was sent to %2s" : "Το συνθηματικό για πρόσβαση στο %1$s στάθηκε στο %2s", "Sharing %s failed, this item is already shared with %s" : "Διαμοιρασμός %s απέτυχε, αυτό το αντικείμενο είναι ήδη διαμοιρασμένο με %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Δεν μπορούμε να σας στείλουμε αυτοδημιουργημένο συνθηματικό. Παρακαλούμε βάλτε μία έγκυρη διεύθυνση email στις προσωπικές σας ρυθμίσεις και προσπαθήστε ξανά.", "Failed to send share by E-mail" : "Αποτυχία αποστολής συνδέσμου διαμοιρασμού μέσω Ηλ.ταχυδρομείου", "%s shared »%s« with you" : "%s διαμοιρασμένα »%s« με σένα", - "%s shared »%s« with you on behalf of %s" : "%s διαμοιράστηκε »%s« με εσάς από μέρους του %s", "%s shared »%s« with you." : "%s διαμοιράστηκε »%s« με εσάς.", - "%s shared »%s« with you on behalf of %s." : "%s διαμοιράστηκε »%s« με εσάς από μέρους του %s.", "Click the button below to open it." : "Κάντε κλικ στο παρακάτω κουμπί για να το ανοίξετε.", "Open »%s«" : "Ανοίξτε »%s«", "%s via %s" : "%s μέσω %s", @@ -30,6 +32,7 @@ "Share by mail" : "Διαμοιρασμός με ηλεκτρονική αλληλογραφία", "Send password by mail" : "Αποστολή συνθηματικου με ηλεκτρονική αλληλογραφία", "Enforce password protection" : "Επιβάλετε προστασία συνθηματικού", + "%s shared »%s« with you on behalf of %s" : "%s διαμοιράστηκε »%s« με εσάς από μέρους του %s", "Failed to create the E-mail" : "Αποτυχία δημιουργίας του Ηλ.ταχυδρομείου", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Γεια σας,\n\n%s διαμοιράστηκε »%s« με εσάς από μέρους του %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Γεια σας,\n\n%s διαμοιράστηκε »%s« με εσάς.\n\n%s\n", diff --git a/apps/sharebymail/l10n/es.js b/apps/sharebymail/l10n/es.js index e9ad5ec76ed..98e3370eeab 100644 --- a/apps/sharebymail/l10n/es.js +++ b/apps/sharebymail/l10n/es.js @@ -5,26 +5,40 @@ OC.L10N.register( "Shared with {email}" : "Compartido con {email}", "Shared with %1$s by %2$s" : "Compartido con %1$s por %2$s", "Shared with {email} by {actor}" : "Compartido con {email} por {actor}", + "Password for mail share sent to %1$s" : "Se ha enviado una contraseña para compartir por correo a %1$s", + "Password for mail share sent to {email}" : "Se ha enviado una contraseña para compartir por correo a {email}", + "Password for mail share sent to you" : "Se te ha enviado una contraseña para compartir por correo", "You shared %1$s with %2$s by mail" : "Has compartido %1$s con %2$s por correo", "You shared {file} with {email} by mail" : "Has compartido {file} con {email} por correo", "%3$s shared %1$s with %2$s by mail" : "%3$s compartido %1$s con %2$s por correo", "{actor} shared {file} with {email} by mail" : "{actor} compartió {file} con {email} por correo electrónico", + "Password to access %1$s was sent to %2s" : "Se ha enviado a %2s una contraseña para acceder a %1$s ", + "Password to access {file} was sent to {email}" : "Se ha enviado a {email} una contraseña para acceder a {file}", + "Password to access %1$s was sent to you" : "Se te ha enviado una contraseña para acceder a %1$s", + "Password to access {file} was sent to you" : "Se te ha enviado una contraseña para acceder a {file}", "Sharing %s failed, this item is already shared with %s" : "Falló el compartir %s , este ítem ya se encontraba compartido con %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "No podemos enviarte la contraseña autogenerada. Por favor, indica una dirección de correo electrónico válida en tu configuración personal y vuelve a intentarlo.", "Failed to send share by E-mail" : "Falló enviar recurso compartido por correo electrónico", "%s shared »%s« with you" : "%s compartió »%s« con usted", - "%s shared »%s« with you on behalf of %s" : "%s compartió »%s« con usted a nombre de %s", "%s shared »%s« with you." : "%s compartió »%s« con usted.", - "%s shared »%s« with you on behalf of %s." : "%s compartió »%s« con usted en nombre de %s.", "Click the button below to open it." : "Haga click en el botón debajo para abrirlo.", "Open »%s«" : "Abrir »%s«", + "%s via %s" : "%s por %s", "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s", - "Password to access »%s«" : "Contraseña para acceder »%s«", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartió »%s« contigo.\nDeberías haber recibido ya un correo por separado con un enlace para acceder.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartió »%s« con usted. Debería haber recibido un mensaje de correo separado con un enlace para abrirlo.", + "Password to access »%s«" : "Contraseña para acceder »%s«", "It is protected with the following password: %s" : "Está protegido con la siguiente contraseña: %s", + "Password to access »%s« shared with %s" : "Se ha compartido con %s una contraseña para acceder a »%s«", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Usted acaba de compartir »%s« con %s. El recurso compartido ya fue enviado al destinatario. Debido a las reglas de seguridad definadas por el administrador de %s cada recurso compartido necesita ser protegido por una contraseña y no esta permitido que usted mande la contraseña directamente al destinatario. Por eso, usted necesita mandar la contraseña manualmente al destinatario.", + "This is the password: %s" : "Esta es la contraseña: %s", + "You can choose a different password at any time in the share dialog." : "Puedes elegir una contraseña diferente en cualquier momento en el diálogo de compartir.", "Could not find share" : "No se pudo encontrar el recurso compartido", "Share by mail" : "Enviado por correo electrónico", - "Send a personalized link to a file or folder by mail." : "Enviar un enlace personalizado a uno de los archivos o carpetas por correo electrónico.", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite a los usuarios compartir un enlace personalizado a un archivo o carpeta enviándolo a una dirección de correo electrónico", "Send password by mail" : "Enviar contraseñas por email", + "Enforce password protection" : "Imponer la protección de contraseña", + "%s shared »%s« with you on behalf of %s" : "%s compartió »%s« con usted a nombre de %s", "Failed to create the E-mail" : "Falló crear el correo electrónico", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "¡Hola!,\n\n%s comapartió »%s« con usted a nombre de %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hola,\n\n%s compartió »%s« con usted.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/es.json b/apps/sharebymail/l10n/es.json index 4e07a47d0ad..44cdb899bd6 100644 --- a/apps/sharebymail/l10n/es.json +++ b/apps/sharebymail/l10n/es.json @@ -3,26 +3,40 @@ "Shared with {email}" : "Compartido con {email}", "Shared with %1$s by %2$s" : "Compartido con %1$s por %2$s", "Shared with {email} by {actor}" : "Compartido con {email} por {actor}", + "Password for mail share sent to %1$s" : "Se ha enviado una contraseña para compartir por correo a %1$s", + "Password for mail share sent to {email}" : "Se ha enviado una contraseña para compartir por correo a {email}", + "Password for mail share sent to you" : "Se te ha enviado una contraseña para compartir por correo", "You shared %1$s with %2$s by mail" : "Has compartido %1$s con %2$s por correo", "You shared {file} with {email} by mail" : "Has compartido {file} con {email} por correo", "%3$s shared %1$s with %2$s by mail" : "%3$s compartido %1$s con %2$s por correo", "{actor} shared {file} with {email} by mail" : "{actor} compartió {file} con {email} por correo electrónico", + "Password to access %1$s was sent to %2s" : "Se ha enviado a %2s una contraseña para acceder a %1$s ", + "Password to access {file} was sent to {email}" : "Se ha enviado a {email} una contraseña para acceder a {file}", + "Password to access %1$s was sent to you" : "Se te ha enviado una contraseña para acceder a %1$s", + "Password to access {file} was sent to you" : "Se te ha enviado una contraseña para acceder a {file}", "Sharing %s failed, this item is already shared with %s" : "Falló el compartir %s , este ítem ya se encontraba compartido con %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "No podemos enviarte la contraseña autogenerada. Por favor, indica una dirección de correo electrónico válida en tu configuración personal y vuelve a intentarlo.", "Failed to send share by E-mail" : "Falló enviar recurso compartido por correo electrónico", "%s shared »%s« with you" : "%s compartió »%s« con usted", - "%s shared »%s« with you on behalf of %s" : "%s compartió »%s« con usted a nombre de %s", "%s shared »%s« with you." : "%s compartió »%s« con usted.", - "%s shared »%s« with you on behalf of %s." : "%s compartió »%s« con usted en nombre de %s.", "Click the button below to open it." : "Haga click en el botón debajo para abrirlo.", "Open »%s«" : "Abrir »%s«", + "%s via %s" : "%s por %s", "Password to access »%s« shared to you by %s" : "Contraseña para acceder »%s« compartido con usted por %s", - "Password to access »%s«" : "Contraseña para acceder »%s«", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartió »%s« contigo.\nDeberías haber recibido ya un correo por separado con un enlace para acceder.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartió »%s« con usted. Debería haber recibido un mensaje de correo separado con un enlace para abrirlo.", + "Password to access »%s«" : "Contraseña para acceder »%s«", "It is protected with the following password: %s" : "Está protegido con la siguiente contraseña: %s", + "Password to access »%s« shared with %s" : "Se ha compartido con %s una contraseña para acceder a »%s«", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Usted acaba de compartir »%s« con %s. El recurso compartido ya fue enviado al destinatario. Debido a las reglas de seguridad definadas por el administrador de %s cada recurso compartido necesita ser protegido por una contraseña y no esta permitido que usted mande la contraseña directamente al destinatario. Por eso, usted necesita mandar la contraseña manualmente al destinatario.", + "This is the password: %s" : "Esta es la contraseña: %s", + "You can choose a different password at any time in the share dialog." : "Puedes elegir una contraseña diferente en cualquier momento en el diálogo de compartir.", "Could not find share" : "No se pudo encontrar el recurso compartido", "Share by mail" : "Enviado por correo electrónico", - "Send a personalized link to a file or folder by mail." : "Enviar un enlace personalizado a uno de los archivos o carpetas por correo electrónico.", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite a los usuarios compartir un enlace personalizado a un archivo o carpeta enviándolo a una dirección de correo electrónico", "Send password by mail" : "Enviar contraseñas por email", + "Enforce password protection" : "Imponer la protección de contraseña", + "%s shared »%s« with you on behalf of %s" : "%s compartió »%s« con usted a nombre de %s", "Failed to create the E-mail" : "Falló crear el correo electrónico", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "¡Hola!,\n\n%s comapartió »%s« con usted a nombre de %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hola,\n\n%s compartió »%s« con usted.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/es_MX.js b/apps/sharebymail/l10n/es_MX.js index bf4a894deff..30626404175 100644 --- a/apps/sharebymail/l10n/es_MX.js +++ b/apps/sharebymail/l10n/es_MX.js @@ -12,13 +12,15 @@ OC.L10N.register( "You shared {file} with {email} by mail" : "Usted ha compartido {file} con {email} por correo", "%3$s shared %1$s with %2$s by mail" : "%3$s ha compartido %1$s con %2$s por correo ", "{actor} shared {file} with {email} by mail" : "{actor} ha compartido {file} con {email} por correo", + "Password to access %1$s was sent to %2s" : "La contraseña para acceder %1$s fue enviada a %2s", + "Password to access {file} was sent to {email}" : "La contraseña para acceder {file} ha sido enviada a {email}", + "Password to access %1$s was sent to you" : "La contraseña para acceder %1$s se le ha sido enviada ", + "Password to access {file} was sent to you" : "La contraseña para acceder {file} se le ha sido enviada", "Sharing %s failed, this item is already shared with %s" : "Se presentó una falla al compartir %s, este elemento ya ha sido compartido con %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "No es posible enviarle la contraseña auto-generada. Favor de establecer una dirección de correo electrónico váilida en sus ajustes personales y volver a intentarlo.", "Failed to send share by E-mail" : "Se presentó una falla al enviar el recurso compartido por correo electrónico", "%s shared »%s« with you" : "%s ha compartido »%s« con usted", - "%s shared »%s« with you on behalf of %s" : "%s ha compartido »%s« con usted a nombre de %s", "%s shared »%s« with you." : "%s ha compartido »%s« con usted.", - "%s shared »%s« with you on behalf of %s." : "%s ha compartido »%s« con usted de parte de %s.", "Click the button below to open it." : "Haga click en el botón de abajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s vía %s", @@ -33,8 +35,10 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "Puede elegir una contraseña diferente en cualquier momento en la ventana de diálogo de compartir. ", "Could not find share" : "No fue posible encontrar el elemento compartido", "Share by mail" : "Compartir por correo", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Le permite a los usuarios compartir una liga personalizada a un archivo o carpeta colocando una dirección de correo eletrónico. ", "Send password by mail" : "La contraseña ha sido enviada por correo", "Enforce password protection" : "Forzar protección con contraseña", + "%s shared »%s« with you on behalf of %s" : "%s ha compartido »%s« con usted a nombre de %s", "Failed to create the E-mail" : "Se presentó una falla al crear el correo electrónico", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hola,\n\n%s ha compartido »%s« con usted a nombre de %s.\n\n%s\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hola,\n\n%s ha compartido »%s« con usted.\n\n%s\n", diff --git a/apps/sharebymail/l10n/es_MX.json b/apps/sharebymail/l10n/es_MX.json index a18fb0eb0b2..8f0fd45a508 100644 --- a/apps/sharebymail/l10n/es_MX.json +++ b/apps/sharebymail/l10n/es_MX.json @@ -10,13 +10,15 @@ "You shared {file} with {email} by mail" : "Usted ha compartido {file} con {email} por correo", "%3$s shared %1$s with %2$s by mail" : "%3$s ha compartido %1$s con %2$s por correo ", "{actor} shared {file} with {email} by mail" : "{actor} ha compartido {file} con {email} por correo", + "Password to access %1$s was sent to %2s" : "La contraseña para acceder %1$s fue enviada a %2s", + "Password to access {file} was sent to {email}" : "La contraseña para acceder {file} ha sido enviada a {email}", + "Password to access %1$s was sent to you" : "La contraseña para acceder %1$s se le ha sido enviada ", + "Password to access {file} was sent to you" : "La contraseña para acceder {file} se le ha sido enviada", "Sharing %s failed, this item is already shared with %s" : "Se presentó una falla al compartir %s, este elemento ya ha sido compartido con %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "No es posible enviarle la contraseña auto-generada. Favor de establecer una dirección de correo electrónico váilida en sus ajustes personales y volver a intentarlo.", "Failed to send share by E-mail" : "Se presentó una falla al enviar el recurso compartido por correo electrónico", "%s shared »%s« with you" : "%s ha compartido »%s« con usted", - "%s shared »%s« with you on behalf of %s" : "%s ha compartido »%s« con usted a nombre de %s", "%s shared »%s« with you." : "%s ha compartido »%s« con usted.", - "%s shared »%s« with you on behalf of %s." : "%s ha compartido »%s« con usted de parte de %s.", "Click the button below to open it." : "Haga click en el botón de abajo para abrirlo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s vía %s", @@ -31,8 +33,10 @@ "You can choose a different password at any time in the share dialog." : "Puede elegir una contraseña diferente en cualquier momento en la ventana de diálogo de compartir. ", "Could not find share" : "No fue posible encontrar el elemento compartido", "Share by mail" : "Compartir por correo", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Le permite a los usuarios compartir una liga personalizada a un archivo o carpeta colocando una dirección de correo eletrónico. ", "Send password by mail" : "La contraseña ha sido enviada por correo", "Enforce password protection" : "Forzar protección con contraseña", + "%s shared »%s« with you on behalf of %s" : "%s ha compartido »%s« con usted a nombre de %s", "Failed to create the E-mail" : "Se presentó una falla al crear el correo electrónico", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hola,\n\n%s ha compartido »%s« con usted a nombre de %s.\n\n%s\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hola,\n\n%s ha compartido »%s« con usted.\n\n%s\n", diff --git a/apps/sharebymail/l10n/fr.js b/apps/sharebymail/l10n/fr.js index f8341861a42..a821a39dccd 100644 --- a/apps/sharebymail/l10n/fr.js +++ b/apps/sharebymail/l10n/fr.js @@ -12,13 +12,15 @@ OC.L10N.register( "You shared {file} with {email} by mail" : "Vous avez partagé {file} avec {email} par email", "%3$s shared %1$s with %2$s by mail" : "%3$s a partagé %1$s avec %2$s par email", "{actor} shared {file} with {email} by mail" : "{actor} a partagé {file} avec {email} par email", + "Password to access %1$s was sent to %2s" : "Le mot de passe pour accèder à %1$s a été envoyé à %2s", + "Password to access {file} was sent to {email}" : "Le mot de passe pour accèder à {file} a été envoyé à {email}", + "Password to access %1$s was sent to you" : "Le mot de passe pour accèder à %1$s vous a été envoyé", + "Password to access {file} was sent to you" : "Le mot de passe pour accèder à {file} vous a été envoyé", "Sharing %s failed, this item is already shared with %s" : "Le partage de %s a échoué, cet élément est déjà partagé avec %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nous ne pouvons pas vous envoyer le mot de passe généré automatiquement. Veuillez renseigner une adresse e-mail valide dans vos paramètres personnels puis réessayer.", "Failed to send share by E-mail" : "Erreur lors de l'envoi du partage par email", "%s shared »%s« with you" : "%s a partagé «%s» avec vous", - "%s shared »%s« with you on behalf of %s" : "%s a partagé «%s» avec vous de la part de %s", "%s shared »%s« with you." : "%s a partagé «%s» avec vous.", - "%s shared »%s« with you on behalf of %s." : "%s a partagé «%s» avec vous de la part de %s.", "Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir.", "Open »%s«" : "Ouvrir «%s»", "%s via %s" : "%s via %s", @@ -33,8 +35,10 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "Vous pouvez choisir un mot de passe différent à n'importe quel moment dans la boîte de dialogue de partage.", "Could not find share" : "Impossible de trouver le partage", "Share by mail" : "Partage par email", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Autoriser les utilisateurs de partager un lien personnalisé vers un fichier ou un dossier en renseignant une adresse e-mail.", "Send password by mail" : "Envoyer le mot de passe par email", "Enforce password protection" : "Imposer la protection par mot de passe", + "%s shared »%s« with you on behalf of %s" : "%s a partagé «%s» avec vous de la part de %s", "Failed to create the E-mail" : "Erreur lors de la création du mail", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Bonjour,\n\n%s a partagé «%s» avec vous de la part de %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Bonjour,\n\n%s a partagé «%s» avec vous.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/fr.json b/apps/sharebymail/l10n/fr.json index 78d51ed6116..a2da5457618 100644 --- a/apps/sharebymail/l10n/fr.json +++ b/apps/sharebymail/l10n/fr.json @@ -10,13 +10,15 @@ "You shared {file} with {email} by mail" : "Vous avez partagé {file} avec {email} par email", "%3$s shared %1$s with %2$s by mail" : "%3$s a partagé %1$s avec %2$s par email", "{actor} shared {file} with {email} by mail" : "{actor} a partagé {file} avec {email} par email", + "Password to access %1$s was sent to %2s" : "Le mot de passe pour accèder à %1$s a été envoyé à %2s", + "Password to access {file} was sent to {email}" : "Le mot de passe pour accèder à {file} a été envoyé à {email}", + "Password to access %1$s was sent to you" : "Le mot de passe pour accèder à %1$s vous a été envoyé", + "Password to access {file} was sent to you" : "Le mot de passe pour accèder à {file} vous a été envoyé", "Sharing %s failed, this item is already shared with %s" : "Le partage de %s a échoué, cet élément est déjà partagé avec %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nous ne pouvons pas vous envoyer le mot de passe généré automatiquement. Veuillez renseigner une adresse e-mail valide dans vos paramètres personnels puis réessayer.", "Failed to send share by E-mail" : "Erreur lors de l'envoi du partage par email", "%s shared »%s« with you" : "%s a partagé «%s» avec vous", - "%s shared »%s« with you on behalf of %s" : "%s a partagé «%s» avec vous de la part de %s", "%s shared »%s« with you." : "%s a partagé «%s» avec vous.", - "%s shared »%s« with you on behalf of %s." : "%s a partagé «%s» avec vous de la part de %s.", "Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir.", "Open »%s«" : "Ouvrir «%s»", "%s via %s" : "%s via %s", @@ -31,8 +33,10 @@ "You can choose a different password at any time in the share dialog." : "Vous pouvez choisir un mot de passe différent à n'importe quel moment dans la boîte de dialogue de partage.", "Could not find share" : "Impossible de trouver le partage", "Share by mail" : "Partage par email", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Autoriser les utilisateurs de partager un lien personnalisé vers un fichier ou un dossier en renseignant une adresse e-mail.", "Send password by mail" : "Envoyer le mot de passe par email", "Enforce password protection" : "Imposer la protection par mot de passe", + "%s shared »%s« with you on behalf of %s" : "%s a partagé «%s» avec vous de la part de %s", "Failed to create the E-mail" : "Erreur lors de la création du mail", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Bonjour,\n\n%s a partagé «%s» avec vous de la part de %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Bonjour,\n\n%s a partagé «%s» avec vous.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/is.js b/apps/sharebymail/l10n/is.js index 48bba82928c..d79152b272c 100644 --- a/apps/sharebymail/l10n/is.js +++ b/apps/sharebymail/l10n/is.js @@ -5,16 +5,41 @@ OC.L10N.register( "Shared with {email}" : "Deilt með {email}", "Shared with %1$s by %2$s" : "Deilt með %1$s af %2$s", "Shared with {email} by {actor}" : "Deilt með {email} af {actor}", + "Password for mail share sent to %1$s" : "Lykilorð fyrir póstsameign var sent til %1$s", + "Password for mail share sent to {email}" : "Lykilorð fyrir póstsameign var sent til {email}", + "Password for mail share sent to you" : "Lykilorð fyrir póstsameign var sent til þín", "You shared %1$s with %2$s by mail" : "Þú deildir %1$s með %2$s með tölvupósti", "You shared {file} with {email} by mail" : "Þú deildir {file} með {email} með tölvupósti", "%3$s shared %1$s with %2$s by mail" : "%3$s deildi %1$s með %2$s með tölvupósti", "{actor} shared {file} with {email} by mail" : "{actor} deildi {file} með {email} með tölvupósti", + "Password to access %1$s was sent to %2s" : "Lykilorð fyrir aðgang að %1$s var sent til %2s", + "Password to access {file} was sent to {email}" : "Lykilorð fyrir aðgang að {file} var sent til {email}", + "Password to access %1$s was sent to you" : "Lykilorð fyrir aðgang að %1$s var sent til þín", + "Password to access {file} was sent to you" : "Lykilorð fyrir aðgang að {file} var sent til þín", "Sharing %s failed, this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Ekki er hægt að senda þér sjálfvirkt framleidda lykilorðið. Settu inn gilt tölvupóstfang í einkastillingunum þínum og prófaðu aftur.", "Failed to send share by E-mail" : "Gat ekki sent sameign með tölvupósti", "%s shared »%s« with you" : "%s deildi »%s« með þér", + "%s shared »%s« with you." : "%s deildi »%s« með þér", + "Click the button below to open it." : "Smelltu á tengilinn hér fyrir neðan til að opna það.", + "Open »%s«" : "Opna »%s«", + "%s via %s" : "%s með %s", + "Password to access »%s« shared to you by %s" : "Lykilorð fyrir aðgang að »%s« deilt með þér af %s", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s deildi »%s« með þér.\nÞú ættir að hafa fengið sérstakan tölvupóst með tengli sem vísar á gögnin.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s deildi »%s« með þér.\nÞú ættir að hafa fengið sérstakan tölvupóst með tengli sem vísar á gögnin.", + "Password to access »%s«" : "Lykilorð fyrir aðgang að »%s«", + "It is protected with the following password: %s" : "Það er varið með eftirfarandi lykilorði: %s", + "Password to access »%s« shared with %s" : "Lykilorð fyrir aðgang að »%s« deilt með %s", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Þú varst í þessu að deila »%s« með %s. Sameignin var þegar send til viðtakandans. Vegna öryggisskilmála sem skilgreindir hafa verið af kerfisstjóra %s þarf hver sameign að vera varin með lykilorði og að ekki er leyfilegt að senda það lykilorð beint til viðtakandans. Því er nauðsynlegt að þú homir lykilorðinu beint til sjálfs viðtakandans.", + "This is the password: %s" : "Þetta er lykilorðið: %s", + "You can choose a different password at any time in the share dialog." : "Þú getur hvenær sem er valið annað lykilorð með því að fara í deilingargluggann.", + "Could not find share" : "Gat ekki fundið sameign", + "Share by mail" : "Deila með tölvupósti", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Gerir notendum kleift að deila sérsniðnum tengli á skrá eða möppu með því að setja inn tölvupóstfang.", + "Send password by mail" : "Senda lykilorð með pósti", + "Enforce password protection" : "Krefjast verndunar með aðgangsorði", "%s shared »%s« with you on behalf of %s" : "%s deildi »%s« með þér fyrir hönd %s", "Failed to create the E-mail" : "Mistókst að útbúa tölvupóstinn", - "Could not find share" : "Gat ekki fundið sameign", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Góðan daginn,\n\n%s deildi »%s« með þér fyrir hönd %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Góðan daginn,\n\n%s deildi »%s« með þér.\n\n%s\n\n", "Cheers!" : "Til hamingju!", diff --git a/apps/sharebymail/l10n/is.json b/apps/sharebymail/l10n/is.json index 915c340c87c..506f59f215d 100644 --- a/apps/sharebymail/l10n/is.json +++ b/apps/sharebymail/l10n/is.json @@ -3,16 +3,41 @@ "Shared with {email}" : "Deilt með {email}", "Shared with %1$s by %2$s" : "Deilt með %1$s af %2$s", "Shared with {email} by {actor}" : "Deilt með {email} af {actor}", + "Password for mail share sent to %1$s" : "Lykilorð fyrir póstsameign var sent til %1$s", + "Password for mail share sent to {email}" : "Lykilorð fyrir póstsameign var sent til {email}", + "Password for mail share sent to you" : "Lykilorð fyrir póstsameign var sent til þín", "You shared %1$s with %2$s by mail" : "Þú deildir %1$s með %2$s með tölvupósti", "You shared {file} with {email} by mail" : "Þú deildir {file} með {email} með tölvupósti", "%3$s shared %1$s with %2$s by mail" : "%3$s deildi %1$s með %2$s með tölvupósti", "{actor} shared {file} with {email} by mail" : "{actor} deildi {file} með {email} með tölvupósti", + "Password to access %1$s was sent to %2s" : "Lykilorð fyrir aðgang að %1$s var sent til %2s", + "Password to access {file} was sent to {email}" : "Lykilorð fyrir aðgang að {file} var sent til {email}", + "Password to access %1$s was sent to you" : "Lykilorð fyrir aðgang að %1$s var sent til þín", + "Password to access {file} was sent to you" : "Lykilorð fyrir aðgang að {file} var sent til þín", "Sharing %s failed, this item is already shared with %s" : "Deiling %s mistókst, því þessu atriði er þegar deilt með %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Ekki er hægt að senda þér sjálfvirkt framleidda lykilorðið. Settu inn gilt tölvupóstfang í einkastillingunum þínum og prófaðu aftur.", "Failed to send share by E-mail" : "Gat ekki sent sameign með tölvupósti", "%s shared »%s« with you" : "%s deildi »%s« með þér", + "%s shared »%s« with you." : "%s deildi »%s« með þér", + "Click the button below to open it." : "Smelltu á tengilinn hér fyrir neðan til að opna það.", + "Open »%s«" : "Opna »%s«", + "%s via %s" : "%s með %s", + "Password to access »%s« shared to you by %s" : "Lykilorð fyrir aðgang að »%s« deilt með þér af %s", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s deildi »%s« með þér.\nÞú ættir að hafa fengið sérstakan tölvupóst með tengli sem vísar á gögnin.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s deildi »%s« með þér.\nÞú ættir að hafa fengið sérstakan tölvupóst með tengli sem vísar á gögnin.", + "Password to access »%s«" : "Lykilorð fyrir aðgang að »%s«", + "It is protected with the following password: %s" : "Það er varið með eftirfarandi lykilorði: %s", + "Password to access »%s« shared with %s" : "Lykilorð fyrir aðgang að »%s« deilt með %s", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Þú varst í þessu að deila »%s« með %s. Sameignin var þegar send til viðtakandans. Vegna öryggisskilmála sem skilgreindir hafa verið af kerfisstjóra %s þarf hver sameign að vera varin með lykilorði og að ekki er leyfilegt að senda það lykilorð beint til viðtakandans. Því er nauðsynlegt að þú homir lykilorðinu beint til sjálfs viðtakandans.", + "This is the password: %s" : "Þetta er lykilorðið: %s", + "You can choose a different password at any time in the share dialog." : "Þú getur hvenær sem er valið annað lykilorð með því að fara í deilingargluggann.", + "Could not find share" : "Gat ekki fundið sameign", + "Share by mail" : "Deila með tölvupósti", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Gerir notendum kleift að deila sérsniðnum tengli á skrá eða möppu með því að setja inn tölvupóstfang.", + "Send password by mail" : "Senda lykilorð með pósti", + "Enforce password protection" : "Krefjast verndunar með aðgangsorði", "%s shared »%s« with you on behalf of %s" : "%s deildi »%s« með þér fyrir hönd %s", "Failed to create the E-mail" : "Mistókst að útbúa tölvupóstinn", - "Could not find share" : "Gat ekki fundið sameign", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Góðan daginn,\n\n%s deildi »%s« með þér fyrir hönd %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Góðan daginn,\n\n%s deildi »%s« með þér.\n\n%s\n\n", "Cheers!" : "Til hamingju!", diff --git a/apps/sharebymail/l10n/ko.js b/apps/sharebymail/l10n/ko.js new file mode 100644 index 00000000000..bf78656e4df --- /dev/null +++ b/apps/sharebymail/l10n/ko.js @@ -0,0 +1,49 @@ +OC.L10N.register( + "sharebymail", + { + "Shared with %1$s" : "%1$s 님과 공유함", + "Shared with {email}" : "{email} 님과 공유함", + "Shared with %1$s by %2$s" : "%2$s 님이 %1$s 님과 공유함", + "Shared with {email} by {actor}" : "{actor} 님이 {email} 님과 공유함", + "Password for mail share sent to %1$s" : "이메일 공유 암호를 %1$s(으)로 보냄", + "Password for mail share sent to {email}" : "이메일 공유 암호를 {email}(으)로 보냄", + "Password for mail share sent to you" : "이메일 공유 암호를 내게 보냄", + "You shared %1$s with %2$s by mail" : "%2$s 님과 %1$s을(를) 이메일로 공유함", + "You shared {file} with {email} by mail" : "{email} 님과 {file}을(를) 이메일로 공유함", + "%3$s shared %1$s with %2$s by mail" : "%3$s 님이 %2$s 님과 %1$s을(를) 이메일로 공유함", + "{actor} shared {file} with {email} by mail" : "{actor} 님이 {email} 님과 {file}을(를) 이메일로 공유함", + "Password to access %1$s was sent to %2s" : "%1$s에 접근할 수 있는 암호를 %2$s(으)로 보냄", + "Password to access {file} was sent to {email}" : "{file}에 접근할 수 있는 암호를 {email}(으)로 보냄", + "Password to access %1$s was sent to you" : "%1$s에 접근할 수 있는 암호를 내게 보냄", + "Password to access {file} was sent to you" : "{file}에 접근할 수 있는 암호를 내게 보냄", + "Sharing %s failed, this item is already shared with %s" : "%s을(를) 공유할 수 없음, 이 항목이 이미 %s 님과 공유됨", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "자동 생성된 암호를 이메일로 보낼 수 없습니다. 개인 설정에서 올바른 이메일 주소를 입력한 다음 다시 시도하십시오.", + "Failed to send share by E-mail" : "이메일로 공유를 보낼 수 없음", + "%s shared »%s« with you" : "%s 님이 %s을(를) 공유함", + "%s shared »%s« with you." : "%s 님이 %s을(를) 공유했습니다.", + "Click the button below to open it." : "아래 단추를 눌러서 열 수 있습니다.", + "Open »%s«" : "%s 열기", + "%s via %s" : "%s(%s 경유)", + "Password to access »%s« shared to you by %s" : "%s에 접근할 수 있는 암호를 %s 님이 보냄", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s 님이 %s을(를) 공유했습니다.\n접근할 수 있는 링크가 포함된 별도의 이메일을 같이 전송했습니다.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s 님이 %s을(를) 공유했습니다. 접근할 수 있는 링크가 포함된 별도의 이메일을 같이 전송했습니다.", + "Password to access »%s«" : "%s에 접근할 수 있는 암호", + "It is protected with the following password: %s" : "다음 암호로 보호되어 있습니다: %s", + "Password to access »%s« shared with %s" : "%s에 접근할 수 있는 암호를 %s 님과 공유함", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "%s을(를) %s 님과 공유했습니다. 공유 정보를 이메일로 전송했습니다. %s 관리자의 보안 정책에 의하여 각각 공유 항목은 암호로 보호되어야 하며, 해당 암호를 직접 이메일로 보낼 수 없습니다. 수신자에게 이 암호를 다른 방법으로 직접 전달하십시오.", + "This is the password: %s" : "다음은 암호입니다: %s", + "You can choose a different password at any time in the share dialog." : "공유 대화 상자에서 언제든지 다른 암호를 선택할 수 있습니다.", + "Could not find share" : "공유를 찾을 수 없음", + "Share by mail" : "이메일로 공유", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "파일이나 폴더를 공유하는 개인화된 링크를 이메일 주소를 통해서 공유합니다.", + "Send password by mail" : "이메일로 암호 보내기", + "Enforce password protection" : "암호 보호 강제", + "%s shared »%s« with you on behalf of %s" : "%s 님이 %s을(를) 공유함(%s 님 대신)", + "Failed to create the E-mail" : "이메일을 생성할 수 없음", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "안녕하세요,\n\n%s 님이 여러분과 %s을(를) 공유했습니다(%s 님 대신).\n\n%s\n\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "안녕하세요,\n\n%s 님이 여러분과 %s을(를) 공유했습니다.\n\n%s\n\n", + "Cheers!" : "감사합니다!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "안녕하세요,<br><br>%s 님이 여러분과 <a href=\"%s\">%s</a>을(를) 공유했습니다(%s 님 대신).<br><br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "안녕하세요,<br><br>%s 님이 여러분과 <a href=\"%s\">%s</a>을(를) 공유했습니다.<br><br>" +}, +"nplurals=1; plural=0;"); diff --git a/apps/sharebymail/l10n/ko.json b/apps/sharebymail/l10n/ko.json new file mode 100644 index 00000000000..538b6621776 --- /dev/null +++ b/apps/sharebymail/l10n/ko.json @@ -0,0 +1,47 @@ +{ "translations": { + "Shared with %1$s" : "%1$s 님과 공유함", + "Shared with {email}" : "{email} 님과 공유함", + "Shared with %1$s by %2$s" : "%2$s 님이 %1$s 님과 공유함", + "Shared with {email} by {actor}" : "{actor} 님이 {email} 님과 공유함", + "Password for mail share sent to %1$s" : "이메일 공유 암호를 %1$s(으)로 보냄", + "Password for mail share sent to {email}" : "이메일 공유 암호를 {email}(으)로 보냄", + "Password for mail share sent to you" : "이메일 공유 암호를 내게 보냄", + "You shared %1$s with %2$s by mail" : "%2$s 님과 %1$s을(를) 이메일로 공유함", + "You shared {file} with {email} by mail" : "{email} 님과 {file}을(를) 이메일로 공유함", + "%3$s shared %1$s with %2$s by mail" : "%3$s 님이 %2$s 님과 %1$s을(를) 이메일로 공유함", + "{actor} shared {file} with {email} by mail" : "{actor} 님이 {email} 님과 {file}을(를) 이메일로 공유함", + "Password to access %1$s was sent to %2s" : "%1$s에 접근할 수 있는 암호를 %2$s(으)로 보냄", + "Password to access {file} was sent to {email}" : "{file}에 접근할 수 있는 암호를 {email}(으)로 보냄", + "Password to access %1$s was sent to you" : "%1$s에 접근할 수 있는 암호를 내게 보냄", + "Password to access {file} was sent to you" : "{file}에 접근할 수 있는 암호를 내게 보냄", + "Sharing %s failed, this item is already shared with %s" : "%s을(를) 공유할 수 없음, 이 항목이 이미 %s 님과 공유됨", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "자동 생성된 암호를 이메일로 보낼 수 없습니다. 개인 설정에서 올바른 이메일 주소를 입력한 다음 다시 시도하십시오.", + "Failed to send share by E-mail" : "이메일로 공유를 보낼 수 없음", + "%s shared »%s« with you" : "%s 님이 %s을(를) 공유함", + "%s shared »%s« with you." : "%s 님이 %s을(를) 공유했습니다.", + "Click the button below to open it." : "아래 단추를 눌러서 열 수 있습니다.", + "Open »%s«" : "%s 열기", + "%s via %s" : "%s(%s 경유)", + "Password to access »%s« shared to you by %s" : "%s에 접근할 수 있는 암호를 %s 님이 보냄", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s 님이 %s을(를) 공유했습니다.\n접근할 수 있는 링크가 포함된 별도의 이메일을 같이 전송했습니다.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s 님이 %s을(를) 공유했습니다. 접근할 수 있는 링크가 포함된 별도의 이메일을 같이 전송했습니다.", + "Password to access »%s«" : "%s에 접근할 수 있는 암호", + "It is protected with the following password: %s" : "다음 암호로 보호되어 있습니다: %s", + "Password to access »%s« shared with %s" : "%s에 접근할 수 있는 암호를 %s 님과 공유함", + "You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "%s을(를) %s 님과 공유했습니다. 공유 정보를 이메일로 전송했습니다. %s 관리자의 보안 정책에 의하여 각각 공유 항목은 암호로 보호되어야 하며, 해당 암호를 직접 이메일로 보낼 수 없습니다. 수신자에게 이 암호를 다른 방법으로 직접 전달하십시오.", + "This is the password: %s" : "다음은 암호입니다: %s", + "You can choose a different password at any time in the share dialog." : "공유 대화 상자에서 언제든지 다른 암호를 선택할 수 있습니다.", + "Could not find share" : "공유를 찾을 수 없음", + "Share by mail" : "이메일로 공유", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "파일이나 폴더를 공유하는 개인화된 링크를 이메일 주소를 통해서 공유합니다.", + "Send password by mail" : "이메일로 암호 보내기", + "Enforce password protection" : "암호 보호 강제", + "%s shared »%s« with you on behalf of %s" : "%s 님이 %s을(를) 공유함(%s 님 대신)", + "Failed to create the E-mail" : "이메일을 생성할 수 없음", + "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "안녕하세요,\n\n%s 님이 여러분과 %s을(를) 공유했습니다(%s 님 대신).\n\n%s\n\n", + "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "안녕하세요,\n\n%s 님이 여러분과 %s을(를) 공유했습니다.\n\n%s\n\n", + "Cheers!" : "감사합니다!", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "안녕하세요,<br><br>%s 님이 여러분과 <a href=\"%s\">%s</a>을(를) 공유했습니다(%s 님 대신).<br><br>", + "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "안녕하세요,<br><br>%s 님이 여러분과 <a href=\"%s\">%s</a>을(를) 공유했습니다.<br><br>" +},"pluralForm" :"nplurals=1; plural=0;" +}
\ No newline at end of file diff --git a/apps/sharebymail/l10n/nb.js b/apps/sharebymail/l10n/nb.js index 77ff5479075..c054547dc3e 100644 --- a/apps/sharebymail/l10n/nb.js +++ b/apps/sharebymail/l10n/nb.js @@ -12,13 +12,15 @@ OC.L10N.register( "You shared {file} with {email} by mail" : "Du delte {file} med {email} via e-post", "%3$s shared %1$s with %2$s by mail" : "%3$s delte %1$s med %2$s via e-post", "{actor} shared {file} with {email} by mail" : "{actor} delte {file} med {email} via e-post", + "Password to access %1$s was sent to %2s" : "Passord for tilgang til %1$s sendt til %2s", + "Password to access {file} was sent to {email}" : "Passord for tilgang til {file} ble sendt til {email}", + "Password to access %1$s was sent to you" : "Passord for tilgang til %1$s ble sendt til deg", + "Password to access {file} was sent to you" : "Du ble tildelt passord for å benytte {file}", "Sharing %s failed, this item is already shared with %s" : "Deling %s feilet, dette elementet er allerede delt med %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Vi kan ikke sende det auto-genererte passordet. Angi en gyldig e-postadresse i dine personlige innstillinger og prøv igjen.", "Failed to send share by E-mail" : "Feilet når delingen skulle sendes på epost", "%s shared »%s« with you" : "%s delte »%s« med deg", - "%s shared »%s« with you on behalf of %s" : "%s delte »%s« med deg på vegne av %s", "%s shared »%s« with you." : "%s delte »%s« med deg.", - "%s shared »%s« with you on behalf of %s." : "%s delte »%s« med deg på vegne av %s.", "Click the button below to open it." : "Klikk på knappen nedenfor for å åpne den.", "Open »%s«" : "Åpne »%s«", "%s via %s" : "%s via %s", @@ -33,8 +35,10 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "Du kan velge et annet passord når som helst i delingsdialogvinduet.", "Could not find share" : "Delingen ble ikke funnet", "Share by mail" : "Del via e-post", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Tillater brukere å dele en personalisert lenke til ei fil eller mappe ved å skrive inn en e-postadresse.", "Send password by mail" : "Send passord via e-post", "Enforce password protection" : "Krev passordbeskyttelse", + "%s shared »%s« with you on behalf of %s" : "%s delte »%s« med deg på vegne av %s", "Failed to create the E-mail" : "Feilet ved opprettelse av epost", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hei,\n\n%s delte »%s« med deg på vegne av %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hei,\n\n%s delte »%s« med deg.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/nb.json b/apps/sharebymail/l10n/nb.json index 3c3e1fc30b8..896cc3b3729 100644 --- a/apps/sharebymail/l10n/nb.json +++ b/apps/sharebymail/l10n/nb.json @@ -10,13 +10,15 @@ "You shared {file} with {email} by mail" : "Du delte {file} med {email} via e-post", "%3$s shared %1$s with %2$s by mail" : "%3$s delte %1$s med %2$s via e-post", "{actor} shared {file} with {email} by mail" : "{actor} delte {file} med {email} via e-post", + "Password to access %1$s was sent to %2s" : "Passord for tilgang til %1$s sendt til %2s", + "Password to access {file} was sent to {email}" : "Passord for tilgang til {file} ble sendt til {email}", + "Password to access %1$s was sent to you" : "Passord for tilgang til %1$s ble sendt til deg", + "Password to access {file} was sent to you" : "Du ble tildelt passord for å benytte {file}", "Sharing %s failed, this item is already shared with %s" : "Deling %s feilet, dette elementet er allerede delt med %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Vi kan ikke sende det auto-genererte passordet. Angi en gyldig e-postadresse i dine personlige innstillinger og prøv igjen.", "Failed to send share by E-mail" : "Feilet når delingen skulle sendes på epost", "%s shared »%s« with you" : "%s delte »%s« med deg", - "%s shared »%s« with you on behalf of %s" : "%s delte »%s« med deg på vegne av %s", "%s shared »%s« with you." : "%s delte »%s« med deg.", - "%s shared »%s« with you on behalf of %s." : "%s delte »%s« med deg på vegne av %s.", "Click the button below to open it." : "Klikk på knappen nedenfor for å åpne den.", "Open »%s«" : "Åpne »%s«", "%s via %s" : "%s via %s", @@ -31,8 +33,10 @@ "You can choose a different password at any time in the share dialog." : "Du kan velge et annet passord når som helst i delingsdialogvinduet.", "Could not find share" : "Delingen ble ikke funnet", "Share by mail" : "Del via e-post", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Tillater brukere å dele en personalisert lenke til ei fil eller mappe ved å skrive inn en e-postadresse.", "Send password by mail" : "Send passord via e-post", "Enforce password protection" : "Krev passordbeskyttelse", + "%s shared »%s« with you on behalf of %s" : "%s delte »%s« med deg på vegne av %s", "Failed to create the E-mail" : "Feilet ved opprettelse av epost", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hei,\n\n%s delte »%s« med deg på vegne av %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hei,\n\n%s delte »%s« med deg.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/nl.js b/apps/sharebymail/l10n/nl.js index 87178916a62..0a3b2f0859c 100644 --- a/apps/sharebymail/l10n/nl.js +++ b/apps/sharebymail/l10n/nl.js @@ -12,13 +12,15 @@ OC.L10N.register( "You shared {file} with {email} by mail" : "Je deelde {file} met {email} via e-mail", "%3$s shared %1$s with %2$s by mail" : "%3$s deelde %1$s met %2$s via e-mail", "{actor} shared {file} with {email} by mail" : "{actor} deelde {file} met {email} via e-mail", + "Password to access %1$s was sent to %2s" : "Wachtwoord voor toegang tot %1$s is gestuurd naar %2s", + "Password to access {file} was sent to {email}" : "Wachtwoord voor toegang tot {file} is gestuurd naar {email}", + "Password to access %1$s was sent to you" : "Wachtwoord voor toegang tot %1$s is naar jou gestuurd", + "Password to access {file} was sent to you" : "Wachtwoord voor toegang tot {file} is naar jou gestuurd", "Sharing %s failed, this item is already shared with %s" : "Delen van %s is mislukt, omdat dit al gedeeld wordt met %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "We kunnen je geen automatisch gegenereerd wachtwoord toesturen. Vermeld een geldig e-mailadres in je persoonlijke instellingen en probeer het nogmaals.", "Failed to send share by E-mail" : "Fout bij delen via e-mail", "%s shared »%s« with you" : "%s deelde »%s« met jou", - "%s shared »%s« with you on behalf of %s" : "%s deelde »%s« met jou in naam van %s", "%s shared »%s« with you." : "%s deelde »%s« met jou.", - "%s shared »%s« with you on behalf of %s." : "%s deelde »%s« met jou namens %s.", "Click the button below to open it." : "Klik op onderstaande link om te openen.", "Open »%s«" : "Open »%s«", "%s via %s" : "%s via %s", @@ -33,8 +35,10 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "Je kunt in de Delen-dialoog altijd een ander wachtwoord kiezen.", "Could not find share" : "Kon gedeeld niet vinden", "Share by mail" : "Gedeeld via een E-mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Staat gebruikers toe om een gepersonaliseerde link of map te delen door een e-mailadres in te voegen.", "Send password by mail" : "Wachtwoord per E-mail verzenden", "Enforce password protection" : "Afdwingenwachtwoordbeveiliging", + "%s shared »%s« with you on behalf of %s" : "%s deelde »%s« met jou in naam van %s", "Failed to create the E-mail" : "Opmaken van de e-mail is mislukt", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hallo daar,\n\n%s deelde »%s« met jou namens %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hallo daar,\n\n%s deelde »%s« met jou.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/nl.json b/apps/sharebymail/l10n/nl.json index d1de92a795f..a2099c255a4 100644 --- a/apps/sharebymail/l10n/nl.json +++ b/apps/sharebymail/l10n/nl.json @@ -10,13 +10,15 @@ "You shared {file} with {email} by mail" : "Je deelde {file} met {email} via e-mail", "%3$s shared %1$s with %2$s by mail" : "%3$s deelde %1$s met %2$s via e-mail", "{actor} shared {file} with {email} by mail" : "{actor} deelde {file} met {email} via e-mail", + "Password to access %1$s was sent to %2s" : "Wachtwoord voor toegang tot %1$s is gestuurd naar %2s", + "Password to access {file} was sent to {email}" : "Wachtwoord voor toegang tot {file} is gestuurd naar {email}", + "Password to access %1$s was sent to you" : "Wachtwoord voor toegang tot %1$s is naar jou gestuurd", + "Password to access {file} was sent to you" : "Wachtwoord voor toegang tot {file} is naar jou gestuurd", "Sharing %s failed, this item is already shared with %s" : "Delen van %s is mislukt, omdat dit al gedeeld wordt met %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "We kunnen je geen automatisch gegenereerd wachtwoord toesturen. Vermeld een geldig e-mailadres in je persoonlijke instellingen en probeer het nogmaals.", "Failed to send share by E-mail" : "Fout bij delen via e-mail", "%s shared »%s« with you" : "%s deelde »%s« met jou", - "%s shared »%s« with you on behalf of %s" : "%s deelde »%s« met jou in naam van %s", "%s shared »%s« with you." : "%s deelde »%s« met jou.", - "%s shared »%s« with you on behalf of %s." : "%s deelde »%s« met jou namens %s.", "Click the button below to open it." : "Klik op onderstaande link om te openen.", "Open »%s«" : "Open »%s«", "%s via %s" : "%s via %s", @@ -31,8 +33,10 @@ "You can choose a different password at any time in the share dialog." : "Je kunt in de Delen-dialoog altijd een ander wachtwoord kiezen.", "Could not find share" : "Kon gedeeld niet vinden", "Share by mail" : "Gedeeld via een E-mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Staat gebruikers toe om een gepersonaliseerde link of map te delen door een e-mailadres in te voegen.", "Send password by mail" : "Wachtwoord per E-mail verzenden", "Enforce password protection" : "Afdwingenwachtwoordbeveiliging", + "%s shared »%s« with you on behalf of %s" : "%s deelde »%s« met jou in naam van %s", "Failed to create the E-mail" : "Opmaken van de e-mail is mislukt", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hallo daar,\n\n%s deelde »%s« met jou namens %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hallo daar,\n\n%s deelde »%s« met jou.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/pl.js b/apps/sharebymail/l10n/pl.js index a5a7d29c1ac..f41f74859d7 100644 --- a/apps/sharebymail/l10n/pl.js +++ b/apps/sharebymail/l10n/pl.js @@ -5,26 +5,39 @@ OC.L10N.register( "Shared with {email}" : "Współdzielone z {email}", "Shared with %1$s by %2$s" : "Współdzielone z %1$s przez %2$s", "Shared with {email} by {actor}" : "Współdzielone z {email} przez {actor}", + "Password for mail share sent to %1$s" : "Hasło do współdzielenia przez mail zostało wysłane do %1$s", + "Password for mail share sent to {email}" : "Hasło do współdzielenia przez mail zostało wysłane do {email}", + "Password for mail share sent to you" : "Hasło do współdzielenia przez mail zostało wysłane do Ciebie", "You shared %1$s with %2$s by mail" : "Współdzielisz %1$s z %2$s przez e-maila", "You shared {file} with {email} by mail" : "Współdzielisz {file} z {email} przez e-maila", "%3$s shared %1$s with %2$s by mail" : "%3$s współdzieli %1$s z %2$s przez e-maila", "{actor} shared {file} with {email} by mail" : "{actor} współdzieli {file} z {email} przez e-maila", + "Password to access %1$s was sent to %2s" : "Hasło dostepu do %1$s zostało wysłane do %2s", + "Password to access {file} was sent to {email}" : "Hasło dostępu do {file} zostało wysłane do {email}", + "Password to access %1$s was sent to you" : "Hasło dostępu do %1$s zostało wysłane do ciebie", + "Password to access {file} was sent to you" : "Hasło dostępu do {file} zostało wysłane do ciebie", "Sharing %s failed, this item is already shared with %s" : "Współdzielenie %s nie udało się, ten obiekt już jest współdzielony z %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nie można wysłać automatycznie wygenerowanego hasła. Proszę ustawić prawidłowy adres e-mail w ustawieniach osobistych i spróbować ponownie.", "Failed to send share by E-mail" : "Nie udało się wysłać współdzielenia przez e-maila", "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", - "%s shared »%s« with you on behalf of %s" : "%s współdzieli »%s« z tobą w imieniu %s", "%s shared »%s« with you." : "%s współdzieli »%s« z tobą.", - "%s shared »%s« with you on behalf of %s." : "%s współdzieli »%s« z tobą w imieniu %s.", "Click the button below to open it." : "Kliknij przycisk poniżej, żeby to otworzyć.", "Open »%s«" : "Otwórz »%s«", + "%s via %s" : "%s przez %s", "Password to access »%s« shared to you by %s" : "Hasło dostępu do »%s« jest udostępnione tobie przez %s", - "Password to access »%s«" : "Hasło do dostępu »%s«", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s współdzieli z Tobą »%s«.\nPowinieneś już otrzymać osobny e-mail zawierający link dostępowy.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s współdzieli »%s« z tobą. Powinieneś już otrzymać osobnego e-maila z linkiem do dostępu.", + "Password to access »%s«" : "Hasło do dostępu »%s«", "It is protected with the following password: %s" : "To jest chronione z nstępującym hasłem: %s", + "Password to access »%s« shared with %s" : "Hasło dostępu do »%s« zostało udostępnione %s", + "This is the password: %s" : "To jest hasło: %s", + "You can choose a different password at any time in the share dialog." : "Możesz zmienić hasło w okienku współdzielenia w dowolnym momencie.", "Could not find share" : "Nie można odnaleźć współdzielonego obiektu", "Share by mail" : "Współdzielone e-mailem", - "Send a personalized link to a file or folder by mail." : "Wyślij spersonalizowany link do pliku lub folderu e-mailem.", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Umożliwia współdzielenie spersonalizowanego linku do pliku lub folderu, umieszczając go w wiadomości e-mail.", "Send password by mail" : "Wyślij hasło e-mailem", + "Enforce password protection" : "Wymuś zabezpieczenie hasłem", + "%s shared »%s« with you on behalf of %s" : "%s współdzieli »%s« z tobą w imieniu %s", "Failed to create the E-mail" : "Nie udało się utworzyć e-maila", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hej,\n\n%s współdzieli »%s« z tobą w imieniu %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hej,\n\n%s współdzieli »%s« z tobą.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/pl.json b/apps/sharebymail/l10n/pl.json index 43768f6413c..256a9b837db 100644 --- a/apps/sharebymail/l10n/pl.json +++ b/apps/sharebymail/l10n/pl.json @@ -3,26 +3,39 @@ "Shared with {email}" : "Współdzielone z {email}", "Shared with %1$s by %2$s" : "Współdzielone z %1$s przez %2$s", "Shared with {email} by {actor}" : "Współdzielone z {email} przez {actor}", + "Password for mail share sent to %1$s" : "Hasło do współdzielenia przez mail zostało wysłane do %1$s", + "Password for mail share sent to {email}" : "Hasło do współdzielenia przez mail zostało wysłane do {email}", + "Password for mail share sent to you" : "Hasło do współdzielenia przez mail zostało wysłane do Ciebie", "You shared %1$s with %2$s by mail" : "Współdzielisz %1$s z %2$s przez e-maila", "You shared {file} with {email} by mail" : "Współdzielisz {file} z {email} przez e-maila", "%3$s shared %1$s with %2$s by mail" : "%3$s współdzieli %1$s z %2$s przez e-maila", "{actor} shared {file} with {email} by mail" : "{actor} współdzieli {file} z {email} przez e-maila", + "Password to access %1$s was sent to %2s" : "Hasło dostepu do %1$s zostało wysłane do %2s", + "Password to access {file} was sent to {email}" : "Hasło dostępu do {file} zostało wysłane do {email}", + "Password to access %1$s was sent to you" : "Hasło dostępu do %1$s zostało wysłane do ciebie", + "Password to access {file} was sent to you" : "Hasło dostępu do {file} zostało wysłane do ciebie", "Sharing %s failed, this item is already shared with %s" : "Współdzielenie %s nie udało się, ten obiekt już jest współdzielony z %s", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nie można wysłać automatycznie wygenerowanego hasła. Proszę ustawić prawidłowy adres e-mail w ustawieniach osobistych i spróbować ponownie.", "Failed to send share by E-mail" : "Nie udało się wysłać współdzielenia przez e-maila", "%s shared »%s« with you" : "%s współdzieli »%s« z tobą", - "%s shared »%s« with you on behalf of %s" : "%s współdzieli »%s« z tobą w imieniu %s", "%s shared »%s« with you." : "%s współdzieli »%s« z tobą.", - "%s shared »%s« with you on behalf of %s." : "%s współdzieli »%s« z tobą w imieniu %s.", "Click the button below to open it." : "Kliknij przycisk poniżej, żeby to otworzyć.", "Open »%s«" : "Otwórz »%s«", + "%s via %s" : "%s przez %s", "Password to access »%s« shared to you by %s" : "Hasło dostępu do »%s« jest udostępnione tobie przez %s", - "Password to access »%s«" : "Hasło do dostępu »%s«", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s współdzieli z Tobą »%s«.\nPowinieneś już otrzymać osobny e-mail zawierający link dostępowy.\n", "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s współdzieli »%s« z tobą. Powinieneś już otrzymać osobnego e-maila z linkiem do dostępu.", + "Password to access »%s«" : "Hasło do dostępu »%s«", "It is protected with the following password: %s" : "To jest chronione z nstępującym hasłem: %s", + "Password to access »%s« shared with %s" : "Hasło dostępu do »%s« zostało udostępnione %s", + "This is the password: %s" : "To jest hasło: %s", + "You can choose a different password at any time in the share dialog." : "Możesz zmienić hasło w okienku współdzielenia w dowolnym momencie.", "Could not find share" : "Nie można odnaleźć współdzielonego obiektu", "Share by mail" : "Współdzielone e-mailem", - "Send a personalized link to a file or folder by mail." : "Wyślij spersonalizowany link do pliku lub folderu e-mailem.", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Umożliwia współdzielenie spersonalizowanego linku do pliku lub folderu, umieszczając go w wiadomości e-mail.", "Send password by mail" : "Wyślij hasło e-mailem", + "Enforce password protection" : "Wymuś zabezpieczenie hasłem", + "%s shared »%s« with you on behalf of %s" : "%s współdzieli »%s« z tobą w imieniu %s", "Failed to create the E-mail" : "Nie udało się utworzyć e-maila", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Hej,\n\n%s współdzieli »%s« z tobą w imieniu %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Hej,\n\n%s współdzieli »%s« z tobą.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/pt_BR.js b/apps/sharebymail/l10n/pt_BR.js index 08e6e1b0191..19e142014b6 100644 --- a/apps/sharebymail/l10n/pt_BR.js +++ b/apps/sharebymail/l10n/pt_BR.js @@ -8,23 +8,25 @@ OC.L10N.register( "Password for mail share sent to %1$s" : "Senha para o correio compartilhado enviado para %1$s", "Password for mail share sent to {email}" : "Senha para o correio compartilhado enviado para {email}", "Password for mail share sent to you" : "Senha para o correio compartilhado enviado para você", - "You shared %1$s with %2$s by mail" : "Você compartilhou %1$s com %2$s por email", - "You shared {file} with {email} by mail" : "Você compartilhou {file} com {email} por email", - "%3$s shared %1$s with %2$s by mail" : "%3$s compartilou %1$s com %2$s por email", - "{actor} shared {file} with {email} by mail" : "{actor} compartilhou {file} com {email} por email", + "You shared %1$s with %2$s by mail" : "Você compartilhou %1$s com %2$s por e-mail", + "You shared {file} with {email} by mail" : "Você compartilhou {file} com {email} por e-mail", + "%3$s shared %1$s with %2$s by mail" : "%3$s compartilou %1$s com %2$s por e-mail", + "{actor} shared {file} with {email} by mail" : "{actor} compartilhou {file} com {email} por e-mail", + "Password to access %1$s was sent to %2s" : "A senha para acesso %1$s foi enviada para %2s", + "Password to access {file} was sent to {email}" : "A senha para acesso {file} foi enviada para {email}", + "Password to access %1$s was sent to you" : "A senha para acesso %1$s foi enviada para você", + "Password to access {file} was sent to you" : "A senha para acesso {file} foi enviada para você", "Sharing %s failed, this item is already shared with %s" : "O compartilhamento %s falhou, pois este item já está compartilhado com %s", - "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. por favor defina um email válido em sua configuração e tente novamente.", - "Failed to send share by E-mail" : "Falha ao enviar compartilhamento por email", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. por favor defina um e-mail válido em sua configuração e tente novamente.", + "Failed to send share by E-mail" : "Falha ao enviar compartilhamento por e-mail", "%s shared »%s« with you" : "%s compartilhou »%s« com você", - "%s shared »%s« with you on behalf of %s" : "%s compartilhou »%s« com você em nome de %s", "%s shared »%s« with you." : "%s compartilhou »%s« com você.", - "%s shared »%s« with you on behalf of %s." : "%s compartilhou »%s« com você em nome de %s.", "Click the button below to open it." : "Clique no botão abaixo para abrí-lo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s via %s", "Password to access »%s« shared to you by %s" : "Senha para acessar %s compartilhado com você por %s", - "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um email com um link para acessá-lo.\n", - "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um email com um link para acessá-lo.", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um e-mail com um link para acessá-lo.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um e-mail com um link para acessá-lo.", "Password to access »%s«" : "Senha para acessar »%s«", "It is protected with the following password: %s" : "Está protegido com a seguinte senha: %s", "Password to access »%s« shared with %s" : "Senha para acessar »%s« compartilhado com %s", @@ -32,13 +34,15 @@ OC.L10N.register( "This is the password: %s" : "Essa é a senha: %s", "You can choose a different password at any time in the share dialog." : "Você pode escolher uma senha diferente a qualquer momento no diálogo compartilhamento.", "Could not find share" : "Não foi possível encontrar o compartilhamento", - "Share by mail" : "Compartilhamento por email", - "Send password by mail" : "Enviar senha por email", + "Share by mail" : "Compartilhamento por e-mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite que os usuários compartilhem um link personalizado para um arquivo ou pasta, inserindo um endereço de e-mail.", + "Send password by mail" : "Enviar senha por e-mail", "Enforce password protection" : "Reforce a proteção por senha", - "Failed to create the E-mail" : "Falhou ao criar o email", + "%s shared »%s« with you on behalf of %s" : "%s compartilhou »%s« com você em nome de %s", + "Failed to create the E-mail" : "Falhou ao criar o e-mail", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Olá,\n%s compartilhou »%s« com você em nome de %s.\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Olá,\n%s compartilhou »%s« com você.\n%s\n", - "Cheers!" : "Saúde!", + "Cheers!" : "Saudações!", "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Olá,<br><br>%s compartilhou <a href=\"%s\">%s</a> com você em nome de %s.<br><br>", "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Olá,<br><br>%s compartilhou <a href=\"%s\">%s</a> com você.<br><br>" }, diff --git a/apps/sharebymail/l10n/pt_BR.json b/apps/sharebymail/l10n/pt_BR.json index 7daeb9bbcf9..4770ba490b6 100644 --- a/apps/sharebymail/l10n/pt_BR.json +++ b/apps/sharebymail/l10n/pt_BR.json @@ -6,23 +6,25 @@ "Password for mail share sent to %1$s" : "Senha para o correio compartilhado enviado para %1$s", "Password for mail share sent to {email}" : "Senha para o correio compartilhado enviado para {email}", "Password for mail share sent to you" : "Senha para o correio compartilhado enviado para você", - "You shared %1$s with %2$s by mail" : "Você compartilhou %1$s com %2$s por email", - "You shared {file} with {email} by mail" : "Você compartilhou {file} com {email} por email", - "%3$s shared %1$s with %2$s by mail" : "%3$s compartilou %1$s com %2$s por email", - "{actor} shared {file} with {email} by mail" : "{actor} compartilhou {file} com {email} por email", + "You shared %1$s with %2$s by mail" : "Você compartilhou %1$s com %2$s por e-mail", + "You shared {file} with {email} by mail" : "Você compartilhou {file} com {email} por e-mail", + "%3$s shared %1$s with %2$s by mail" : "%3$s compartilou %1$s com %2$s por e-mail", + "{actor} shared {file} with {email} by mail" : "{actor} compartilhou {file} com {email} por e-mail", + "Password to access %1$s was sent to %2s" : "A senha para acesso %1$s foi enviada para %2s", + "Password to access {file} was sent to {email}" : "A senha para acesso {file} foi enviada para {email}", + "Password to access %1$s was sent to you" : "A senha para acesso %1$s foi enviada para você", + "Password to access {file} was sent to you" : "A senha para acesso {file} foi enviada para você", "Sharing %s failed, this item is already shared with %s" : "O compartilhamento %s falhou, pois este item já está compartilhado com %s", - "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. por favor defina um email válido em sua configuração e tente novamente.", - "Failed to send share by E-mail" : "Falha ao enviar compartilhamento por email", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. por favor defina um e-mail válido em sua configuração e tente novamente.", + "Failed to send share by E-mail" : "Falha ao enviar compartilhamento por e-mail", "%s shared »%s« with you" : "%s compartilhou »%s« com você", - "%s shared »%s« with you on behalf of %s" : "%s compartilhou »%s« com você em nome de %s", "%s shared »%s« with you." : "%s compartilhou »%s« com você.", - "%s shared »%s« with you on behalf of %s." : "%s compartilhou »%s« com você em nome de %s.", "Click the button below to open it." : "Clique no botão abaixo para abrí-lo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s via %s", "Password to access »%s« shared to you by %s" : "Senha para acessar %s compartilhado com você por %s", - "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um email com um link para acessá-lo.\n", - "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um email com um link para acessá-lo.", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um e-mail com um link para acessá-lo.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um e-mail com um link para acessá-lo.", "Password to access »%s«" : "Senha para acessar »%s«", "It is protected with the following password: %s" : "Está protegido com a seguinte senha: %s", "Password to access »%s« shared with %s" : "Senha para acessar »%s« compartilhado com %s", @@ -30,13 +32,15 @@ "This is the password: %s" : "Essa é a senha: %s", "You can choose a different password at any time in the share dialog." : "Você pode escolher uma senha diferente a qualquer momento no diálogo compartilhamento.", "Could not find share" : "Não foi possível encontrar o compartilhamento", - "Share by mail" : "Compartilhamento por email", - "Send password by mail" : "Enviar senha por email", + "Share by mail" : "Compartilhamento por e-mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite que os usuários compartilhem um link personalizado para um arquivo ou pasta, inserindo um endereço de e-mail.", + "Send password by mail" : "Enviar senha por e-mail", "Enforce password protection" : "Reforce a proteção por senha", - "Failed to create the E-mail" : "Falhou ao criar o email", + "%s shared »%s« with you on behalf of %s" : "%s compartilhou »%s« com você em nome de %s", + "Failed to create the E-mail" : "Falhou ao criar o e-mail", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Olá,\n%s compartilhou »%s« com você em nome de %s.\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Olá,\n%s compartilhou »%s« com você.\n%s\n", - "Cheers!" : "Saúde!", + "Cheers!" : "Saudações!", "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you on behalf of %s.<br><br>" : "Olá,<br><br>%s compartilhou <a href=\"%s\">%s</a> com você em nome de %s.<br><br>", "Hey there,<br><br>%s shared <a href=\"%s\">%s</a> with you.<br><br>" : "Olá,<br><br>%s compartilhou <a href=\"%s\">%s</a> com você.<br><br>" },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/sharebymail/l10n/ru.js b/apps/sharebymail/l10n/ru.js index c339c8a82a8..48aefa4eb1b 100644 --- a/apps/sharebymail/l10n/ru.js +++ b/apps/sharebymail/l10n/ru.js @@ -12,13 +12,15 @@ OC.L10N.register( "You shared {file} with {email} by mail" : "Вы предоставили общий доступ к {file} для {email} по email", "%3$s shared %1$s with %2$s by mail" : "%3$s предоставил общий доступ к %1$s для %2$s по email", "{actor} shared {file} with {email} by mail" : "{actor} предоставил общий доступ к {file} для {email} по email", + "Password to access %1$s was sent to %2s" : "Пароль для доступа к %1$s отправлен %2s", + "Password to access {file} was sent to {email}" : "Пароль для доступа к {file} отправлен {email}", + "Password to access %1$s was sent to you" : "Пароль для доступа к %1$s отправлен вам", + "Password to access {file} was sent to you" : "Пароль для доступа к {file} отправлен вам", "Sharing %s failed, this item is already shared with %s" : "Не удалось поделиться %s, к этому элементу уже предоставлен общий доступ для %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Не удаётся отправить вам автоматически созданный пароль. Укажите верный адрес email в своих личных настройках и попробуйте снова.", "Failed to send share by E-mail" : "Не удалось поделиться по e-mail", "%s shared »%s« with you" : "%s поделился »%s« с вами", - "%s shared »%s« with you on behalf of %s" : "%s поделился »%s« с вами от имени %s", "%s shared »%s« with you." : "%s поделился »%s« с вами.", - "%s shared »%s« with you on behalf of %s." : "%s поделился »%s« с вами от имени %s.", "Click the button below to open it." : "Для открытия нажмите на кнопку ниже.", "Open »%s«" : "Открыть »%s«", "%s via %s" : "%s через %s", @@ -33,8 +35,10 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "В любой момент можно выбрать другой паорль в диалоге «Общий доступ».", "Could not find share" : "Не удалось найти общий ресурс", "Share by mail" : "Поделиться по почте", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Позволяет пользователям делиться персонализированной ссылкой на файл или каталог, введя адрес электронной почты.", "Send password by mail" : "Отправить пароль почтой", "Enforce password protection" : "Требовать защиту паролем", + "%s shared »%s« with you on behalf of %s" : "%s поделился »%s« с вами от имени %s", "Failed to create the E-mail" : "Не удалось создать e-mail", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Привет,\n\n%s предоставил вам общий доступ к »%s« от имени %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Привет,\n\n%s предоставил вам общий доступ к »%s«.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/ru.json b/apps/sharebymail/l10n/ru.json index 7e49354ab96..9eba949b568 100644 --- a/apps/sharebymail/l10n/ru.json +++ b/apps/sharebymail/l10n/ru.json @@ -10,13 +10,15 @@ "You shared {file} with {email} by mail" : "Вы предоставили общий доступ к {file} для {email} по email", "%3$s shared %1$s with %2$s by mail" : "%3$s предоставил общий доступ к %1$s для %2$s по email", "{actor} shared {file} with {email} by mail" : "{actor} предоставил общий доступ к {file} для {email} по email", + "Password to access %1$s was sent to %2s" : "Пароль для доступа к %1$s отправлен %2s", + "Password to access {file} was sent to {email}" : "Пароль для доступа к {file} отправлен {email}", + "Password to access %1$s was sent to you" : "Пароль для доступа к %1$s отправлен вам", + "Password to access {file} was sent to you" : "Пароль для доступа к {file} отправлен вам", "Sharing %s failed, this item is already shared with %s" : "Не удалось поделиться %s, к этому элементу уже предоставлен общий доступ для %s", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Не удаётся отправить вам автоматически созданный пароль. Укажите верный адрес email в своих личных настройках и попробуйте снова.", "Failed to send share by E-mail" : "Не удалось поделиться по e-mail", "%s shared »%s« with you" : "%s поделился »%s« с вами", - "%s shared »%s« with you on behalf of %s" : "%s поделился »%s« с вами от имени %s", "%s shared »%s« with you." : "%s поделился »%s« с вами.", - "%s shared »%s« with you on behalf of %s." : "%s поделился »%s« с вами от имени %s.", "Click the button below to open it." : "Для открытия нажмите на кнопку ниже.", "Open »%s«" : "Открыть »%s«", "%s via %s" : "%s через %s", @@ -31,8 +33,10 @@ "You can choose a different password at any time in the share dialog." : "В любой момент можно выбрать другой паорль в диалоге «Общий доступ».", "Could not find share" : "Не удалось найти общий ресурс", "Share by mail" : "Поделиться по почте", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Позволяет пользователям делиться персонализированной ссылкой на файл или каталог, введя адрес электронной почты.", "Send password by mail" : "Отправить пароль почтой", "Enforce password protection" : "Требовать защиту паролем", + "%s shared »%s« with you on behalf of %s" : "%s поделился »%s« с вами от имени %s", "Failed to create the E-mail" : "Не удалось создать e-mail", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Привет,\n\n%s предоставил вам общий доступ к »%s« от имени %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Привет,\n\n%s предоставил вам общий доступ к »%s«.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/tr.js b/apps/sharebymail/l10n/tr.js index 2521ebd0e7d..7bc91670ec3 100644 --- a/apps/sharebymail/l10n/tr.js +++ b/apps/sharebymail/l10n/tr.js @@ -12,13 +12,15 @@ OC.L10N.register( "You shared {file} with {email} by mail" : "{file} dosyasını {email} ile e-posta üzerinden paylaştınız", "%3$s shared %1$s with %2$s by mail" : "%3$s, %1$s dosyasını %2$s ile e-posta üzerinden paylaştı", "{actor} shared {file} with {email} by mail" : "{actor}, {file} dosyasını {email} ile e-posta üzerinden paylaştı", + "Password to access %1$s was sent to %2s" : "%1$s dosyasına erişim parolası %2s adresine gönderildi", + "Password to access {file} was sent to {email}" : "{file} dosyasına erişim parolası {email} adresine gönderildi", + "Password to access %1$s was sent to you" : "%1$s dosyasına erişim parolası size gönderildi", + "Password to access {file} was sent to you" : "{file} dosyasına erişim parolası size gönderildi", "Sharing %s failed, this item is already shared with %s" : "%s paylaşılamadı, bu öge zaten %s ile paylaşılmış", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Otomatik üretilen parola size gönderilemedi. Lütfen kişisel ayarlarınızdan geçerli bir e-posta adresi ayarlayın ve yeniden deneyin.", "Failed to send share by E-mail" : "Paylaşım e-postası gönderilemedi", "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", - "%s shared »%s« with you on behalf of %s" : "%s sizinle »%s« ögesini %s adına paylaştı", "%s shared »%s« with you." : "%s sizinle »%s« ögesini paylaştı.", - "%s shared »%s« with you on behalf of %s." : "%s sizinle »%s« ögesini %s adına paylaştı.", "Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.", "Open »%s«" : "»%s« Aç", "%s via %s" : "%s, %s aracılığıyla", @@ -33,8 +35,10 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "İstediğiniz zaman paylaşım bölümünden farklı bir parola belirtebilirsiniz.", "Could not find share" : "Paylaşım bulunamadı", "Share by mail" : "E-posta ile paylaş", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Kullanıcıların bir e-posta adresi yazarak bir dosya ya da klasör için kişisel bir bağlantı paylaşmasını sağlar.", "Send password by mail" : "Parolayı e-posta ile gönder", "Enforce password protection" : "Parola koruması dayatılsın", + "%s shared »%s« with you on behalf of %s" : "%s sizinle »%s« ögesini %s adına paylaştı", "Failed to create the E-mail" : "E-posta oluşturulamadı", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Merhaba,\n\n%s sizinle »%s« ögesini %s adına paylaştı.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Merhaba,\n\n%s sizinle »%s« ögesini paylaştı.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/tr.json b/apps/sharebymail/l10n/tr.json index 87c6a29f011..996f79021da 100644 --- a/apps/sharebymail/l10n/tr.json +++ b/apps/sharebymail/l10n/tr.json @@ -10,13 +10,15 @@ "You shared {file} with {email} by mail" : "{file} dosyasını {email} ile e-posta üzerinden paylaştınız", "%3$s shared %1$s with %2$s by mail" : "%3$s, %1$s dosyasını %2$s ile e-posta üzerinden paylaştı", "{actor} shared {file} with {email} by mail" : "{actor}, {file} dosyasını {email} ile e-posta üzerinden paylaştı", + "Password to access %1$s was sent to %2s" : "%1$s dosyasına erişim parolası %2s adresine gönderildi", + "Password to access {file} was sent to {email}" : "{file} dosyasına erişim parolası {email} adresine gönderildi", + "Password to access %1$s was sent to you" : "%1$s dosyasına erişim parolası size gönderildi", + "Password to access {file} was sent to you" : "{file} dosyasına erişim parolası size gönderildi", "Sharing %s failed, this item is already shared with %s" : "%s paylaşılamadı, bu öge zaten %s ile paylaşılmış", "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Otomatik üretilen parola size gönderilemedi. Lütfen kişisel ayarlarınızdan geçerli bir e-posta adresi ayarlayın ve yeniden deneyin.", "Failed to send share by E-mail" : "Paylaşım e-postası gönderilemedi", "%s shared »%s« with you" : "%s sizinle »%s« ögesini paylaştı", - "%s shared »%s« with you on behalf of %s" : "%s sizinle »%s« ögesini %s adına paylaştı", "%s shared »%s« with you." : "%s sizinle »%s« ögesini paylaştı.", - "%s shared »%s« with you on behalf of %s." : "%s sizinle »%s« ögesini %s adına paylaştı.", "Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.", "Open »%s«" : "»%s« Aç", "%s via %s" : "%s, %s aracılığıyla", @@ -31,8 +33,10 @@ "You can choose a different password at any time in the share dialog." : "İstediğiniz zaman paylaşım bölümünden farklı bir parola belirtebilirsiniz.", "Could not find share" : "Paylaşım bulunamadı", "Share by mail" : "E-posta ile paylaş", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Kullanıcıların bir e-posta adresi yazarak bir dosya ya da klasör için kişisel bir bağlantı paylaşmasını sağlar.", "Send password by mail" : "Parolayı e-posta ile gönder", "Enforce password protection" : "Parola koruması dayatılsın", + "%s shared »%s« with you on behalf of %s" : "%s sizinle »%s« ögesini %s adına paylaştı", "Failed to create the E-mail" : "E-posta oluşturulamadı", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "Merhaba,\n\n%s sizinle »%s« ögesini %s adına paylaştı.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "Merhaba,\n\n%s sizinle »%s« ögesini paylaştı.\n\n%s\n\n", diff --git a/apps/sharebymail/l10n/zh_CN.js b/apps/sharebymail/l10n/zh_CN.js index 62a37921712..7061af4747d 100644 --- a/apps/sharebymail/l10n/zh_CN.js +++ b/apps/sharebymail/l10n/zh_CN.js @@ -5,16 +5,32 @@ OC.L10N.register( "Shared with {email}" : "用 {email} 分享", "Shared with %1$s by %2$s" : "由 %2$s 共享给 %1$s", "Shared with {email} by {actor}" : "由 {actor} 通过 {email} 分享", + "Password for mail share sent to {email}" : "Password for mail share sent to {email}", "You shared %1$s with %2$s by mail" : "您通过邮件把 %1$s 分享给了 %2$s", "You shared {file} with {email} by mail" : "您通过邮件 {email} 分享了 {file} ", "%3$s shared %1$s with %2$s by mail" : "%3$s 通过邮件将 %1$s 分享给了 %2$s", "{actor} shared {file} with {email} by mail" : "{actor} 共享 {file} 于 {email} 通过邮件", + "Password to access %1$s was sent to %2s" : "访问 %1$s 的密码被发送给 %2s", + "Password to access {file} was sent to {email}" : "访问 {file} 的密码被发送给 {email}", + "Password to access %1$s was sent to you" : "访问 %1$s 的密码已发送给你", + "Password to access {file} was sent to you" : "访问 {file} 的密码已发送给你", "Sharing %s failed, this item is already shared with %s" : "共享 %s 失败, 该项目已经共享于 %s", "Failed to send share by E-mail" : "通过电子邮件发送共享失败", "%s shared »%s« with you" : "%s 共享 »%s« 与你", + "%s shared »%s« with you." : "%s 与你分享分享 »%s« ", + "Click the button below to open it." : "点击下面的按钮打开它。", + "Open »%s«" : "打开 »%s«", + "%s via %s" : "%s通过%s", + "Password to access »%s«" : "访问 »%s« 的密码", + "This is the password: %s" : "这是密码: %s", + "You can choose a different password at any time in the share dialog." : "您可以随时在共享对话框中选择不同的密码。", + "Could not find share" : "没有发现共享", + "Share by mail" : "通过邮件共享", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "允许用户通过电子邮件地址来共享文件或文件夹的个性化链接。", + "Send password by mail" : "通过电子邮件发送密码", + "Enforce password protection" : "强制密码保护", "%s shared »%s« with you on behalf of %s" : "%s 共享 »%s« 和你代表 %s", "Failed to create the E-mail" : "创建电子邮件失败", - "Could not find share" : "没有发现共享", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "嘿那儿,\n\n%s 共享 »%s« 与你代表 %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "嘿那儿,\n\n%s 共享 »%s« 与你.\n\n%s\n\n", "Cheers!" : "干杯!", diff --git a/apps/sharebymail/l10n/zh_CN.json b/apps/sharebymail/l10n/zh_CN.json index e4cdb219608..96be46b80b2 100644 --- a/apps/sharebymail/l10n/zh_CN.json +++ b/apps/sharebymail/l10n/zh_CN.json @@ -3,16 +3,32 @@ "Shared with {email}" : "用 {email} 分享", "Shared with %1$s by %2$s" : "由 %2$s 共享给 %1$s", "Shared with {email} by {actor}" : "由 {actor} 通过 {email} 分享", + "Password for mail share sent to {email}" : "Password for mail share sent to {email}", "You shared %1$s with %2$s by mail" : "您通过邮件把 %1$s 分享给了 %2$s", "You shared {file} with {email} by mail" : "您通过邮件 {email} 分享了 {file} ", "%3$s shared %1$s with %2$s by mail" : "%3$s 通过邮件将 %1$s 分享给了 %2$s", "{actor} shared {file} with {email} by mail" : "{actor} 共享 {file} 于 {email} 通过邮件", + "Password to access %1$s was sent to %2s" : "访问 %1$s 的密码被发送给 %2s", + "Password to access {file} was sent to {email}" : "访问 {file} 的密码被发送给 {email}", + "Password to access %1$s was sent to you" : "访问 %1$s 的密码已发送给你", + "Password to access {file} was sent to you" : "访问 {file} 的密码已发送给你", "Sharing %s failed, this item is already shared with %s" : "共享 %s 失败, 该项目已经共享于 %s", "Failed to send share by E-mail" : "通过电子邮件发送共享失败", "%s shared »%s« with you" : "%s 共享 »%s« 与你", + "%s shared »%s« with you." : "%s 与你分享分享 »%s« ", + "Click the button below to open it." : "点击下面的按钮打开它。", + "Open »%s«" : "打开 »%s«", + "%s via %s" : "%s通过%s", + "Password to access »%s«" : "访问 »%s« 的密码", + "This is the password: %s" : "这是密码: %s", + "You can choose a different password at any time in the share dialog." : "您可以随时在共享对话框中选择不同的密码。", + "Could not find share" : "没有发现共享", + "Share by mail" : "通过邮件共享", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "允许用户通过电子邮件地址来共享文件或文件夹的个性化链接。", + "Send password by mail" : "通过电子邮件发送密码", + "Enforce password protection" : "强制密码保护", "%s shared »%s« with you on behalf of %s" : "%s 共享 »%s« 和你代表 %s", "Failed to create the E-mail" : "创建电子邮件失败", - "Could not find share" : "没有发现共享", "Hey there,\n\n%s shared »%s« with you on behalf of %s.\n\n%s\n\n" : "嘿那儿,\n\n%s 共享 »%s« 与你代表 %s.\n\n%s\n\n", "Hey there,\n\n%s shared »%s« with you.\n\n%s\n\n" : "嘿那儿,\n\n%s 共享 »%s« 与你.\n\n%s\n\n", "Cheers!" : "干杯!", diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index 7e0f7c5071e..3f618678ce1 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -345,7 +345,6 @@ class ShareByMailProvider implements IShareProvider { $this->sendMailNotification( $share->getNode()->getName(), $link, - $share->getShareOwner(), $share->getSharedBy(), $share->getSharedWith() ); @@ -367,37 +366,26 @@ class ShareByMailProvider implements IShareProvider { /** * @param string $filename * @param string $link - * @param string $owner * @param string $initiator * @param string $shareWith * @throws \Exception If mail couldn't be sent */ protected function sendMailNotification($filename, $link, - $owner, $initiator, $shareWith) { - $ownerUser = $this->userManager->get($owner); $initiatorUser = $this->userManager->get($initiator); - $ownerDisplayName = ($ownerUser instanceof IUser) ? $ownerUser->getDisplayName() : $owner; $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; - if ($owner === $initiator) { - $subject = (string)$this->l->t('%s shared »%s« with you', array($ownerDisplayName, $filename)); - } else { - $subject = (string)$this->l->t('%s shared »%s« with you on behalf of %s', array($ownerDisplayName, $filename, $initiatorDisplayName)); - } + $subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename)); $message = $this->mailer->createMessage(); $emailTemplate = $this->mailer->createEMailTemplate(); $emailTemplate->addHeader(); - $emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$ownerDisplayName, $filename]), false); - if ($owner === $initiator) { - $text = $this->l->t('%s shared »%s« with you.', [$ownerDisplayName, $filename]); - } else { - $text= $this->l->t('%s shared »%s« with you on behalf of %s.', [$ownerDisplayName, $filename, $initiator]); - } + $emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false); + $text = $this->l->t('%s shared »%s« with you.', [$initiatorDisplayName, $filename]); + $emailTemplate->addBodyText( $text . ' ' . $this->l->t('Click the button below to open it.'), $text @@ -414,7 +402,7 @@ class ShareByMailProvider implements IShareProvider { $senderName = $this->l->t( '%s via %s', [ - $ownerDisplayName, + $initiatorDisplayName, $instanceName ] ); @@ -422,9 +410,9 @@ class ShareByMailProvider implements IShareProvider { // The "Reply-To" is set to the sharer if an mail address is configured // also the default footer contains a "Do not reply" which needs to be adjusted. - $ownerEmail = $ownerUser->getEMailAddress(); - if($ownerEmail !== null) { - $message->setReplyTo([$ownerEmail => $ownerDisplayName]); + $initiatorEmail = $initiatorUser->getEMailAddress(); + if($initiatorEmail !== null) { + $message->setReplyTo([$initiatorEmail => $initiatorDisplayName]); $emailTemplate->addFooter($instanceName . ' - ' . $this->defaults->getSlogan()); } else { $emailTemplate->addFooter(); diff --git a/apps/sharebymail/tests/ShareByMailProviderTest.php b/apps/sharebymail/tests/ShareByMailProviderTest.php index 269f8e8f414..e649a9dbd0b 100644 --- a/apps/sharebymail/tests/ShareByMailProviderTest.php +++ b/apps/sharebymail/tests/ShareByMailProviderTest.php @@ -766,12 +766,12 @@ class ShareByMailProviderTest extends TestCase { $provider = $this->getInstance(); $user = $this->createMock(IUser::class); $this->userManager - ->expects($this->exactly(2)) + ->expects($this->once()) ->method('get') ->with('OwnerUser') ->willReturn($user); $user - ->expects($this->exactly(2)) + ->expects($this->once()) ->method('getDisplayName') ->willReturn('Mrs. Owner User'); $message = $this->createMock(Message::class); @@ -867,29 +867,18 @@ class ShareByMailProviderTest extends TestCase { 'file.txt', 'https://example.com/file.txt', 'OwnerUser', - 'OwnerUser', 'john@doe.com', ]); } public function testSendMailNotificationWithDifferentUserAndNoUserEmail() { $provider = $this->getInstance(); - $ownerUser = $this->createMock(IUser::class); $initiatorUser = $this->createMock(IUser::class); $this->userManager - ->expects($this->at(0)) - ->method('get') - ->with('OwnerUser') - ->willReturn($ownerUser); - $this->userManager - ->expects($this->at(1)) + ->expects($this->once()) ->method('get') ->with('InitiatorUser') ->willReturn($initiatorUser); - $ownerUser - ->expects($this->once()) - ->method('getDisplayName') - ->willReturn('Mrs. Owner User'); $initiatorUser ->expects($this->once()) ->method('getDisplayName') @@ -910,13 +899,13 @@ class ShareByMailProviderTest extends TestCase { $template ->expects($this->once()) ->method('addHeading') - ->with('Mrs. Owner User shared »file.txt« with you'); + ->with('Mr. Initiator User shared »file.txt« with you'); $template ->expects($this->once()) ->method('addBodyText') ->with( - 'Mrs. Owner User shared »file.txt« with you on behalf of InitiatorUser. Click the button below to open it.', - 'Mrs. Owner User shared »file.txt« with you on behalf of InitiatorUser.' + 'Mr. Initiator User shared »file.txt« with you. Click the button below to open it.', + 'Mr. Initiator User shared »file.txt« with you.' ); $template ->expects($this->once()) @@ -937,12 +926,8 @@ class ShareByMailProviderTest extends TestCase { ->expects($this->once()) ->method('setFrom') ->with([ - \OCP\Util::getDefaultEmailAddress('UnitTestCloud') => 'Mrs. Owner User via UnitTestCloud' + \OCP\Util::getDefaultEmailAddress('UnitTestCloud') => 'Mr. Initiator User via UnitTestCloud' ]); - $ownerUser - ->expects($this->once()) - ->method('getEMailAddress') - ->willReturn(null); $message ->expects($this->never()) ->method('setReplyTo'); @@ -953,7 +938,7 @@ class ShareByMailProviderTest extends TestCase { $message ->expects($this->once()) ->method('setSubject') - ->willReturn('Mrs. Owner User shared »file.txt« with you'); + ->willReturn('Mr. Initiator User shared »file.txt« with you'); $template ->expects($this->once()) ->method('renderText') @@ -981,7 +966,6 @@ class ShareByMailProviderTest extends TestCase { [ 'file.txt', 'https://example.com/file.txt', - 'OwnerUser', 'InitiatorUser', 'john@doe.com', ]); diff --git a/apps/systemtags/l10n/cs.js b/apps/systemtags/l10n/cs.js index d0f50c593dc..4789010525a 100644 --- a/apps/systemtags/l10n/cs.js +++ b/apps/systemtags/l10n/cs.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (neviditelný)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové tagy</strong> souboru byly upraveny", "Collaborative tags" : "Značky pro spolupráci", + "Create and edit collaborative tags. These tags affect all users." : "Vytvářejte a upravujte značky pro spolupráci. Tyto značky ovlivní všechny uživatele.", + "Select tag …" : "Vyberte značku …", "Name" : "Název", "Delete" : "Smazat", "Public" : "Veřejné", diff --git a/apps/systemtags/l10n/cs.json b/apps/systemtags/l10n/cs.json index 4f602fd9b7a..dbf7f5be2dd 100644 --- a/apps/systemtags/l10n/cs.json +++ b/apps/systemtags/l10n/cs.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (neviditelný)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové tagy</strong> souboru byly upraveny", "Collaborative tags" : "Značky pro spolupráci", + "Create and edit collaborative tags. These tags affect all users." : "Vytvářejte a upravujte značky pro spolupráci. Tyto značky ovlivní všechny uživatele.", + "Select tag …" : "Vyberte značku …", "Name" : "Název", "Delete" : "Smazat", "Public" : "Veřejné", diff --git a/apps/systemtags/l10n/de.js b/apps/systemtags/l10n/de.js index 8890255ed27..d9a3e688aba 100644 --- a/apps/systemtags/l10n/de.js +++ b/apps/systemtags/l10n/de.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (unsichtbar)", "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert", "Collaborative tags" : "Zusammenarbeits-Tags", + "Create and edit collaborative tags. These tags affect all users." : "Ersttele und bearbeite Zusammenarbeits-Tags. Diese Tags betreffen alle Benutzer.", + "Select tag …" : "Tag wählen ...", "Name" : "Name", "Delete" : "Löschen", "Public" : "Öffentlich", diff --git a/apps/systemtags/l10n/de.json b/apps/systemtags/l10n/de.json index 02fdeb80137..da66aeab4f5 100644 --- a/apps/systemtags/l10n/de.json +++ b/apps/systemtags/l10n/de.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (unsichtbar)", "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert", "Collaborative tags" : "Zusammenarbeits-Tags", + "Create and edit collaborative tags. These tags affect all users." : "Ersttele und bearbeite Zusammenarbeits-Tags. Diese Tags betreffen alle Benutzer.", + "Select tag …" : "Tag wählen ...", "Name" : "Name", "Delete" : "Löschen", "Public" : "Öffentlich", diff --git a/apps/systemtags/l10n/de_DE.js b/apps/systemtags/l10n/de_DE.js index b0c68b393d9..2a54747145a 100644 --- a/apps/systemtags/l10n/de_DE.js +++ b/apps/systemtags/l10n/de_DE.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (unsichtbar)", "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert", "Collaborative tags" : "Gemeinsame Tags", + "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie Zusammenarbeits-Tags. Diese Tags betreffen alle Benutzer.", + "Select tag …" : "Tag wählen ...", "Name" : "Name", "Delete" : "Löschen", "Public" : "Öffentlich", diff --git a/apps/systemtags/l10n/de_DE.json b/apps/systemtags/l10n/de_DE.json index dde01ca5722..b3db89c4291 100644 --- a/apps/systemtags/l10n/de_DE.json +++ b/apps/systemtags/l10n/de_DE.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (unsichtbar)", "<strong>System tags</strong> for a file have been modified" : "<strong>System-Tags</strong> für eine Datei wurden geändert", "Collaborative tags" : "Gemeinsame Tags", + "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie Zusammenarbeits-Tags. Diese Tags betreffen alle Benutzer.", + "Select tag …" : "Tag wählen ...", "Name" : "Name", "Delete" : "Löschen", "Public" : "Öffentlich", diff --git a/apps/systemtags/l10n/es.js b/apps/systemtags/l10n/es.js index b4527b90ee3..d380ab58271 100644 --- a/apps/systemtags/l10n/es.js +++ b/apps/systemtags/l10n/es.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible)", "<strong>System tags</strong> for a file have been modified" : "Se han modificado las <strong>etiquetas de sistema</strong> de un archivo", "Collaborative tags" : "Etiquetas colaborativas", + "Create and edit collaborative tags. These tags affect all users." : "Crea y edita etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios.", + "Select tag …" : "Selecciona etiqueta...", "Name" : "Nombre", "Delete" : "Borrar", "Public" : "Público", diff --git a/apps/systemtags/l10n/es.json b/apps/systemtags/l10n/es.json index 486e73ab5c5..51bb3668f6f 100644 --- a/apps/systemtags/l10n/es.json +++ b/apps/systemtags/l10n/es.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (invisible)", "<strong>System tags</strong> for a file have been modified" : "Se han modificado las <strong>etiquetas de sistema</strong> de un archivo", "Collaborative tags" : "Etiquetas colaborativas", + "Create and edit collaborative tags. These tags affect all users." : "Crea y edita etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios.", + "Select tag …" : "Selecciona etiqueta...", "Name" : "Nombre", "Delete" : "Borrar", "Public" : "Público", diff --git a/apps/systemtags/l10n/es_MX.js b/apps/systemtags/l10n/es_MX.js index b0ab0534c92..cc0f3ed3b93 100644 --- a/apps/systemtags/l10n/es_MX.js +++ b/apps/systemtags/l10n/es_MX.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", + "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", "Delete" : "Borrar", "Public" : "Público", diff --git a/apps/systemtags/l10n/es_MX.json b/apps/systemtags/l10n/es_MX.json index 601cb331a23..39d40dd6d9b 100644 --- a/apps/systemtags/l10n/es_MX.json +++ b/apps/systemtags/l10n/es_MX.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", + "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", "Delete" : "Borrar", "Public" : "Público", diff --git a/apps/systemtags/l10n/fr.js b/apps/systemtags/l10n/fr.js index 34190e45eff..56335c2abf8 100644 --- a/apps/systemtags/l10n/fr.js +++ b/apps/systemtags/l10n/fr.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible)", "<strong>System tags</strong> for a file have been modified" : "<strong>Les étiquettes collaboratives</strong> pour un fichier ont été modifiées", "Collaborative tags" : "Étiquettes collaboratives ", + "Create and edit collaborative tags. These tags affect all users." : "Créer et modifier des étiquettes collaboratives. Ces étiquettes vont affecter tous les utilisateurs.", + "Select tag …" : "Sélectionner une étiquette…", "Name" : "Nom", "Delete" : "Supprimer", "Public" : "Public", diff --git a/apps/systemtags/l10n/fr.json b/apps/systemtags/l10n/fr.json index 27068e3ec47..2d2396dc785 100644 --- a/apps/systemtags/l10n/fr.json +++ b/apps/systemtags/l10n/fr.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (invisible)", "<strong>System tags</strong> for a file have been modified" : "<strong>Les étiquettes collaboratives</strong> pour un fichier ont été modifiées", "Collaborative tags" : "Étiquettes collaboratives ", + "Create and edit collaborative tags. These tags affect all users." : "Créer et modifier des étiquettes collaboratives. Ces étiquettes vont affecter tous les utilisateurs.", + "Select tag …" : "Sélectionner une étiquette…", "Name" : "Nom", "Delete" : "Supprimer", "Public" : "Public", diff --git a/apps/systemtags/l10n/is.js b/apps/systemtags/l10n/is.js index ea55c55683d..57a121de3e9 100644 --- a/apps/systemtags/l10n/is.js +++ b/apps/systemtags/l10n/is.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (ósýnilegt)", "<strong>System tags</strong> for a file have been modified" : "<strong>Kerfismerkjum</strong> á skrá hefur verið breytt", "Collaborative tags" : "Samstarfsmerkingar", + "Create and edit collaborative tags. These tags affect all users." : "Búðu til og breyttu merkjum fyrir samstarfsupplýsingar. Þessi merki hafa áhrif á alla notendur.", + "Select tag …" : "Veldu merki ...", "Name" : "Heiti", "Delete" : "Eyða", "Public" : "Opinbert", diff --git a/apps/systemtags/l10n/is.json b/apps/systemtags/l10n/is.json index 1a78c0a03e1..de25ad69d13 100644 --- a/apps/systemtags/l10n/is.json +++ b/apps/systemtags/l10n/is.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (ósýnilegt)", "<strong>System tags</strong> for a file have been modified" : "<strong>Kerfismerkjum</strong> á skrá hefur verið breytt", "Collaborative tags" : "Samstarfsmerkingar", + "Create and edit collaborative tags. These tags affect all users." : "Búðu til og breyttu merkjum fyrir samstarfsupplýsingar. Þessi merki hafa áhrif á alla notendur.", + "Select tag …" : "Veldu merki ...", "Name" : "Heiti", "Delete" : "Eyða", "Public" : "Opinbert", diff --git a/apps/systemtags/l10n/ko.js b/apps/systemtags/l10n/ko.js index 10eb1cf229e..ad00ec504b3 100644 --- a/apps/systemtags/l10n/ko.js +++ b/apps/systemtags/l10n/ko.js @@ -2,13 +2,56 @@ OC.L10N.register( "systemtags", { "Tags" : "태그", + "Update" : "업데이트", + "Create" : "만들기", + "Select tag…" : "태그 선택…", "Tagged files" : "태그 된 파일", - "Select tags to filter by" : "필터링 할 태그 선택", - "Please select tags to filter by" : "필터링 할 태그 선택", - "No files found for the selected tags" : "선택한 태그에 대한 파일을 찾을 수 없음", + "Select tags to filter by" : "필터링할 태그 선택", + "No tags found" : "태그를 찾을 수 없음", + "Please select tags to filter by" : "필터링할 태그를 선택하십시오", + "No files found for the selected tags" : "선택한 태그가 붙은 파일을 찾을 수 없음", + "Added system tag %1$s" : "시스템 태그 %1$s을(를) 추가함", + "Added system tag {systemtag}" : "시스템 태그 {systemtag}을(를) 추가함", + "%1$s added system tag %2$s" : "%1$s 님이 시스템 태그 %2$s을(를) 추가함", + "{actor} added system tag {systemtag}" : "{actor} 님이 시스템 태그 {systemtag}을(를) 추가함", + "Removed system tag %1$s" : "시스템 태그 %1$s을(를) 삭제함", + "Removed system tag {systemtag}" : "시스템 태그 {systemtag}을(를) 삭제함", + "%1$s removed system tag %2$s" : "%1$ 님이 시스템 태그 %2$s을(를) 삭제함", + "{actor} removed system tag {systemtag}" : "{actor} 님이 시스템 태그 {systemtag}을(를) 삭제함", + "You created system tag %1$s" : "시스템 태그 %1$s을(를) 생성함", + "You created system tag {systemtag}" : "시스템 태그 {systemtag}을(를) 생성함", + "%1$s created system tag %2$s" : "%1$s 님이 시스템 태그 %2$s을(를) 생성함", + "{actor} created system tag {systemtag}" : "{actor} 님이 시스템 태그 {systemtag}을(를) 생성함", + "You deleted system tag %1$s" : "시스템 태그 %1$s을(를) 삭제함", + "You deleted system tag {systemtag}" : "시스템 태그 {systemtag}을(를) 삭제함", + "%1$s deleted system tag %2$s" : "%1$ 님이 시스템 태그 %2$s을(를) 삭제함", + "{actor} deleted system tag {systemtag}" : "{actor} 님이 시스템 태그 {systemtag}을(를) 삭제함", + "You updated system tag %2$s to %1$s" : "시스템 태그 %2$s을(를) %1$s(으)로 업데이트함", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "시스템 태그 {oldsystemtag}을(를) {newsystemtag}(으)로 업데이트함", + "%1$s updated system tag %3$s to %2$s" : "%1$s 님이 시스템 태그 %3$s을(를) %2$s(으)로 업데이트함", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} 님이 시스템 태그 {oldsystemtag}을(를) {newsystemtag}(으)로 업데이트함", + "You added system tag %2$s to %1$s" : "시스템 태그 %2$s을(를) %1$s에 추가함", + "You added system tag {systemtag} to {file}" : "시스템 태그 {systemtag}을(를) {file}에 추가함", + "%1$s added system tag %3$s to %2$s" : "%1$s 님이 시스템 태그 %3$s을(를) %2$s에 추가함", + "{actor} added system tag {systemtag} to {file}" : "{actor} 님이 시스템 태그 {systemtag}을(를) {file}에 추가함", + "You removed system tag %2$s from %1$s" : "시스템 태그 %2$s을(를) %1$s에서 삭제함", + "You removed system tag {systemtag} from {file}" : "시스템 태그 {systemtag}을(를) {file}에서 삭제함", + "%1$s removed system tag %3$s from %2$s" : "%1$s 님이 시스템 태그 %3$s을(를) %2$s에서 삭제함", + "{actor} removed system tag {systemtag} from {file}" : "{actor} 님이 시스템 태그 {systemtag}을(를) {file}에서 삭제함", + "%s (restricted)" : "%s(제한됨)", + "%s (invisible)" : "%s(숨겨짐)", + "<strong>System tags</strong> for a file have been modified" : "파일의 <strong>시스템 태그</strong>가 수정됨", + "Collaborative tags" : "협업 태그", + "Create and edit collaborative tags. These tags affect all users." : "협업 태그를 만들고 수정합니다. 이 태그는 모든 사용자에게 영향을 줍니다.", + "Select tag …" : "태그 선택 …", + "Name" : "이름", + "Delete" : "삭제", + "Public" : "공개", + "Restricted" : "제한됨", + "Invisible" : "숨겨짐", + "Reset" : "재설정", "No files in here" : "여기에 파일 없음", "No entries found in this folder" : "이 폴더에 항목 없음", - "Name" : "이름", "Size" : "크기", "Modified" : "수정됨" }, diff --git a/apps/systemtags/l10n/ko.json b/apps/systemtags/l10n/ko.json index f5a9052168c..8b5b630333c 100644 --- a/apps/systemtags/l10n/ko.json +++ b/apps/systemtags/l10n/ko.json @@ -1,12 +1,55 @@ { "translations": { "Tags" : "태그", + "Update" : "업데이트", + "Create" : "만들기", + "Select tag…" : "태그 선택…", "Tagged files" : "태그 된 파일", - "Select tags to filter by" : "필터링 할 태그 선택", - "Please select tags to filter by" : "필터링 할 태그 선택", - "No files found for the selected tags" : "선택한 태그에 대한 파일을 찾을 수 없음", + "Select tags to filter by" : "필터링할 태그 선택", + "No tags found" : "태그를 찾을 수 없음", + "Please select tags to filter by" : "필터링할 태그를 선택하십시오", + "No files found for the selected tags" : "선택한 태그가 붙은 파일을 찾을 수 없음", + "Added system tag %1$s" : "시스템 태그 %1$s을(를) 추가함", + "Added system tag {systemtag}" : "시스템 태그 {systemtag}을(를) 추가함", + "%1$s added system tag %2$s" : "%1$s 님이 시스템 태그 %2$s을(를) 추가함", + "{actor} added system tag {systemtag}" : "{actor} 님이 시스템 태그 {systemtag}을(를) 추가함", + "Removed system tag %1$s" : "시스템 태그 %1$s을(를) 삭제함", + "Removed system tag {systemtag}" : "시스템 태그 {systemtag}을(를) 삭제함", + "%1$s removed system tag %2$s" : "%1$ 님이 시스템 태그 %2$s을(를) 삭제함", + "{actor} removed system tag {systemtag}" : "{actor} 님이 시스템 태그 {systemtag}을(를) 삭제함", + "You created system tag %1$s" : "시스템 태그 %1$s을(를) 생성함", + "You created system tag {systemtag}" : "시스템 태그 {systemtag}을(를) 생성함", + "%1$s created system tag %2$s" : "%1$s 님이 시스템 태그 %2$s을(를) 생성함", + "{actor} created system tag {systemtag}" : "{actor} 님이 시스템 태그 {systemtag}을(를) 생성함", + "You deleted system tag %1$s" : "시스템 태그 %1$s을(를) 삭제함", + "You deleted system tag {systemtag}" : "시스템 태그 {systemtag}을(를) 삭제함", + "%1$s deleted system tag %2$s" : "%1$ 님이 시스템 태그 %2$s을(를) 삭제함", + "{actor} deleted system tag {systemtag}" : "{actor} 님이 시스템 태그 {systemtag}을(를) 삭제함", + "You updated system tag %2$s to %1$s" : "시스템 태그 %2$s을(를) %1$s(으)로 업데이트함", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "시스템 태그 {oldsystemtag}을(를) {newsystemtag}(으)로 업데이트함", + "%1$s updated system tag %3$s to %2$s" : "%1$s 님이 시스템 태그 %3$s을(를) %2$s(으)로 업데이트함", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} 님이 시스템 태그 {oldsystemtag}을(를) {newsystemtag}(으)로 업데이트함", + "You added system tag %2$s to %1$s" : "시스템 태그 %2$s을(를) %1$s에 추가함", + "You added system tag {systemtag} to {file}" : "시스템 태그 {systemtag}을(를) {file}에 추가함", + "%1$s added system tag %3$s to %2$s" : "%1$s 님이 시스템 태그 %3$s을(를) %2$s에 추가함", + "{actor} added system tag {systemtag} to {file}" : "{actor} 님이 시스템 태그 {systemtag}을(를) {file}에 추가함", + "You removed system tag %2$s from %1$s" : "시스템 태그 %2$s을(를) %1$s에서 삭제함", + "You removed system tag {systemtag} from {file}" : "시스템 태그 {systemtag}을(를) {file}에서 삭제함", + "%1$s removed system tag %3$s from %2$s" : "%1$s 님이 시스템 태그 %3$s을(를) %2$s에서 삭제함", + "{actor} removed system tag {systemtag} from {file}" : "{actor} 님이 시스템 태그 {systemtag}을(를) {file}에서 삭제함", + "%s (restricted)" : "%s(제한됨)", + "%s (invisible)" : "%s(숨겨짐)", + "<strong>System tags</strong> for a file have been modified" : "파일의 <strong>시스템 태그</strong>가 수정됨", + "Collaborative tags" : "협업 태그", + "Create and edit collaborative tags. These tags affect all users." : "협업 태그를 만들고 수정합니다. 이 태그는 모든 사용자에게 영향을 줍니다.", + "Select tag …" : "태그 선택 …", + "Name" : "이름", + "Delete" : "삭제", + "Public" : "공개", + "Restricted" : "제한됨", + "Invisible" : "숨겨짐", + "Reset" : "재설정", "No files in here" : "여기에 파일 없음", "No entries found in this folder" : "이 폴더에 항목 없음", - "Name" : "이름", "Size" : "크기", "Modified" : "수정됨" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/systemtags/l10n/nb.js b/apps/systemtags/l10n/nb.js index 925a2d1ef4f..d80c14ff3e4 100644 --- a/apps/systemtags/l10n/nb.js +++ b/apps/systemtags/l10n/nb.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (usynlig)", "<strong>System tags</strong> for a file have been modified" : "<strong>System-merkelapper</strong> for en fil er endret", "Collaborative tags" : "Felles merkelapper", + "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmessige merkelapper. Disse har innvirkning på alle brukere.", + "Select tag …" : "Velg merkelapp…", "Name" : "Navn", "Delete" : "Slett", "Public" : "Offentlig", diff --git a/apps/systemtags/l10n/nb.json b/apps/systemtags/l10n/nb.json index fb70bfeed84..befa7af4f8a 100644 --- a/apps/systemtags/l10n/nb.json +++ b/apps/systemtags/l10n/nb.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (usynlig)", "<strong>System tags</strong> for a file have been modified" : "<strong>System-merkelapper</strong> for en fil er endret", "Collaborative tags" : "Felles merkelapper", + "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmessige merkelapper. Disse har innvirkning på alle brukere.", + "Select tag …" : "Velg merkelapp…", "Name" : "Navn", "Delete" : "Slett", "Public" : "Offentlig", diff --git a/apps/systemtags/l10n/nl.js b/apps/systemtags/l10n/nl.js index 439f4db03d5..a778fc7ce7d 100644 --- a/apps/systemtags/l10n/nl.js +++ b/apps/systemtags/l10n/nl.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (onzichtbaar)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systeemmarkeringen</strong> voor een bestand zijn gewijzigd", "Collaborative tags" : "Samenwerk markeringen", + "Create and edit collaborative tags. These tags affect all users." : "Maak en bewerk samenwerkingstags. Deze tags gelden voor alle gebruikers.", + "Select tag …" : "Selecteer tag …", "Name" : "Naam", "Delete" : "Verwijder", "Public" : "Openbaar", diff --git a/apps/systemtags/l10n/nl.json b/apps/systemtags/l10n/nl.json index 5a7866cd04b..1915c7550b0 100644 --- a/apps/systemtags/l10n/nl.json +++ b/apps/systemtags/l10n/nl.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (onzichtbaar)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systeemmarkeringen</strong> voor een bestand zijn gewijzigd", "Collaborative tags" : "Samenwerk markeringen", + "Create and edit collaborative tags. These tags affect all users." : "Maak en bewerk samenwerkingstags. Deze tags gelden voor alle gebruikers.", + "Select tag …" : "Selecteer tag …", "Name" : "Naam", "Delete" : "Verwijder", "Public" : "Openbaar", diff --git a/apps/systemtags/l10n/pl.js b/apps/systemtags/l10n/pl.js index 8c1ea397f8e..a53057c79b0 100644 --- a/apps/systemtags/l10n/pl.js +++ b/apps/systemtags/l10n/pl.js @@ -42,6 +42,8 @@ OC.L10N.register( "%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", + "Create and edit collaborative tags. These tags affect all users." : "Utwórz i edytuj tagi współpracy. Te tagi mają wpływ na wszystkich użytkowników.", + "Select tag …" : "Wybierz tag ...", "Name" : "Nazwa", "Delete" : "Usuń", "Public" : "Publiczne", diff --git a/apps/systemtags/l10n/pl.json b/apps/systemtags/l10n/pl.json index 57474002e69..b16312a452b 100644 --- a/apps/systemtags/l10n/pl.json +++ b/apps/systemtags/l10n/pl.json @@ -40,6 +40,8 @@ "%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", + "Create and edit collaborative tags. These tags affect all users." : "Utwórz i edytuj tagi współpracy. Te tagi mają wpływ na wszystkich użytkowników.", + "Select tag …" : "Wybierz tag ...", "Name" : "Nazwa", "Delete" : "Usuń", "Public" : "Publiczne", diff --git a/apps/systemtags/l10n/pt_BR.js b/apps/systemtags/l10n/pt_BR.js index cae367c449d..cacfea73625 100644 --- a/apps/systemtags/l10n/pt_BR.js +++ b/apps/systemtags/l10n/pt_BR.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (invisível)", "<strong>System tags</strong> for a file have been modified" : "<strong>As etiquetas de sistema</strong> para um arquivo foram modificadas", "Collaborative tags" : "Etiquetas colaborativas", + "Create and edit collaborative tags. These tags affect all users." : "Crie e edite etiquetas colaborativas. Estas etiquetas afetam todos os usuários.", + "Select tag …" : "Selecionar etiqueta...", "Name" : "Nome", "Delete" : "Excluir", "Public" : "Público", diff --git a/apps/systemtags/l10n/pt_BR.json b/apps/systemtags/l10n/pt_BR.json index 01bd5185198..7ad9d4ad83f 100644 --- a/apps/systemtags/l10n/pt_BR.json +++ b/apps/systemtags/l10n/pt_BR.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (invisível)", "<strong>System tags</strong> for a file have been modified" : "<strong>As etiquetas de sistema</strong> para um arquivo foram modificadas", "Collaborative tags" : "Etiquetas colaborativas", + "Create and edit collaborative tags. These tags affect all users." : "Crie e edite etiquetas colaborativas. Estas etiquetas afetam todos os usuários.", + "Select tag …" : "Selecionar etiqueta...", "Name" : "Nome", "Delete" : "Excluir", "Public" : "Público", diff --git a/apps/systemtags/l10n/ru.js b/apps/systemtags/l10n/ru.js index d32f7159dc0..f9dc271256d 100644 --- a/apps/systemtags/l10n/ru.js +++ b/apps/systemtags/l10n/ru.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (невидимые)", "<strong>System tags</strong> for a file have been modified" : "<strong>Системные метки</strong> файла были изменены", "Collaborative tags" : "Совместные метки", + "Create and edit collaborative tags. These tags affect all users." : "Создание и изменение меток совместной работы. Эти метки влияют на всех пользователей.", + "Select tag …" : "Выберите метку…", "Name" : "Имя", "Delete" : "Удалить", "Public" : "Открытый", diff --git a/apps/systemtags/l10n/ru.json b/apps/systemtags/l10n/ru.json index 84438433c52..47e123f28a6 100644 --- a/apps/systemtags/l10n/ru.json +++ b/apps/systemtags/l10n/ru.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (невидимые)", "<strong>System tags</strong> for a file have been modified" : "<strong>Системные метки</strong> файла были изменены", "Collaborative tags" : "Совместные метки", + "Create and edit collaborative tags. These tags affect all users." : "Создание и изменение меток совместной работы. Эти метки влияют на всех пользователей.", + "Select tag …" : "Выберите метку…", "Name" : "Имя", "Delete" : "Удалить", "Public" : "Открытый", diff --git a/apps/systemtags/l10n/tr.js b/apps/systemtags/l10n/tr.js index 9e9b1aa2963..e425aed1f2e 100644 --- a/apps/systemtags/l10n/tr.js +++ b/apps/systemtags/l10n/tr.js @@ -42,6 +42,8 @@ OC.L10N.register( "%s (invisible)" : "%s (gizli)", "<strong>System tags</strong> for a file have been modified" : "Bir dosyanın <strong>sistem etiketleri</strong> değiştirildi", "Collaborative tags" : "İşbirliği etiketleri", + "Create and edit collaborative tags. These tags affect all users." : "İşbirliği etiketlerini oluşturun ve düzenleyin. Bu etiketler tüm kullanıcıları etkiler.", + "Select tag …" : "Etiket seçin...", "Name" : "Ad", "Delete" : "Sil", "Public" : "Herkese açık", diff --git a/apps/systemtags/l10n/tr.json b/apps/systemtags/l10n/tr.json index 0e56462da7e..ab28172ffc8 100644 --- a/apps/systemtags/l10n/tr.json +++ b/apps/systemtags/l10n/tr.json @@ -40,6 +40,8 @@ "%s (invisible)" : "%s (gizli)", "<strong>System tags</strong> for a file have been modified" : "Bir dosyanın <strong>sistem etiketleri</strong> değiştirildi", "Collaborative tags" : "İşbirliği etiketleri", + "Create and edit collaborative tags. These tags affect all users." : "İşbirliği etiketlerini oluşturun ve düzenleyin. Bu etiketler tüm kullanıcıları etkiler.", + "Select tag …" : "Etiket seçin...", "Name" : "Ad", "Delete" : "Sil", "Public" : "Herkese açık", diff --git a/apps/systemtags/l10n/zh_CN.js b/apps/systemtags/l10n/zh_CN.js index c4a3602828a..4d998b335bb 100644 --- a/apps/systemtags/l10n/zh_CN.js +++ b/apps/systemtags/l10n/zh_CN.js @@ -16,32 +16,34 @@ OC.L10N.register( "{actor} added system tag {systemtag}" : "{actor} 已添加的系统标签 {systemtag}", "Removed system tag %1$s" : "已移除的系统标签 %1$s", "Removed system tag {systemtag}" : "已移除的系统标签 {systemtag}", - "%1$s removed system tag %2$s" : "%1$s 已移除的系统标签 %2$s", - "{actor} removed system tag {systemtag}" : "{actor} 已移除的系统标签 {systemtag}", - "You created system tag %1$s" : "您已创建的系统标签 %1$s", - "You created system tag {systemtag}" : "已创建系统标签 {systemtag}", + "%1$s removed system tag %2$s" : "%1$s 删除了系统标签 %2$s", + "{actor} removed system tag {systemtag}" : "{actor} 删除了系统标签 {systemtag}", + "You created system tag %1$s" : "您创建了系统标签 %1$s", + "You created system tag {systemtag}" : "您创建了系统标签 {systemtag}", "%1$s created system tag %2$s" : "%1$s 创建了系统标签 %2$s", - "{actor} created system tag {systemtag}" : "{actor} 已创建系统标签 {systemtag}", - "You deleted system tag %1$s" : "删除了系统标签 %1$s", - "You deleted system tag {systemtag}" : "您已删除系统标签 {systemtag}", + "{actor} created system tag {systemtag}" : "{actor} 创建了系统标签 {systemtag}", + "You deleted system tag %1$s" : "您删除了系统标签 %1$s", + "You deleted system tag {systemtag}" : "您删除了系统标签 {systemtag}", "%1$s deleted system tag %2$s" : "%1$s 删除了系统标签 %2$s", - "{actor} deleted system tag {systemtag}" : "{actor} 删除系统标签 {systemtag}", - "You updated system tag %2$s to %1$s" : "您已将系统标签 %2$s 更新为 %1$s", - "You updated system tag {oldsystemtag} to {newsystemtag}" : "您已将系统标签 {oldsystemtag} 更新为 {newsystemtag}", - "%1$s updated system tag %3$s to %2$s" : "%1$s 更新了系统标签 %3$s 为 %2$s", - "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor}更新系统标签{oldsystemtag}到{newsystemtag}", - "You added system tag %2$s to %1$s" : "你填加系统标签%2$s到%1$s", - "You added system tag {systemtag} to {file}" : "你添加了系统标记 {systemtag} 到 {file}", - "%1$s added system tag %3$s to %2$s" : "%1$s 添加系统标记 %3$s 到 %2$s", - "{actor} added system tag {systemtag} to {file}" : "{actor} 添加系统标记 {systemtag} 到 {file}", - "You removed system tag %2$s from %1$s" : "你移除的系统标记 %2$s 于 %1$s", - "You removed system tag {systemtag} from {file}" : "你移除了系统标记 {systemtag} 从 {file}", - "%1$s removed system tag %3$s from %2$s" : "%1$s 移除了系统标记 %3$s 从 %2$s", - "{actor} removed system tag {systemtag} from {file}" : "{actor} 移除了系统标记 {systemtag} 从 {file}", + "{actor} deleted system tag {systemtag}" : "{actor} 删除了系统标签 {systemtag}", + "You updated system tag %2$s to %1$s" : "您已经将系统标签 %2$s 更新为 %1$s", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "您已经将系统标签 {oldsystemtag} 更新为 {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$s 已经将系统标签 %3$s 更新为 %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} 已经将系统标签 {oldsystemtag} 更新为 {newsystemtag}", + "You added system tag %2$s to %1$s" : "您为 %1$s 填加了系统标签 %2$s", + "You added system tag {systemtag} to {file}" : "您为 {file} 添加了系统标签 {systemtag}", + "%1$s added system tag %3$s to %2$s" : "%1$s 为 %2$s 添加了系统标签 %3$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} 为 {file} 添加了系统标签 {systemtag}", + "You removed system tag %2$s from %1$s" : "您从 %1$s 移除了系统标签 %2$s", + "You removed system tag {systemtag} from {file}" : "您从 {file} 移除了系统标签 {systemtag}.", + "%1$s removed system tag %3$s from %2$s" : "%1$s 从 %2$s 移除了系统标签 %3$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} 从 {file} 中移除了系统标签 {systemtag}", "%s (restricted)" : "%s (受限)", "%s (invisible)" : "%s (不可见)", "<strong>System tags</strong> for a file have been modified" : "已更改的文件的<strong>系统标签</strong> ", - "Collaborative tags" : "协同标记", + "Collaborative tags" : "协同标签", + "Create and edit collaborative tags. These tags affect all users." : "创建并编辑协同标签. 这些标签影响全部用户.", + "Select tag …" : "选择标签...", "Name" : "名称", "Delete" : "删除", "Public" : "公开", diff --git a/apps/systemtags/l10n/zh_CN.json b/apps/systemtags/l10n/zh_CN.json index d34852451ed..4d53fabe757 100644 --- a/apps/systemtags/l10n/zh_CN.json +++ b/apps/systemtags/l10n/zh_CN.json @@ -14,32 +14,34 @@ "{actor} added system tag {systemtag}" : "{actor} 已添加的系统标签 {systemtag}", "Removed system tag %1$s" : "已移除的系统标签 %1$s", "Removed system tag {systemtag}" : "已移除的系统标签 {systemtag}", - "%1$s removed system tag %2$s" : "%1$s 已移除的系统标签 %2$s", - "{actor} removed system tag {systemtag}" : "{actor} 已移除的系统标签 {systemtag}", - "You created system tag %1$s" : "您已创建的系统标签 %1$s", - "You created system tag {systemtag}" : "已创建系统标签 {systemtag}", + "%1$s removed system tag %2$s" : "%1$s 删除了系统标签 %2$s", + "{actor} removed system tag {systemtag}" : "{actor} 删除了系统标签 {systemtag}", + "You created system tag %1$s" : "您创建了系统标签 %1$s", + "You created system tag {systemtag}" : "您创建了系统标签 {systemtag}", "%1$s created system tag %2$s" : "%1$s 创建了系统标签 %2$s", - "{actor} created system tag {systemtag}" : "{actor} 已创建系统标签 {systemtag}", - "You deleted system tag %1$s" : "删除了系统标签 %1$s", - "You deleted system tag {systemtag}" : "您已删除系统标签 {systemtag}", + "{actor} created system tag {systemtag}" : "{actor} 创建了系统标签 {systemtag}", + "You deleted system tag %1$s" : "您删除了系统标签 %1$s", + "You deleted system tag {systemtag}" : "您删除了系统标签 {systemtag}", "%1$s deleted system tag %2$s" : "%1$s 删除了系统标签 %2$s", - "{actor} deleted system tag {systemtag}" : "{actor} 删除系统标签 {systemtag}", - "You updated system tag %2$s to %1$s" : "您已将系统标签 %2$s 更新为 %1$s", - "You updated system tag {oldsystemtag} to {newsystemtag}" : "您已将系统标签 {oldsystemtag} 更新为 {newsystemtag}", - "%1$s updated system tag %3$s to %2$s" : "%1$s 更新了系统标签 %3$s 为 %2$s", - "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor}更新系统标签{oldsystemtag}到{newsystemtag}", - "You added system tag %2$s to %1$s" : "你填加系统标签%2$s到%1$s", - "You added system tag {systemtag} to {file}" : "你添加了系统标记 {systemtag} 到 {file}", - "%1$s added system tag %3$s to %2$s" : "%1$s 添加系统标记 %3$s 到 %2$s", - "{actor} added system tag {systemtag} to {file}" : "{actor} 添加系统标记 {systemtag} 到 {file}", - "You removed system tag %2$s from %1$s" : "你移除的系统标记 %2$s 于 %1$s", - "You removed system tag {systemtag} from {file}" : "你移除了系统标记 {systemtag} 从 {file}", - "%1$s removed system tag %3$s from %2$s" : "%1$s 移除了系统标记 %3$s 从 %2$s", - "{actor} removed system tag {systemtag} from {file}" : "{actor} 移除了系统标记 {systemtag} 从 {file}", + "{actor} deleted system tag {systemtag}" : "{actor} 删除了系统标签 {systemtag}", + "You updated system tag %2$s to %1$s" : "您已经将系统标签 %2$s 更新为 %1$s", + "You updated system tag {oldsystemtag} to {newsystemtag}" : "您已经将系统标签 {oldsystemtag} 更新为 {newsystemtag}", + "%1$s updated system tag %3$s to %2$s" : "%1$s 已经将系统标签 %3$s 更新为 %2$s", + "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} 已经将系统标签 {oldsystemtag} 更新为 {newsystemtag}", + "You added system tag %2$s to %1$s" : "您为 %1$s 填加了系统标签 %2$s", + "You added system tag {systemtag} to {file}" : "您为 {file} 添加了系统标签 {systemtag}", + "%1$s added system tag %3$s to %2$s" : "%1$s 为 %2$s 添加了系统标签 %3$s", + "{actor} added system tag {systemtag} to {file}" : "{actor} 为 {file} 添加了系统标签 {systemtag}", + "You removed system tag %2$s from %1$s" : "您从 %1$s 移除了系统标签 %2$s", + "You removed system tag {systemtag} from {file}" : "您从 {file} 移除了系统标签 {systemtag}.", + "%1$s removed system tag %3$s from %2$s" : "%1$s 从 %2$s 移除了系统标签 %3$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} 从 {file} 中移除了系统标签 {systemtag}", "%s (restricted)" : "%s (受限)", "%s (invisible)" : "%s (不可见)", "<strong>System tags</strong> for a file have been modified" : "已更改的文件的<strong>系统标签</strong> ", - "Collaborative tags" : "协同标记", + "Collaborative tags" : "协同标签", + "Create and edit collaborative tags. These tags affect all users." : "创建并编辑协同标签. 这些标签影响全部用户.", + "Select tag …" : "选择标签...", "Name" : "名称", "Delete" : "删除", "Public" : "公开", diff --git a/apps/theming/css/settings-admin.css b/apps/theming/css/settings-admin.css index 60b9c080ad6..ef3c9f68b27 100644 --- a/apps/theming/css/settings-admin.css +++ b/apps/theming/css/settings-admin.css @@ -1,5 +1,10 @@ #theming input { - width: 17em; + width: 230px; +} + +#theming input:focus, +#theming input:active { + padding-right: 30px; } #theming .upload-logo-field { @@ -21,10 +26,20 @@ display: inline-block; visibility: hidden; } -#theming form .theme-undo { +form.uploadButton { + width: 356px; +} +#theming form .theme-undo, +#theming .theme-remove-bg { + cursor: pointer; + opacity: .3; + padding: 7px; + vertical-align: top; + display: inline-block; + float: right; position: relative; top: 4px; - left: 158px; + right: 0px; visibility: visible; } #theming input[type='text']:focus + .theme-undo, @@ -38,19 +53,44 @@ #theming label span { display: inline-block; - min-width: 90px; + min-width: 120px; padding: 8px 0px; + vertical-align: top; } -#theming .icon-upload, #theming .icon-loading-small { display: inline-flex; padding: 8px; margin: 2px 0px; } +#theming .icon-upload, +#theming .icon-loading-small { + padding: 8px 20px; + width: 20px; + margin: 2px 0px; + min-height: 32px; + display: inline-block; +} + +#theming_settings_status { + height: 26px; + margin: 10px; + +} +#theming_settings_loading.icon-loading-small { + float: left; + padding: 0; + margin-right: 10px; +} div#theming_settings_msg { - margin-left: 10px; + margin: 8px; + margin-left:20px; + display: inline-block; +} + +#theming-preview-logo { + cursor: pointer; } #theming-preview { @@ -59,7 +99,9 @@ div#theming_settings_msg { background-size: cover; background-position: center center; text-align: center; - margin-left: 93px; + margin-left: 123px; + margin-top: 10px; + cursor: pointer; } #theming-preview img { diff --git a/apps/theming/css/theming.scss b/apps/theming/css/theming.scss index 9392bfb0ae2..2d0afa2d298 100644 --- a/apps/theming/css/theming.scss +++ b/apps/theming/css/theming.scss @@ -12,22 +12,25 @@ /* invert header icons on bright background */ @if (lightness($color-primary) > 50) { - #header .icon-caret { - background-image: url(../../../core/img/actions/caret-dark.svg); - } .searchbox input[type="search"] { - background: transparent url(../../../core/img/actions/search.svg) no-repeat 6px center; + background: transparent url('../../../core/img/actions/search.svg') no-repeat 6px center; } #appmenu li a img { -webkit-filter: invert(1); filter: invert(1); filter: progid:DXImageTransform.Microsoft.BasicImage(invert='1'); } + #contactsmenu .icon-contacts { + background-image: url('../../../core/img/places/contacts-dark.svg'); + } + #settings .icon-settings-white { + background-image: url('../../../core/img/actions/settings-dark.svg'); + } } /* Colorized svg images */ .icon-file, .icon-filetype-text { - background-image: url(../img/core/filetypes/text.svg?v=#{$theming-cachebuster}); + background-image: url(./img/core/filetypes/text.svg?v=#{$theming-cachebuster}); } .icon-folder, .icon-filetype-folder { @@ -42,12 +45,13 @@ #header .logo, #header .logo-icon { background-size: contain; - background-image: url(#{$image-logo}?v=#{$theming-cachebuster}); + background-image: url(#{$image-logo}); } #body-login, -#firstrunwizard .firstrunwizard-header { - background-image: url(#{$image-login-background}?v=#{$theming-cachebuster}); +#firstrunwizard .firstrunwizard-header, +#theming-preview { + background-image: url(#{$image-login-background}); background-color: $color-primary; } @@ -59,6 +63,52 @@ input.primary { @if (lightness($color-primary) > 50) { #body-login input.login { - background-image: url(../../../core/img/actions/confirm.svg); + background-image: url('../../../core/img/actions/confirm.svg'); + } +} + +// plain background color for login page +@if $image-login-plain == 'true' { + #body-login, #firstrunwizard .firstrunwizard-header, #theming-preview { + background-image: none !important; + background-color: $color-primary; + } + #body-login { + + a, label, p { + color: $color-primary-text !important; + } + + @if (lightness($color-primary) > 50) { + #submit { + border-color: nc-darken($color-primary, 20%); + background-color: nc-darken($color-primary, 20%); + } + #submit:hover { + border-color: nc-darken($color-primary, 10%); + background-color: nc-darken($color-primary, 10%); + } + input[type='checkbox'].checkbox--white + label:before { + border-color: nc-darken($color-primary, 40%) !important; + } + input[type='checkbox'].checkbox--white:not(:disabled):not(:checked) + label:hover:before, + input[type='checkbox'].checkbox--white:focus + label:before { + border-color: nc-darken($color-primary, 30%) !important; + } + input[type='checkbox'].checkbox--white:checked + label:before { + border-color: nc-darken($color-primary, 30%) !important; + background-image: url('../../../core/img/actions/checkbox-mark.svg'); + background-color: nc-darken($color-primary, 30%) !important; + } + } @else { + #submit { + border-color: nc-lighten($color-primary, 20%); + background-color: nc-lighten($color-primary, 20%); + } + #submit:hover { + border-color: nc-lighten($color-primary, 10%); + background-color: nc-lighten($color-primary, 10%); + } + } } }
\ No newline at end of file diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js index 216463b15e0..48c479cc9c3 100644 --- a/apps/theming/js/settings-admin.js +++ b/apps/theming/js/settings-admin.js @@ -19,102 +19,69 @@ * */ -function setThemingValue(setting, value) { +function startLoading() { OC.msg.startSaving('#theming_settings_msg'); + $('#theming_settings_loading').show(); +} + +function setThemingValue(setting, value) { + startLoading(); $.post( OC.generateUrl('/apps/theming/ajax/updateStylesheet'), {'setting' : setting, 'value' : value} ).done(function(response) { - OC.msg.finishedSaving('#theming_settings_msg', response); hideUndoButton(setting, value); + preview(setting, value); }).fail(function(response) { OC.msg.finishedSaving('#theming_settings_msg', response); + $('#theming_settings_loading').hide(); }); - preview(setting, value); -} - -function calculateLuminance(rgb) { - var hexValue = rgb.replace(/[^0-9A-Fa-f]/, ''); - var r,g,b; - if (hexValue.length === 3) { - hexValue = hexValue[0] + hexValue[0] + hexValue[1] + hexValue[1] + hexValue[2] + hexValue[2]; - } - if (hexValue.length !== 6) { - return 0; - } - r = parseInt(hexValue.substring(0,2), 16); - g = parseInt(hexValue.substring(2,4), 16); - b = parseInt(hexValue.substring(4,6), 16); - return (0.299*r + 0.587*g + 0.114*b)/255; -} -function generateRadioButton(color) { - var radioButton = '<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">' + - '<path d="M8 1a7 7 0 0 0-7 7 7 7 0 0 0 7 7 7 7 0 0 0 7-7 7 7 0 0 0-7-7zm0 1a6 6 0 0 1 6 6 6 6 0 0 1-6 6 6 6 0 0 1-6-6 6 6 0 0 1 6-6zm0 2a4 4 0 1 0 0 8 4 4 0 0 0 0-8z" fill="' + color + '"/></svg>'; - return btoa(radioButton); } function preview(setting, value) { - if (setting === 'color') { - var headerClass = document.getElementById('header'); - var expandDisplayNameClass = document.getElementById('expandDisplayName'); - var headerAppName = headerClass.getElementsByClassName('header-appname')[0]; - var textColor, icon; - var luminance = calculateLuminance(value); - var elementColor = value; - - if (luminance > 0.5) { - textColor = "#000000"; - icon = 'caret-dark'; - } else { - textColor = "#ffffff"; - icon = 'caret'; - } - if (luminance > 0.8) { - elementColor = '#555555'; - } + OC.msg.startAction('#theming_settings_msg', t('theming', 'Loading preview…')); + var stylesheetsLoaded = 2; + var reloadStylesheets = function(cssFile) { + var queryString = '?reload=' + new Date().getTime(); + var url = OC.generateUrl(cssFile) + queryString; + var old = $('link[href*="' + cssFile.replace("/","\/") + '"]'); + var stylesheet = $("<link/>", { + rel: "stylesheet", + type: "text/css", + href: url + }); + stylesheet.load(function () { + $(old).remove(); + stylesheetsLoaded--; + if(stylesheetsLoaded === 0) { + $('#theming_settings_loading').hide(); + var response = { status: 'success', data: {message: t('theming', 'Saved')}}; + OC.msg.finishedSaving('#theming_settings_msg', response); + } + }); + stylesheet.appendTo("head"); + }; - headerClass.style.background = value; - headerClass.style.backgroundImage = '../img/logo-icon.svg'; - expandDisplayNameClass.style.color = textColor; - headerAppName.style.color = textColor; - - $('#previewStyles').html( - '#header .icon-caret { background-image: url(\'' + OC.getRootPath() + '/core/img/actions/' + icon + '.svg\') }' + - 'input[type="checkbox"].checkbox:checked:enabled:not(.checkbox--white) + label:before {' + - 'background-image:url(\'' + OC.getRootPath() + '/core/img/actions/checkmark-white.svg\');' + - 'background-color: ' + elementColor + '; background-position: center center; background-size:contain;' + - 'width:12px; height:12px; padding:0; margin:2px 6px 6px 2px; border-radius:1px;}' + - 'input[type="radio"].radio:checked:not(.radio--white):not(:disabled) + label:before {' + - 'background-image: url(\'data:image/svg+xml;base64,' + generateRadioButton(elementColor) + '\'); }' - ); - } + reloadStylesheets('/css/core/server.css'); + reloadStylesheets('/apps/theming/styles'); + // Preview images var timestamp = new Date().getTime(); if (setting === 'logoMime') { - var logos = document.getElementsByClassName('logo-icon'); var previewImageLogo = document.getElementById('theming-preview-logo'); if (value !== '') { - logos[0].style.backgroundImage = "url('" + OC.generateUrl('/apps/theming/logo') + "?v" + timestamp + "')"; - logos[0].style.backgroundSize = "contain"; previewImageLogo.src = OC.generateUrl('/apps/theming/logo') + "?v" + timestamp; } else { - logos[0].style.backgroundImage = "url('" + OC.getRootPath() + '/core/img/logo-icon.svg?v' + timestamp + "')"; - logos[0].style.backgroundSize = "contain"; previewImageLogo.src = OC.getRootPath() + '/core/img/logo-icon.svg?v' + timestamp; } } - if (setting === 'backgroundMime') { - var previewImage = document.getElementById('theming-preview'); - if (value !== '') { - previewImage.style.backgroundImage = "url('" + OC.generateUrl('/apps/theming/loginbackground') + "?v" + timestamp + "')"; - } else { - previewImage.style.backgroundImage = "url('" + OC.getRootPath() + '/core/img/background.jpg?v' + timestamp + "')"; - } - } if (setting === 'name') { window.document.title = t('core', 'Admin') + " - " + value; } + + hideUndoButton(setting, value); + } function hideUndoButton(setting, value) { @@ -132,13 +99,19 @@ function hideUndoButton(setting, value) { } else { $('.theme-undo[data-setting=' + setting + ']').show(); } + + if(setting === 'backgroundMime' && value !== 'backgroundColor') { + $('.theme-remove-bg').show(); + } + if(setting === 'backgroundMime' && value === 'backgroundColor') { + $('.theme-remove-bg').hide(); + $('.theme-undo[data-setting=backgroundMime]').show(); + } } $(document).ready(function () { $('#theming [data-toggle="tooltip"]').tooltip(); - $('html > head').append($('<style type="text/css" id="previewStyles"></style>')); - $('#theming .theme-undo').each(function() { var setting = $(this).data('setting'); var value = $('#theming-'+setting).val(); @@ -147,6 +120,7 @@ $(document).ready(function () { } hideUndoButton(setting, value); }); + var uploadParamsLogo = { pasteZone: null, dropZone: null, @@ -157,7 +131,7 @@ $(document).ready(function () { $('.theme-undo[data-setting=logoMime]').show(); }, submit: function(e, response) { - OC.msg.startSaving('#theming_settings_msg'); + startLoading(); $('label#uploadlogo').removeClass('icon-upload').addClass('icon-loading-small'); }, fail: function (e, response){ @@ -175,7 +149,7 @@ $(document).ready(function () { $('.theme-undo[data-setting=backgroundMime]').show(); }, submit: function(e, response) { - OC.msg.startSaving('#theming_settings_msg'); + startLoading(); $('label#upload-login-background').removeClass('icon-upload').addClass('icon-loading-small'); }, fail: function (e, response){ @@ -186,6 +160,14 @@ $(document).ready(function () { $('#uploadlogo').fileupload(uploadParamsLogo); $('#upload-login-background').fileupload(uploadParamsLogin); + // clicking preview should also trigger file upload dialog + $('#theming-preview-logo').on('click', function(e) { + e.stopPropagation(); + $('#uploadlogo').click(); + }); + $('#theming-preview').on('click', function() { + $('#upload-login-background').click(); + }); $('#theming-name').change(function(e) { var el = $(this); @@ -223,7 +205,7 @@ $(document).ready(function () { $('.theme-undo').click(function (e) { var setting = $(this).data('setting'); - OC.msg.startSaving('#theming_settings_msg'); + startLoading(); $('.theme-undo[data-setting=' + setting + ']').hide(); $.post( OC.generateUrl('/apps/theming/ajax/undoChanges'), {'setting' : setting} @@ -236,9 +218,19 @@ $(document).ready(function () { var input = document.getElementById('theming-'+setting); input.value = response.data.value; } - preview(setting, response.data.value); + }); + }); + + $('.theme-remove-bg').click(function() { + startLoading(); + $.post( + OC.generateUrl('/apps/theming/ajax/updateLogo'), {'backgroundColor' : true} + ).done(function(response) { + preview('backgroundMime', 'backgroundColor'); + }).fail(function(response) { OC.msg.finishedSaving('#theming_settings_msg', response); }); }); + }); diff --git a/apps/theming/l10n/ar.js b/apps/theming/l10n/ar.js index 19eeb742759..54e88acd860 100644 --- a/apps/theming/l10n/ar.js +++ b/apps/theming/l10n/ar.js @@ -1,13 +1,13 @@ OC.L10N.register( "theming", { + "Saved" : "تم الحفظ", "Admin" : "ادارة", "a safe home for all your data" : "مكان آمن لكل معلوماتك", "The given name is too long" : "هذا الاسم أطول مما يجب", "The given web address is too long" : "هذا العنوان أطول مما يجب", "The given slogan is too long" : "هذا الشعار أطول مما يجب", "The given color is invalid" : "هناك خطأ في اللون", - "Saved" : "تم الحفظ", "No file uploaded" : "لم يتم رفع الملف", "Unsupported image type" : "صيغة الصورة غير مقبولة", "You are already using a custom theme" : "انت تستعمل قالب مخصص", diff --git a/apps/theming/l10n/ar.json b/apps/theming/l10n/ar.json index 6a651808d5b..4a8655f2f8a 100644 --- a/apps/theming/l10n/ar.json +++ b/apps/theming/l10n/ar.json @@ -1,11 +1,11 @@ { "translations": { + "Saved" : "تم الحفظ", "Admin" : "ادارة", "a safe home for all your data" : "مكان آمن لكل معلوماتك", "The given name is too long" : "هذا الاسم أطول مما يجب", "The given web address is too long" : "هذا العنوان أطول مما يجب", "The given slogan is too long" : "هذا الشعار أطول مما يجب", "The given color is invalid" : "هناك خطأ في اللون", - "Saved" : "تم الحفظ", "No file uploaded" : "لم يتم رفع الملف", "Unsupported image type" : "صيغة الصورة غير مقبولة", "You are already using a custom theme" : "انت تستعمل قالب مخصص", diff --git a/apps/theming/l10n/ast.js b/apps/theming/l10n/ast.js new file mode 100644 index 00000000000..6472cbfc17c --- /dev/null +++ b/apps/theming/l10n/ast.js @@ -0,0 +1,27 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Cargando previsualización...", + "Saved" : "Guardóse", + "a safe home for all your data" : "un llar seguru pa tolos tos datos", + "The given name is too long" : "El nome dau ye perllargu", + "The given web address is too long" : "La direición web dada ye perllarga", + "The given slogan is too long" : "La conseña dada ye perllarga", + "The given color is invalid" : "El color dau ye perllargu", + "No file uploaded" : "Nun se xubieron ficheros", + "Unsupported image type" : "Triba non sofitada d'imaxe", + "You are already using a custom theme" : "Yá tas usando un tema personalizáu", + "Name" : "Nome", + "reset to default" : "reafitar", + "Web address" : "Direición web", + "Web address https://…" : "Direición web https://…", + "Slogan" : "Conseña", + "Color" : "Color", + "Logo" : "Logu", + "Upload new logo" : "Xubir logu nuevu", + "Login image" : "Imaxe d'aniciu de sesión", + "Upload new login background" : "Xubir fondu nuevu d'aniciu de sesión", + "Remove background image" : "Desaniciar imaxe de fondu", + "Log in image" : "Imaxe d'aniciu de sesión" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/ast.json b/apps/theming/l10n/ast.json new file mode 100644 index 00000000000..f8a38012a47 --- /dev/null +++ b/apps/theming/l10n/ast.json @@ -0,0 +1,25 @@ +{ "translations": { + "Loading preview…" : "Cargando previsualización...", + "Saved" : "Guardóse", + "a safe home for all your data" : "un llar seguru pa tolos tos datos", + "The given name is too long" : "El nome dau ye perllargu", + "The given web address is too long" : "La direición web dada ye perllarga", + "The given slogan is too long" : "La conseña dada ye perllarga", + "The given color is invalid" : "El color dau ye perllargu", + "No file uploaded" : "Nun se xubieron ficheros", + "Unsupported image type" : "Triba non sofitada d'imaxe", + "You are already using a custom theme" : "Yá tas usando un tema personalizáu", + "Name" : "Nome", + "reset to default" : "reafitar", + "Web address" : "Direición web", + "Web address https://…" : "Direición web https://…", + "Slogan" : "Conseña", + "Color" : "Color", + "Logo" : "Logu", + "Upload new logo" : "Xubir logu nuevu", + "Login image" : "Imaxe d'aniciu de sesión", + "Upload new login background" : "Xubir fondu nuevu d'aniciu de sesión", + "Remove background image" : "Desaniciar imaxe de fondu", + "Log in image" : "Imaxe d'aniciu de sesión" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/theming/l10n/bg.js b/apps/theming/l10n/bg.js index a0fd44abeae..8df4fdb0342 100644 --- a/apps/theming/l10n/bg.js +++ b/apps/theming/l10n/bg.js @@ -1,13 +1,13 @@ OC.L10N.register( "theming", { + "Saved" : "Запазено", "Admin" : "Админ", "a safe home for all your data" : "безопасен дом за всички ваши данни", "The given name is too long" : "Името е прекалено дълго", "The given web address is too long" : "web адреса е прекалено дълъг", "The given slogan is too long" : "Избраният лозунг е твърде дълъг", "The given color is invalid" : "Избраният цвят е невалиден", - "Saved" : "Запазено", "No file uploaded" : "Няма качен файл", "Unsupported image type" : "Неподдържан тип изображение", "You are already using a custom theme" : "Вие вече използвате персонализирана тема", diff --git a/apps/theming/l10n/bg.json b/apps/theming/l10n/bg.json index 0b842b12b1a..f3964d2aea0 100644 --- a/apps/theming/l10n/bg.json +++ b/apps/theming/l10n/bg.json @@ -1,11 +1,11 @@ { "translations": { + "Saved" : "Запазено", "Admin" : "Админ", "a safe home for all your data" : "безопасен дом за всички ваши данни", "The given name is too long" : "Името е прекалено дълго", "The given web address is too long" : "web адреса е прекалено дълъг", "The given slogan is too long" : "Избраният лозунг е твърде дълъг", "The given color is invalid" : "Избраният цвят е невалиден", - "Saved" : "Запазено", "No file uploaded" : "Няма качен файл", "Unsupported image type" : "Неподдържан тип изображение", "You are already using a custom theme" : "Вие вече използвате персонализирана тема", diff --git a/apps/theming/l10n/cs.js b/apps/theming/l10n/cs.js index c0046a209a8..43484fa6397 100644 --- a/apps/theming/l10n/cs.js +++ b/apps/theming/l10n/cs.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Načítání náhledu…", + "Saved" : "Uloženo", "Admin" : "Administrace", "a safe home for all your data" : "bezpečný domov pro všechna vaše data", "The given name is too long" : "Zadaný název je příliš dlouhý", "The given web address is too long" : "Zadaná webová adresa je příliš dlouhá", "The given slogan is too long" : "Zadaný slogan je příliš dlouhý", "The given color is invalid" : "Zadaná barva je neplatná", - "Saved" : "Uloženo", "No file uploaded" : "Nenahrán žádný soubor", "Unsupported image type" : "Nepodporovaný typ obrázku", "You are already using a custom theme" : "Již používáte vlastní motiv", "Theming" : "Motivy", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motivy umožňují jednoduché přizpůsobení vzhledu vaší instance a podporovaných klientů. Uvidí to všichni uživatelé.", "Name" : "Název", "reset to default" : "obnovit výchozí", "Web address" : "Webová adresa", diff --git a/apps/theming/l10n/cs.json b/apps/theming/l10n/cs.json index bf9c4cfb681..963be4b8184 100644 --- a/apps/theming/l10n/cs.json +++ b/apps/theming/l10n/cs.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Načítání náhledu…", + "Saved" : "Uloženo", "Admin" : "Administrace", "a safe home for all your data" : "bezpečný domov pro všechna vaše data", "The given name is too long" : "Zadaný název je příliš dlouhý", "The given web address is too long" : "Zadaná webová adresa je příliš dlouhá", "The given slogan is too long" : "Zadaný slogan je příliš dlouhý", "The given color is invalid" : "Zadaná barva je neplatná", - "Saved" : "Uloženo", "No file uploaded" : "Nenahrán žádný soubor", "Unsupported image type" : "Nepodporovaný typ obrázku", "You are already using a custom theme" : "Již používáte vlastní motiv", "Theming" : "Motivy", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motivy umožňují jednoduché přizpůsobení vzhledu vaší instance a podporovaných klientů. Uvidí to všichni uživatelé.", "Name" : "Název", "reset to default" : "obnovit výchozí", "Web address" : "Webová adresa", diff --git a/apps/theming/l10n/da.js b/apps/theming/l10n/da.js index 3085c1336c7..4f9bb0f6c77 100644 --- a/apps/theming/l10n/da.js +++ b/apps/theming/l10n/da.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Indlæser forhåndsvisning...", + "Saved" : "Gemt", "Admin" : "Admin", "a safe home for all your data" : "Et sikket hjem til alt dit data", "The given name is too long" : "Navnet er for langt", "The given web address is too long" : "Webadressen er for lang", "The given slogan is too long" : "Sloganet er for langt", "The given color is invalid" : "Farven er ikke gyldig", - "Saved" : "Gemt", "No file uploaded" : "Ingen fil uploadet", "Unsupported image type" : "Ikke-understøttet billede format", "You are already using a custom theme" : "Du bruger allerede et brugerdefineret tema", "Theming" : "Temaer", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming gør det muligt nemt at tilpasse udseendet på din installation og understøttede klienter. Dette vil være synlig for alle brugere.", "Name" : "Navn", "reset to default" : "nulstil til standardindstillinger ", "Web address" : "Web adresse", diff --git a/apps/theming/l10n/da.json b/apps/theming/l10n/da.json index 5261db8c5a6..15436b5d2f5 100644 --- a/apps/theming/l10n/da.json +++ b/apps/theming/l10n/da.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Indlæser forhåndsvisning...", + "Saved" : "Gemt", "Admin" : "Admin", "a safe home for all your data" : "Et sikket hjem til alt dit data", "The given name is too long" : "Navnet er for langt", "The given web address is too long" : "Webadressen er for lang", "The given slogan is too long" : "Sloganet er for langt", "The given color is invalid" : "Farven er ikke gyldig", - "Saved" : "Gemt", "No file uploaded" : "Ingen fil uploadet", "Unsupported image type" : "Ikke-understøttet billede format", "You are already using a custom theme" : "Du bruger allerede et brugerdefineret tema", "Theming" : "Temaer", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming gør det muligt nemt at tilpasse udseendet på din installation og understøttede klienter. Dette vil være synlig for alle brugere.", "Name" : "Navn", "reset to default" : "nulstil til standardindstillinger ", "Web address" : "Web adresse", diff --git a/apps/theming/l10n/de.js b/apps/theming/l10n/de.js index 8e67d5c28ea..0674734f745 100644 --- a/apps/theming/l10n/de.js +++ b/apps/theming/l10n/de.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Lade Vorschau…", + "Saved" : "Gespeichert", "Admin" : "Administrator", "a safe home for all your data" : "Ein sicheres Zuhause für Deine Daten", "The given name is too long" : "Der eingegebene Name ist zu lang", "The given web address is too long" : "Die eingegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", - "Saved" : "Gespeichert", "No file uploaded" : "Keine Datei hochgeladen", "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme" : "Du benutzt bereits ein eigenes Thema", "Theming" : "Theming", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming ermöglicht es auf einfache Weise das Aussehen Ihrer Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "reset to default" : "Auf Standard zurücksetzen", "Web address" : "Internetadresse", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "Neues Logo hochladen", "Login image" : "Anmelde-Bild", "Upload new login background" : "Neuen Anmelde-Hintergrund hochladen", + "Remove background image" : "Hintergrundbilder entfernen", "Log in image" : "Anmelde-Bild" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/de.json b/apps/theming/l10n/de.json index 7f52928343e..d318cabd649 100644 --- a/apps/theming/l10n/de.json +++ b/apps/theming/l10n/de.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Lade Vorschau…", + "Saved" : "Gespeichert", "Admin" : "Administrator", "a safe home for all your data" : "Ein sicheres Zuhause für Deine Daten", "The given name is too long" : "Der eingegebene Name ist zu lang", "The given web address is too long" : "Die eingegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", - "Saved" : "Gespeichert", "No file uploaded" : "Keine Datei hochgeladen", "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme" : "Du benutzt bereits ein eigenes Thema", "Theming" : "Theming", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming ermöglicht es auf einfache Weise das Aussehen Ihrer Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "reset to default" : "Auf Standard zurücksetzen", "Web address" : "Internetadresse", @@ -20,6 +22,7 @@ "Upload new logo" : "Neues Logo hochladen", "Login image" : "Anmelde-Bild", "Upload new login background" : "Neuen Anmelde-Hintergrund hochladen", + "Remove background image" : "Hintergrundbilder entfernen", "Log in image" : "Anmelde-Bild" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/de_DE.js b/apps/theming/l10n/de_DE.js index af808f39c91..3c55f84f9cc 100644 --- a/apps/theming/l10n/de_DE.js +++ b/apps/theming/l10n/de_DE.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Lade Vorschau…", + "Saved" : "Gespeichert", "Admin" : "Administrator", "a safe home for all your data" : "Ein sicheres Zuhause für Ihre Daten", "The given name is too long" : "Der eingegebene Name ist zu lang", "The given web address is too long" : "Die eingegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", - "Saved" : "Gespeichert", "No file uploaded" : "Keine Datei hochgeladen", "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme" : "Sie benutzen bereits ein eigenes Thema", "Theming" : "Theming", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming ermöglicht es auf einfache Weise das Aussehen Ihrer Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "reset to default" : "Auf Standard zurücksetzen", "Web address" : "Internetadresse", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "Neues Logo hochladen", "Login image" : "Anmelde-Bild", "Upload new login background" : "Neuen Anmelde-Hintergrund hochladen", + "Remove background image" : "Entferne Hintergrundbild", "Log in image" : "Anmelde-Bild" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/de_DE.json b/apps/theming/l10n/de_DE.json index f613058fe3f..dc00a16c668 100644 --- a/apps/theming/l10n/de_DE.json +++ b/apps/theming/l10n/de_DE.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Lade Vorschau…", + "Saved" : "Gespeichert", "Admin" : "Administrator", "a safe home for all your data" : "Ein sicheres Zuhause für Ihre Daten", "The given name is too long" : "Der eingegebene Name ist zu lang", "The given web address is too long" : "Die eingegebene Adresse ist zu lang", "The given slogan is too long" : "Der eingegebene Slogan ist zu lang", "The given color is invalid" : "Die gewählte Farbe ist ungültig", - "Saved" : "Gespeichert", "No file uploaded" : "Keine Datei hochgeladen", "Unsupported image type" : "Nicht unterstütztes Bild-Format", "You are already using a custom theme" : "Sie benutzen bereits ein eigenes Thema", "Theming" : "Theming", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming ermöglicht es auf einfache Weise das Aussehen Ihrer Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "reset to default" : "Auf Standard zurücksetzen", "Web address" : "Internetadresse", @@ -20,6 +22,7 @@ "Upload new logo" : "Neues Logo hochladen", "Login image" : "Anmelde-Bild", "Upload new login background" : "Neuen Anmelde-Hintergrund hochladen", + "Remove background image" : "Entferne Hintergrundbild", "Log in image" : "Anmelde-Bild" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/el.js b/apps/theming/l10n/el.js index 82c5ea726e4..eca624f1b44 100644 --- a/apps/theming/l10n/el.js +++ b/apps/theming/l10n/el.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Φόρτωση προεπισκόπησης ...", + "Saved" : "Αποθηκεύτηκαν", "Admin" : "Διαχειριστής", "a safe home for all your data" : "μια ασφαλής τοποθεσία για όλα σας τα δεδομένα", "The given name is too long" : "Το όνομα που δόθηκε είναι πολύ μεγάλο", "The given web address is too long" : "Η διεύθυνση ιστοσελίδας που δόθηκε είναι πολύ μεγάλη.", "The given slogan is too long" : "Το ρητό που δόθηκε είναι πολύ μεγάλο", "The given color is invalid" : "Δόθηκε μη έγκυρο χρώμα", - "Saved" : "Αποθηκεύτηκαν", "No file uploaded" : "Δεν έχει μεταφορτωθεί αρχείο", "Unsupported image type" : "Μη υποστηριζόμενος τύπος εικόνας", "You are already using a custom theme" : "Χρησιμοποιείτε ήδη προσαρμοσμένο θέμα", - "Theming" : "Θεματοποίηση", + "Theming" : "Προσαρμογή θέματος", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Η προσαρμογή θέματος καθιστά δυνατή την εύκολη προσαρμογή της εμφάνισης της εμφάνισης της εγκατάστασής σας καθώς και των υποστηριζόμενων πελατών. Αυτή θα είναι ορατή για όλους τους χρήστες.", "Name" : "Όνομα", "reset to default" : "επαναφορά στα προεπιλεγμένα", "Web address" : "Διεύθυση ιστοσελίδας", @@ -21,7 +23,8 @@ OC.L10N.register( "Logo" : "Λογότυπο", "Upload new logo" : "Μεταφόρτωση νέου λογοτύπου", "Login image" : "Εικόνα εισόδου", - "Upload new login background" : "Μεταφόρτωση νέου φόντου εισόδου", + "Upload new login background" : "Μεταφόρτωση νέου παρασκηνίου εισόδου", + "Remove background image" : "Αφαίρεση εικόνας παρασκηνίου", "Log in image" : "Εικόνα εισόδου" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/el.json b/apps/theming/l10n/el.json index 046209ea285..03b475c0f40 100644 --- a/apps/theming/l10n/el.json +++ b/apps/theming/l10n/el.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Φόρτωση προεπισκόπησης ...", + "Saved" : "Αποθηκεύτηκαν", "Admin" : "Διαχειριστής", "a safe home for all your data" : "μια ασφαλής τοποθεσία για όλα σας τα δεδομένα", "The given name is too long" : "Το όνομα που δόθηκε είναι πολύ μεγάλο", "The given web address is too long" : "Η διεύθυνση ιστοσελίδας που δόθηκε είναι πολύ μεγάλη.", "The given slogan is too long" : "Το ρητό που δόθηκε είναι πολύ μεγάλο", "The given color is invalid" : "Δόθηκε μη έγκυρο χρώμα", - "Saved" : "Αποθηκεύτηκαν", "No file uploaded" : "Δεν έχει μεταφορτωθεί αρχείο", "Unsupported image type" : "Μη υποστηριζόμενος τύπος εικόνας", "You are already using a custom theme" : "Χρησιμοποιείτε ήδη προσαρμοσμένο θέμα", - "Theming" : "Θεματοποίηση", + "Theming" : "Προσαρμογή θέματος", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Η προσαρμογή θέματος καθιστά δυνατή την εύκολη προσαρμογή της εμφάνισης της εμφάνισης της εγκατάστασής σας καθώς και των υποστηριζόμενων πελατών. Αυτή θα είναι ορατή για όλους τους χρήστες.", "Name" : "Όνομα", "reset to default" : "επαναφορά στα προεπιλεγμένα", "Web address" : "Διεύθυση ιστοσελίδας", @@ -19,7 +21,8 @@ "Logo" : "Λογότυπο", "Upload new logo" : "Μεταφόρτωση νέου λογοτύπου", "Login image" : "Εικόνα εισόδου", - "Upload new login background" : "Μεταφόρτωση νέου φόντου εισόδου", + "Upload new login background" : "Μεταφόρτωση νέου παρασκηνίου εισόδου", + "Remove background image" : "Αφαίρεση εικόνας παρασκηνίου", "Log in image" : "Εικόνα εισόδου" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/en_GB.js b/apps/theming/l10n/en_GB.js new file mode 100644 index 00000000000..ed29a83eca3 --- /dev/null +++ b/apps/theming/l10n/en_GB.js @@ -0,0 +1,29 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Loading preview…", + "Saved" : "Saved", + "Admin" : "Admin", + "a safe home for all your data" : "a safe home for all your data", + "The given name is too long" : "The given name is too long", + "The given web address is too long" : "The given web address is too long", + "The given slogan is too long" : "The given slogan is too long", + "The given color is invalid" : "The given colour is invalid", + "No file uploaded" : "No file uploaded", + "Unsupported image type" : "Unsupported image type", + "You are already using a custom theme" : "You are already using a custom theme", + "Theming" : "Theming", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming makes it possible to easily customise the look and feel of your instance and supported clients. This will be visible for all users.", + "Name" : "Name", + "reset to default" : "reset to default", + "Web address" : "Web address", + "Web address https://…" : "Web address https://…", + "Slogan" : "Slogan", + "Color" : "Colour", + "Logo" : "Logo", + "Upload new logo" : "Upload new logo", + "Login image" : "Login image", + "Upload new login background" : "Upload new login background", + "Log in image" : "Log in image" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/en_GB.json b/apps/theming/l10n/en_GB.json new file mode 100644 index 00000000000..27a4eb827bd --- /dev/null +++ b/apps/theming/l10n/en_GB.json @@ -0,0 +1,27 @@ +{ "translations": { + "Loading preview…" : "Loading preview…", + "Saved" : "Saved", + "Admin" : "Admin", + "a safe home for all your data" : "a safe home for all your data", + "The given name is too long" : "The given name is too long", + "The given web address is too long" : "The given web address is too long", + "The given slogan is too long" : "The given slogan is too long", + "The given color is invalid" : "The given colour is invalid", + "No file uploaded" : "No file uploaded", + "Unsupported image type" : "Unsupported image type", + "You are already using a custom theme" : "You are already using a custom theme", + "Theming" : "Theming", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Theming makes it possible to easily customise the look and feel of your instance and supported clients. This will be visible for all users.", + "Name" : "Name", + "reset to default" : "reset to default", + "Web address" : "Web address", + "Web address https://…" : "Web address https://…", + "Slogan" : "Slogan", + "Color" : "Colour", + "Logo" : "Logo", + "Upload new logo" : "Upload new logo", + "Login image" : "Login image", + "Upload new login background" : "Upload new login background", + "Log in image" : "Log in image" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/theming/l10n/es.js b/apps/theming/l10n/es.js index 36fafe3cb6f..0bebcfc70bc 100644 --- a/apps/theming/l10n/es.js +++ b/apps/theming/l10n/es.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Cargando previsualización...", + "Saved" : "Guardado", "Admin" : "Administración", "a safe home for all your data" : "un hogar seguro para todos tus datos", "The given name is too long" : "El nombre provisto es muy largo", "The given web address is too long" : "La dirección provista es muy larga", "The given slogan is too long" : "El eslogan provisto es muy largo", "The given color is invalid" : "El color provisto es inválido", - "Saved" : "Guardado", "No file uploaded" : "No se ha subido archivo", "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme" : "Usted ya usa un tema personalizado", "Theming" : "Tema", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Los temas hacen posible personalizar fácilmente la apariencia de tu instancia y los clientes soportados. Esto será visible para todos los usuarios.", "Name" : "Nombre", "reset to default" : "restaurar a configuración inicial", "Web address" : "Dirección web", diff --git a/apps/theming/l10n/es.json b/apps/theming/l10n/es.json index a724f4bbd9d..4fac8e86994 100644 --- a/apps/theming/l10n/es.json +++ b/apps/theming/l10n/es.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Cargando previsualización...", + "Saved" : "Guardado", "Admin" : "Administración", "a safe home for all your data" : "un hogar seguro para todos tus datos", "The given name is too long" : "El nombre provisto es muy largo", "The given web address is too long" : "La dirección provista es muy larga", "The given slogan is too long" : "El eslogan provisto es muy largo", "The given color is invalid" : "El color provisto es inválido", - "Saved" : "Guardado", "No file uploaded" : "No se ha subido archivo", "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme" : "Usted ya usa un tema personalizado", "Theming" : "Tema", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Los temas hacen posible personalizar fácilmente la apariencia de tu instancia y los clientes soportados. Esto será visible para todos los usuarios.", "Name" : "Nombre", "reset to default" : "restaurar a configuración inicial", "Web address" : "Dirección web", diff --git a/apps/theming/l10n/es_MX.js b/apps/theming/l10n/es_MX.js index fb1bfca4914..8c307ac9406 100644 --- a/apps/theming/l10n/es_MX.js +++ b/apps/theming/l10n/es_MX.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Cargando vista previa...", + "Saved" : "Guardado", "Admin" : "Administración", "a safe home for all your data" : "un lugar seguro para todos sus datos", "The given name is too long" : "El nombre dado es demasiado largo", "The given web address is too long" : "La dirección web dada es demasiado larga", "The given slogan is too long" : "El lema dado es demasiado largo", "The given color is invalid" : "El color dado es inválido", - "Saved" : "Guardado", "No file uploaded" : "No hay archivos cargados", "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme" : "Usted ya se encuentra usando un tema personalizado", "Theming" : "Tematizar", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve su instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "reset to default" : "restaurar a predeterminado", "Web address" : "Dirección web", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "Cargar nuevo logotipo", "Login image" : "Imágen de inicio de sesión", "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", + "Remove background image" : "Eliminar imagen de fondo", "Log in image" : "Imagen de inicio de sesión" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/es_MX.json b/apps/theming/l10n/es_MX.json index d2d65f4b0c8..d47b3ef7836 100644 --- a/apps/theming/l10n/es_MX.json +++ b/apps/theming/l10n/es_MX.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Cargando vista previa...", + "Saved" : "Guardado", "Admin" : "Administración", "a safe home for all your data" : "un lugar seguro para todos sus datos", "The given name is too long" : "El nombre dado es demasiado largo", "The given web address is too long" : "La dirección web dada es demasiado larga", "The given slogan is too long" : "El lema dado es demasiado largo", "The given color is invalid" : "El color dado es inválido", - "Saved" : "Guardado", "No file uploaded" : "No hay archivos cargados", "Unsupported image type" : "Tipo de imagen no soportado", "You are already using a custom theme" : "Usted ya se encuentra usando un tema personalizado", "Theming" : "Tematizar", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "El tematizar hace posible personalizar facilmente la manera en que se ve su instancia y clientes soportados. Esto será visible para todos los usuarios. ", "Name" : "Nombre", "reset to default" : "restaurar a predeterminado", "Web address" : "Dirección web", @@ -20,6 +22,7 @@ "Upload new logo" : "Cargar nuevo logotipo", "Login image" : "Imágen de inicio de sesión", "Upload new login background" : "Cargar nueva imagen de fondo para inicio de sesión", + "Remove background image" : "Eliminar imagen de fondo", "Log in image" : "Imagen de inicio de sesión" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/fi.js b/apps/theming/l10n/fi.js index cd9b98d29d7..76ddfff8ec9 100644 --- a/apps/theming/l10n/fi.js +++ b/apps/theming/l10n/fi.js @@ -1,17 +1,17 @@ OC.L10N.register( "theming", { + "Saved" : "Tallennettu", "Admin" : "Ylläpito", "a safe home for all your data" : "turvallinen koti kaikille tiedostoillesi", "The given name is too long" : "Nimi on liian pitkä", "The given web address is too long" : "Verkko-osoite on liian pitkä", "The given slogan is too long" : "Slogani on liian pitkä", "The given color is invalid" : "Väri on virheellinen", - "Saved" : "Tallennettu", "No file uploaded" : "Ei tiedostoa lähetetty", "Unsupported image type" : "Ei-tuettu kuvatiedostomuoto", "You are already using a custom theme" : "Käytät jo kustomoitua ulkoasua", - "Theming" : "Ulkoasu", + "Theming" : "Teema", "Name" : "Nimi", "reset to default" : "palauta oletukseksi", "Web address" : "Verkko-osoite", diff --git a/apps/theming/l10n/fi.json b/apps/theming/l10n/fi.json index d4577c727dd..854bf98897a 100644 --- a/apps/theming/l10n/fi.json +++ b/apps/theming/l10n/fi.json @@ -1,15 +1,15 @@ { "translations": { + "Saved" : "Tallennettu", "Admin" : "Ylläpito", "a safe home for all your data" : "turvallinen koti kaikille tiedostoillesi", "The given name is too long" : "Nimi on liian pitkä", "The given web address is too long" : "Verkko-osoite on liian pitkä", "The given slogan is too long" : "Slogani on liian pitkä", "The given color is invalid" : "Väri on virheellinen", - "Saved" : "Tallennettu", "No file uploaded" : "Ei tiedostoa lähetetty", "Unsupported image type" : "Ei-tuettu kuvatiedostomuoto", "You are already using a custom theme" : "Käytät jo kustomoitua ulkoasua", - "Theming" : "Ulkoasu", + "Theming" : "Teema", "Name" : "Nimi", "reset to default" : "palauta oletukseksi", "Web address" : "Verkko-osoite", diff --git a/apps/theming/l10n/fr.js b/apps/theming/l10n/fr.js index e608fc4b7e2..c517df9bcb9 100644 --- a/apps/theming/l10n/fr.js +++ b/apps/theming/l10n/fr.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Chargement de la prévisualisation...", + "Saved" : "Enregistré", "Admin" : "Administration", "a safe home for all your data" : "un endroit sûr pour toutes vos données", "The given name is too long" : "Le nom donné est trop long", "The given web address is too long" : "L'adresse web donnée est trop longue", "The given slogan is too long" : "Le slogan donné est trop long", "The given color is invalid" : "La couleur donnée est invalide", - "Saved" : "Enregistré", "No file uploaded" : "Aucun fichier téléversé", "Unsupported image type" : "Ce type d'image n'est pas pris en charge", "You are already using a custom theme" : "Vous utilisez déjà un thème personnalisé", "Theming" : "Personnaliser l'apparence", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Cet extension permet de personnaliser facilement l'apparence de votre instance et des clients supportés. Cela sera visible pour tous les utilisateurs.", "Name" : "Nom", "reset to default" : "Restaurer les valeurs par défaut", "Web address" : "Adresse web", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "Téléverser un nouveau logo", "Login image" : "Image de connexion", "Upload new login background" : "Téléverser un nouvel arrière-plan de connexion", + "Remove background image" : "Supprimer l'image en arrière-plan", "Log in image" : "Image de connexion" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/theming/l10n/fr.json b/apps/theming/l10n/fr.json index 4b3d54e57da..57d52b43355 100644 --- a/apps/theming/l10n/fr.json +++ b/apps/theming/l10n/fr.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Chargement de la prévisualisation...", + "Saved" : "Enregistré", "Admin" : "Administration", "a safe home for all your data" : "un endroit sûr pour toutes vos données", "The given name is too long" : "Le nom donné est trop long", "The given web address is too long" : "L'adresse web donnée est trop longue", "The given slogan is too long" : "Le slogan donné est trop long", "The given color is invalid" : "La couleur donnée est invalide", - "Saved" : "Enregistré", "No file uploaded" : "Aucun fichier téléversé", "Unsupported image type" : "Ce type d'image n'est pas pris en charge", "You are already using a custom theme" : "Vous utilisez déjà un thème personnalisé", "Theming" : "Personnaliser l'apparence", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Cet extension permet de personnaliser facilement l'apparence de votre instance et des clients supportés. Cela sera visible pour tous les utilisateurs.", "Name" : "Nom", "reset to default" : "Restaurer les valeurs par défaut", "Web address" : "Adresse web", @@ -20,6 +22,7 @@ "Upload new logo" : "Téléverser un nouveau logo", "Login image" : "Image de connexion", "Upload new login background" : "Téléverser un nouvel arrière-plan de connexion", + "Remove background image" : "Supprimer l'image en arrière-plan", "Log in image" : "Image de connexion" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js index a0549dfd06b..ca3299ff98f 100644 --- a/apps/theming/l10n/hu.js +++ b/apps/theming/l10n/hu.js @@ -1,13 +1,13 @@ OC.L10N.register( "theming", { + "Saved" : "Mentve!", "Admin" : "Adminisztrátor", "a safe home for all your data" : "biztonságos hely az adataid számára", "The given name is too long" : "A bevitt név túl hosszú", "The given web address is too long" : "A bevitt webcím túl hosszú", "The given slogan is too long" : "A bevitt szlogen túl hosszú", "The given color is invalid" : "A bevitt szín érvénytelen", - "Saved" : "Mentve!", "No file uploaded" : "Nincs fájl feltöltve", "Unsupported image type" : "Nem támogatott képtípus", "You are already using a custom theme" : "Már egyedi témát használ", diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json index 6023637c81d..3589db365c7 100644 --- a/apps/theming/l10n/hu.json +++ b/apps/theming/l10n/hu.json @@ -1,11 +1,11 @@ { "translations": { + "Saved" : "Mentve!", "Admin" : "Adminisztrátor", "a safe home for all your data" : "biztonságos hely az adataid számára", "The given name is too long" : "A bevitt név túl hosszú", "The given web address is too long" : "A bevitt webcím túl hosszú", "The given slogan is too long" : "A bevitt szlogen túl hosszú", "The given color is invalid" : "A bevitt szín érvénytelen", - "Saved" : "Mentve!", "No file uploaded" : "Nincs fájl feltöltve", "Unsupported image type" : "Nem támogatott képtípus", "You are already using a custom theme" : "Már egyedi témát használ", diff --git a/apps/theming/l10n/id.js b/apps/theming/l10n/id.js new file mode 100644 index 00000000000..fa6086692d6 --- /dev/null +++ b/apps/theming/l10n/id.js @@ -0,0 +1,24 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "Memuat pratinjau", + "Saved" : "Disimpan", + "Admin" : "Admin", + "The given name is too long" : "Pemberian nama terlalu panjang", + "The given web address is too long" : "Pemberian alamat web terlalu panjang", + "The given slogan is too long" : "Pemberian slogan terlalu panjang", + "No file uploaded" : "Tidak ada file diunggah", + "Unsupported image type" : "Tipe gambar tidak bisa diterima", + "You are already using a custom theme" : "Anda telah siap menggunakan Tema Kustom", + "Theming" : "Tema", + "Name" : "Nama", + "reset to default" : "Atur ulang ke awal", + "Web address" : "Alamat Web", + "Web address https://…" : "Alamat Web https://...", + "Slogan" : "Slogan", + "Color" : "Warna", + "Logo" : "Logo", + "Upload new logo" : "Unggah Logo baru", + "Login image" : "Gambar ketika masuk" +}, +"nplurals=1; plural=0;"); diff --git a/apps/theming/l10n/id.json b/apps/theming/l10n/id.json new file mode 100644 index 00000000000..65a83d56942 --- /dev/null +++ b/apps/theming/l10n/id.json @@ -0,0 +1,22 @@ +{ "translations": { + "Loading preview…" : "Memuat pratinjau", + "Saved" : "Disimpan", + "Admin" : "Admin", + "The given name is too long" : "Pemberian nama terlalu panjang", + "The given web address is too long" : "Pemberian alamat web terlalu panjang", + "The given slogan is too long" : "Pemberian slogan terlalu panjang", + "No file uploaded" : "Tidak ada file diunggah", + "Unsupported image type" : "Tipe gambar tidak bisa diterima", + "You are already using a custom theme" : "Anda telah siap menggunakan Tema Kustom", + "Theming" : "Tema", + "Name" : "Nama", + "reset to default" : "Atur ulang ke awal", + "Web address" : "Alamat Web", + "Web address https://…" : "Alamat Web https://...", + "Slogan" : "Slogan", + "Color" : "Warna", + "Logo" : "Logo", + "Upload new logo" : "Unggah Logo baru", + "Login image" : "Gambar ketika masuk" +},"pluralForm" :"nplurals=1; plural=0;" +}
\ No newline at end of file diff --git a/apps/theming/l10n/is.js b/apps/theming/l10n/is.js index 050c24d1aa3..4a9b3116e42 100644 --- a/apps/theming/l10n/is.js +++ b/apps/theming/l10n/is.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Hleð inn forskoðun...", + "Saved" : "Vistað", "Admin" : "Stjórnandi", "a safe home for all your data" : "öruggur staður fyrir öll gögnin þín", "The given name is too long" : "Uppgefið nafn er of langt", "The given web address is too long" : "Uppgefið veffang er of langt", "The given slogan is too long" : "Uppgefið slagorð er of langt", "The given color is invalid" : "Uppgefinn litur er ógildur", - "Saved" : "Vistað", "No file uploaded" : "Engin skrá var send inn", "Unsupported image type" : "Óstudd gerð myndar", "You are already using a custom theme" : "Þú ert nú þegar að nota sérsniðið þema", "Theming" : "Þemu", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Þemu gera þér kleift að breyta útliti og hegðun þíns eintaks af viðmótinu auk studdra biðlaraforrita. Það verður sýnilegt öllum notendum.", "Name" : "Heiti", "reset to default" : "endurstilla á sjálfgefið", "Web address" : "Veffang", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "Senda inn nýtt táknmerki", "Login image" : "Innskráningarmynd", "Upload new login background" : "Senda inn nýjan bakgrunn innskráningar", + "Remove background image" : "Fjarlægja bakgrunnsmynd", "Log in image" : "Innskráningarmynd" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/theming/l10n/is.json b/apps/theming/l10n/is.json index cfb7459f6d5..5beda25148e 100644 --- a/apps/theming/l10n/is.json +++ b/apps/theming/l10n/is.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Hleð inn forskoðun...", + "Saved" : "Vistað", "Admin" : "Stjórnandi", "a safe home for all your data" : "öruggur staður fyrir öll gögnin þín", "The given name is too long" : "Uppgefið nafn er of langt", "The given web address is too long" : "Uppgefið veffang er of langt", "The given slogan is too long" : "Uppgefið slagorð er of langt", "The given color is invalid" : "Uppgefinn litur er ógildur", - "Saved" : "Vistað", "No file uploaded" : "Engin skrá var send inn", "Unsupported image type" : "Óstudd gerð myndar", "You are already using a custom theme" : "Þú ert nú þegar að nota sérsniðið þema", "Theming" : "Þemu", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Þemu gera þér kleift að breyta útliti og hegðun þíns eintaks af viðmótinu auk studdra biðlaraforrita. Það verður sýnilegt öllum notendum.", "Name" : "Heiti", "reset to default" : "endurstilla á sjálfgefið", "Web address" : "Veffang", @@ -20,6 +22,7 @@ "Upload new logo" : "Senda inn nýtt táknmerki", "Login image" : "Innskráningarmynd", "Upload new login background" : "Senda inn nýjan bakgrunn innskráningar", + "Remove background image" : "Fjarlægja bakgrunnsmynd", "Log in image" : "Innskráningarmynd" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/theming/l10n/it.js b/apps/theming/l10n/it.js index 629dc4e71dc..15be95c50ea 100644 --- a/apps/theming/l10n/it.js +++ b/apps/theming/l10n/it.js @@ -1,13 +1,13 @@ OC.L10N.register( "theming", { + "Saved" : "Salvato", "Admin" : "Amministratore", "a safe home for all your data" : "una casa sicura per i tuoi dati", "The given name is too long" : "Questo nome è troppo lungo", "The given web address is too long" : "Questo indirizzo web è troppo lungo", "The given slogan is too long" : "Questo slogan è troppo lungo", "The given color is invalid" : "Questo colore non è valido", - "Saved" : "Salvato", "No file uploaded" : "Nessun file caricato", "Unsupported image type" : "Tipo di immagine non supportato", "You are already using a custom theme" : "Stai già usando un tema personalizzato", diff --git a/apps/theming/l10n/it.json b/apps/theming/l10n/it.json index 771d46f2189..2e4f3618e8f 100644 --- a/apps/theming/l10n/it.json +++ b/apps/theming/l10n/it.json @@ -1,11 +1,11 @@ { "translations": { + "Saved" : "Salvato", "Admin" : "Amministratore", "a safe home for all your data" : "una casa sicura per i tuoi dati", "The given name is too long" : "Questo nome è troppo lungo", "The given web address is too long" : "Questo indirizzo web è troppo lungo", "The given slogan is too long" : "Questo slogan è troppo lungo", "The given color is invalid" : "Questo colore non è valido", - "Saved" : "Salvato", "No file uploaded" : "Nessun file caricato", "Unsupported image type" : "Tipo di immagine non supportato", "You are already using a custom theme" : "Stai già usando un tema personalizzato", diff --git a/apps/theming/l10n/ko.js b/apps/theming/l10n/ko.js new file mode 100644 index 00000000000..6c222b56373 --- /dev/null +++ b/apps/theming/l10n/ko.js @@ -0,0 +1,29 @@ +OC.L10N.register( + "theming", + { + "Loading preview…" : "미리 보기 불러오는 중…", + "Saved" : "저장됨", + "Admin" : "관리자", + "a safe home for all your data" : "내 모든 데이터 안전 저장소", + "The given name is too long" : "입력한 이름이 너무 김", + "The given web address is too long" : "입력한 웹 주소가 너무 김", + "The given slogan is too long" : "입력한 슬로건이 너무 김", + "The given color is invalid" : "입력한 색상이 잘못됨", + "No file uploaded" : "업로드한 파일 없음", + "Unsupported image type" : "지원하지 않는 사진 형식", + "You are already using a custom theme" : "이미 사용자 정의 테마 사용 중", + "Theming" : "테마", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "테마를 사용하여 내 인스턴스와 지원하는 클라이언트의 모습을 변경할 수 있습니다. 테마는 모든 사용자에게 적용됩니다.", + "Name" : "이름", + "reset to default" : "기본값으로 초기화", + "Web address" : "웹 주소", + "Web address https://…" : "웹 주소 https://…", + "Slogan" : "슬로건", + "Color" : "색", + "Logo" : "로고", + "Upload new logo" : "새 로고 업로드", + "Login image" : "로그인 그림", + "Upload new login background" : "새 로그인 배경 업로드", + "Log in image" : "로그인 그림" +}, +"nplurals=1; plural=0;"); diff --git a/apps/theming/l10n/ko.json b/apps/theming/l10n/ko.json new file mode 100644 index 00000000000..74c621d6dcc --- /dev/null +++ b/apps/theming/l10n/ko.json @@ -0,0 +1,27 @@ +{ "translations": { + "Loading preview…" : "미리 보기 불러오는 중…", + "Saved" : "저장됨", + "Admin" : "관리자", + "a safe home for all your data" : "내 모든 데이터 안전 저장소", + "The given name is too long" : "입력한 이름이 너무 김", + "The given web address is too long" : "입력한 웹 주소가 너무 김", + "The given slogan is too long" : "입력한 슬로건이 너무 김", + "The given color is invalid" : "입력한 색상이 잘못됨", + "No file uploaded" : "업로드한 파일 없음", + "Unsupported image type" : "지원하지 않는 사진 형식", + "You are already using a custom theme" : "이미 사용자 정의 테마 사용 중", + "Theming" : "테마", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "테마를 사용하여 내 인스턴스와 지원하는 클라이언트의 모습을 변경할 수 있습니다. 테마는 모든 사용자에게 적용됩니다.", + "Name" : "이름", + "reset to default" : "기본값으로 초기화", + "Web address" : "웹 주소", + "Web address https://…" : "웹 주소 https://…", + "Slogan" : "슬로건", + "Color" : "색", + "Logo" : "로고", + "Upload new logo" : "새 로고 업로드", + "Login image" : "로그인 그림", + "Upload new login background" : "새 로그인 배경 업로드", + "Log in image" : "로그인 그림" +},"pluralForm" :"nplurals=1; plural=0;" +}
\ No newline at end of file diff --git a/apps/theming/l10n/nb.js b/apps/theming/l10n/nb.js index dba3f2af333..c7a4a5ab2e9 100644 --- a/apps/theming/l10n/nb.js +++ b/apps/theming/l10n/nb.js @@ -1,13 +1,14 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Laster forhåndsvisning...", + "Saved" : "Lagret", "Admin" : "Admin", "a safe home for all your data" : "et trygt hjem for alle dine data", "The given name is too long" : "Navnet er for langt", "The given web address is too long" : "Nettadressen er for lang", "The given slogan is too long" : "Slagordet er for langt", "The given color is invalid" : "Fargen er ugyldig", - "Saved" : "Lagret", "No file uploaded" : "Ingen fil lastet opp", "Unsupported image type" : "Filtypen støttes ikke", "You are already using a custom theme" : "Du bruker allerede en egendefinert drakt", diff --git a/apps/theming/l10n/nb.json b/apps/theming/l10n/nb.json index 5f6a65d87b9..23fe3952c61 100644 --- a/apps/theming/l10n/nb.json +++ b/apps/theming/l10n/nb.json @@ -1,11 +1,12 @@ { "translations": { + "Loading preview…" : "Laster forhåndsvisning...", + "Saved" : "Lagret", "Admin" : "Admin", "a safe home for all your data" : "et trygt hjem for alle dine data", "The given name is too long" : "Navnet er for langt", "The given web address is too long" : "Nettadressen er for lang", "The given slogan is too long" : "Slagordet er for langt", "The given color is invalid" : "Fargen er ugyldig", - "Saved" : "Lagret", "No file uploaded" : "Ingen fil lastet opp", "Unsupported image type" : "Filtypen støttes ikke", "You are already using a custom theme" : "Du bruker allerede en egendefinert drakt", diff --git a/apps/theming/l10n/nl.js b/apps/theming/l10n/nl.js index 509333859af..55db4422623 100644 --- a/apps/theming/l10n/nl.js +++ b/apps/theming/l10n/nl.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Laden voorbeeld...", + "Saved" : "Opgeslagen", "Admin" : "Beheer", "a safe home for all your data" : "een veilige plek voor al je gegevens", "The given name is too long" : "De opgegeven naam is te lang", "The given web address is too long" : "Het opgegeven internetadres is te lang", "The given slogan is too long" : "De opgegeven slagzin is te lang", "The given color is invalid" : "De opgegeven kleur is ongeldig", - "Saved" : "Opgeslagen", "No file uploaded" : "Geen bestand geüpload", "Unsupported image type" : "Afbeeldingstype wordt niet ondersteund", "You are already using a custom theme" : "Je gebruikt al een maatwerkthema", "Theming" : "Thema's", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Thematiseren maakt het mogelijk om uiterlijk en gevoel van je systeem en ondersteunde clients aan te passen. Dit wordt zichtbaar voor alle gebruikers.", "Name" : "Naam", "reset to default" : "herstellen naar standaard", "Web address" : "Webadres", diff --git a/apps/theming/l10n/nl.json b/apps/theming/l10n/nl.json index df816256bb5..7ac43b24ea7 100644 --- a/apps/theming/l10n/nl.json +++ b/apps/theming/l10n/nl.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Laden voorbeeld...", + "Saved" : "Opgeslagen", "Admin" : "Beheer", "a safe home for all your data" : "een veilige plek voor al je gegevens", "The given name is too long" : "De opgegeven naam is te lang", "The given web address is too long" : "Het opgegeven internetadres is te lang", "The given slogan is too long" : "De opgegeven slagzin is te lang", "The given color is invalid" : "De opgegeven kleur is ongeldig", - "Saved" : "Opgeslagen", "No file uploaded" : "Geen bestand geüpload", "Unsupported image type" : "Afbeeldingstype wordt niet ondersteund", "You are already using a custom theme" : "Je gebruikt al een maatwerkthema", "Theming" : "Thema's", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Thematiseren maakt het mogelijk om uiterlijk en gevoel van je systeem en ondersteunde clients aan te passen. Dit wordt zichtbaar voor alle gebruikers.", "Name" : "Naam", "reset to default" : "herstellen naar standaard", "Web address" : "Webadres", diff --git a/apps/theming/l10n/pl.js b/apps/theming/l10n/pl.js index 59ee1aa3c78..41d15ff7612 100644 --- a/apps/theming/l10n/pl.js +++ b/apps/theming/l10n/pl.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Ładowanie podglądu...", + "Saved" : "Zapisano", "Admin" : "Admin", "a safe home for all your data" : "bezpieczna schowek dla wszystkich twoich danych", "The given name is too long" : "Wpisana nazwa jest zbyt długi", "The given web address is too long" : "Wpisany adres internetowy jest zbyt długi", "The given slogan is too long" : "Wpisany slogan jest zbyt długi", "The given color is invalid" : "Podany kolor jest nieprawidłowy", - "Saved" : "Zapisano", "No file uploaded" : "Nie wysłano pliku", "Unsupported image type" : "Nieobsługiwany typ zdjęcia", "You are already using a custom theme" : "Używasz już motywu niestandarowego", "Theming" : "Motyw", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motywy pozwalają na łatwą personalizację wyglądu Twojej instancji i wpsieranych klientów. Efekty będą widoczne dla wszystkich użytkowników.", "Name" : "Nazwa", "reset to default" : "przywróć domyślne", "Web address" : "adres internetowy", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "Wyślij nowe logo", "Login image" : "Obraz logowania", "Upload new login background" : "Wyślij nowe tło ekranu logowania", + "Remove background image" : "Usuń obraz tła", "Log in image" : "Zdjęcie logowania" }, "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/theming/l10n/pl.json b/apps/theming/l10n/pl.json index 2f191dc13d5..bc1c42fd709 100644 --- a/apps/theming/l10n/pl.json +++ b/apps/theming/l10n/pl.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Ładowanie podglądu...", + "Saved" : "Zapisano", "Admin" : "Admin", "a safe home for all your data" : "bezpieczna schowek dla wszystkich twoich danych", "The given name is too long" : "Wpisana nazwa jest zbyt długi", "The given web address is too long" : "Wpisany adres internetowy jest zbyt długi", "The given slogan is too long" : "Wpisany slogan jest zbyt długi", "The given color is invalid" : "Podany kolor jest nieprawidłowy", - "Saved" : "Zapisano", "No file uploaded" : "Nie wysłano pliku", "Unsupported image type" : "Nieobsługiwany typ zdjęcia", "You are already using a custom theme" : "Używasz już motywu niestandarowego", "Theming" : "Motyw", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Motywy pozwalają na łatwą personalizację wyglądu Twojej instancji i wpsieranych klientów. Efekty będą widoczne dla wszystkich użytkowników.", "Name" : "Nazwa", "reset to default" : "przywróć domyślne", "Web address" : "adres internetowy", @@ -20,6 +22,7 @@ "Upload new logo" : "Wyślij nowe logo", "Login image" : "Obraz logowania", "Upload new login background" : "Wyślij nowe tło ekranu logowania", + "Remove background image" : "Usuń obraz tła", "Log in image" : "Zdjęcie logowania" },"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/theming/l10n/pt_BR.js b/apps/theming/l10n/pt_BR.js index e789208c47e..f096255d497 100644 --- a/apps/theming/l10n/pt_BR.js +++ b/apps/theming/l10n/pt_BR.js @@ -1,27 +1,30 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Carregando pré-visualização...", + "Saved" : "Salva", "Admin" : "Administrador", "a safe home for all your data" : "um lugar seguro para seus dados", "The given name is too long" : "O nome é muito longo", - "The given web address is too long" : "O endereço da Web fornecido é muito longo", + "The given web address is too long" : "O endereço web fornecido é muito longo", "The given slogan is too long" : "O slogan dado é muito longo", "The given color is invalid" : "A cor fornecida é inválida", - "Saved" : "Salva", "No file uploaded" : "Nenhum arquivo enviado", "Unsupported image type" : "Tipo de imagem não suportado", "You are already using a custom theme" : "Você já está usando um tema personalizado", "Theming" : "Personalização", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Criar e alterar temas torna possível personalizar facilmente o Nextcloud e clientes suportados. Isso será visível a todos os usuários.", "Name" : "Nome", "reset to default" : "restaurar ao padrão", - "Web address" : "Endereço da Web", - "Web address https://…" : "Endereço da Web https://...", + "Web address" : "Endereço web", + "Web address https://…" : "Endereço web https://...", "Slogan" : "Slogan", "Color" : "Cor", "Logo" : "Logotipo", "Upload new logo" : "Enviar novo logotipo", "Login image" : "Imagem de login", "Upload new login background" : "Enviar nova imagem de fundo para o login", + "Remove background image" : "Excluir a imagem de fundo", "Log in image" : "Imagem de fundo do login" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/theming/l10n/pt_BR.json b/apps/theming/l10n/pt_BR.json index 95bfcea2bc0..525cce43f45 100644 --- a/apps/theming/l10n/pt_BR.json +++ b/apps/theming/l10n/pt_BR.json @@ -1,25 +1,28 @@ { "translations": { + "Loading preview…" : "Carregando pré-visualização...", + "Saved" : "Salva", "Admin" : "Administrador", "a safe home for all your data" : "um lugar seguro para seus dados", "The given name is too long" : "O nome é muito longo", - "The given web address is too long" : "O endereço da Web fornecido é muito longo", + "The given web address is too long" : "O endereço web fornecido é muito longo", "The given slogan is too long" : "O slogan dado é muito longo", "The given color is invalid" : "A cor fornecida é inválida", - "Saved" : "Salva", "No file uploaded" : "Nenhum arquivo enviado", "Unsupported image type" : "Tipo de imagem não suportado", "You are already using a custom theme" : "Você já está usando um tema personalizado", "Theming" : "Personalização", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Criar e alterar temas torna possível personalizar facilmente o Nextcloud e clientes suportados. Isso será visível a todos os usuários.", "Name" : "Nome", "reset to default" : "restaurar ao padrão", - "Web address" : "Endereço da Web", - "Web address https://…" : "Endereço da Web https://...", + "Web address" : "Endereço web", + "Web address https://…" : "Endereço web https://...", "Slogan" : "Slogan", "Color" : "Cor", "Logo" : "Logotipo", "Upload new logo" : "Enviar novo logotipo", "Login image" : "Imagem de login", "Upload new login background" : "Enviar nova imagem de fundo para o login", + "Remove background image" : "Excluir a imagem de fundo", "Log in image" : "Imagem de fundo do login" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/ru.js b/apps/theming/l10n/ru.js index 817adbbdc1d..88c5e7bebf0 100644 --- a/apps/theming/l10n/ru.js +++ b/apps/theming/l10n/ru.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Загружается предпросмотр…", + "Saved" : "Сохранено", "Admin" : "Администратор", "a safe home for all your data" : "надежный дом для всех ваших данных", "The given name is too long" : "Указанное название слишком длинное", "The given web address is too long" : "Указанный веб адрес слишком длинный", "The given slogan is too long" : "Указанный слоган слишком длинный", "The given color is invalid" : "Задан неправильный цвет", - "Saved" : "Сохранено", "No file uploaded" : "Нет загруженных файлов", "Unsupported image type" : "Неподдерживаемый тип изображения", "You are already using a custom theme" : "Вы уже используете настраиваемую тему", "Theming" : "Темы оформления", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Темы оформление позволяют легко настроить внешний вид вашего сервера и поддерживаемых клиентов. Это будет доступно для всех пользователей.", "Name" : "Название", "reset to default" : "сброс до настроек по-умолчанию", "Web address" : "Веб адрес", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "Загрузить новый логотип", "Login image" : "Изображение экрана входа в систему", "Upload new login background" : "Загрузить новый фон для экрана входа в систему", + "Remove background image" : "Убрать фоновое изображение ", "Log in image" : "Изображение экрана входа в систему" }, "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/theming/l10n/ru.json b/apps/theming/l10n/ru.json index 3666c2a0d63..01d381117a8 100644 --- a/apps/theming/l10n/ru.json +++ b/apps/theming/l10n/ru.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Загружается предпросмотр…", + "Saved" : "Сохранено", "Admin" : "Администратор", "a safe home for all your data" : "надежный дом для всех ваших данных", "The given name is too long" : "Указанное название слишком длинное", "The given web address is too long" : "Указанный веб адрес слишком длинный", "The given slogan is too long" : "Указанный слоган слишком длинный", "The given color is invalid" : "Задан неправильный цвет", - "Saved" : "Сохранено", "No file uploaded" : "Нет загруженных файлов", "Unsupported image type" : "Неподдерживаемый тип изображения", "You are already using a custom theme" : "Вы уже используете настраиваемую тему", "Theming" : "Темы оформления", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Темы оформление позволяют легко настроить внешний вид вашего сервера и поддерживаемых клиентов. Это будет доступно для всех пользователей.", "Name" : "Название", "reset to default" : "сброс до настроек по-умолчанию", "Web address" : "Веб адрес", @@ -20,6 +22,7 @@ "Upload new logo" : "Загрузить новый логотип", "Login image" : "Изображение экрана входа в систему", "Upload new login background" : "Загрузить новый фон для экрана входа в систему", + "Remove background image" : "Убрать фоновое изображение ", "Log in image" : "Изображение экрана входа в систему" },"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/theming/l10n/sk.js b/apps/theming/l10n/sk.js index f735ce5a409..8a01b6f2f4a 100644 --- a/apps/theming/l10n/sk.js +++ b/apps/theming/l10n/sk.js @@ -1,13 +1,13 @@ OC.L10N.register( "theming", { + "Saved" : "Uložené", "Admin" : "Správca", "a safe home for all your data" : "bezpečný domov pre všetky vaše dáta", "The given name is too long" : "Zadané meno je príliš dlhé", "The given web address is too long" : "Zadaná web adresa je príliš dlhá", "The given slogan is too long" : "Zadaný slogan je príliš dlhý", "The given color is invalid" : "Zadaná farba nie je platná", - "Saved" : "Uložené", "No file uploaded" : "Žiadny súbor nebol nahraný", "Unsupported image type" : "Typ obrázka nie je podporovaný", "You are already using a custom theme" : "Už používate upravený vzhľad", diff --git a/apps/theming/l10n/sk.json b/apps/theming/l10n/sk.json index 31ab56f00c0..4cbac33e811 100644 --- a/apps/theming/l10n/sk.json +++ b/apps/theming/l10n/sk.json @@ -1,11 +1,11 @@ { "translations": { + "Saved" : "Uložené", "Admin" : "Správca", "a safe home for all your data" : "bezpečný domov pre všetky vaše dáta", "The given name is too long" : "Zadané meno je príliš dlhé", "The given web address is too long" : "Zadaná web adresa je príliš dlhá", "The given slogan is too long" : "Zadaný slogan je príliš dlhý", "The given color is invalid" : "Zadaná farba nie je platná", - "Saved" : "Uložené", "No file uploaded" : "Žiadny súbor nebol nahraný", "Unsupported image type" : "Typ obrázka nie je podporovaný", "You are already using a custom theme" : "Už používate upravený vzhľad", diff --git a/apps/theming/l10n/sv.js b/apps/theming/l10n/sv.js index 7b75d1d8511..cbc5282d8bd 100644 --- a/apps/theming/l10n/sv.js +++ b/apps/theming/l10n/sv.js @@ -1,13 +1,13 @@ OC.L10N.register( "theming", { + "Saved" : "Sparat", "Admin" : "Admin", "a safe home for all your data" : "En säker plats för alla dina filer och data", "The given name is too long" : "Det angivna namnet är för långt", "The given web address is too long" : "Den angivna adressen är för lång", "The given slogan is too long" : "Den angivna slogan är för lång", "The given color is invalid" : "Den angivna färgen är inte tillgänglig", - "Saved" : "Sparat", "No file uploaded" : "Ingen fil uppladdad", "Unsupported image type" : "Filtypen är ej giltig", "You are already using a custom theme" : "Du använder redan ett annat tema", diff --git a/apps/theming/l10n/sv.json b/apps/theming/l10n/sv.json index 3de28c76008..ecd37a0753c 100644 --- a/apps/theming/l10n/sv.json +++ b/apps/theming/l10n/sv.json @@ -1,11 +1,11 @@ { "translations": { + "Saved" : "Sparat", "Admin" : "Admin", "a safe home for all your data" : "En säker plats för alla dina filer och data", "The given name is too long" : "Det angivna namnet är för långt", "The given web address is too long" : "Den angivna adressen är för lång", "The given slogan is too long" : "Den angivna slogan är för lång", "The given color is invalid" : "Den angivna färgen är inte tillgänglig", - "Saved" : "Sparat", "No file uploaded" : "Ingen fil uppladdad", "Unsupported image type" : "Filtypen är ej giltig", "You are already using a custom theme" : "Du använder redan ett annat tema", diff --git a/apps/theming/l10n/tr.js b/apps/theming/l10n/tr.js index a48fd2327d0..afb505cdcda 100644 --- a/apps/theming/l10n/tr.js +++ b/apps/theming/l10n/tr.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "Önizleme yükleniyor...", + "Saved" : "Kaydedildi", "Admin" : "Yönetici", "a safe home for all your data" : "verileriniz için güvenli bir barınak", "The given name is too long" : "Belirtilen ad çok uzun", "The given web address is too long" : "Belirtilen web adresi çok uzun", "The given slogan is too long" : "Belirtilen slogan çok uzun", "The given color is invalid" : "Belirtilen renk geçersiz", - "Saved" : "Kaydedildi", "No file uploaded" : "Herhangi bir dosya yüklenmemiş", "Unsupported image type" : "Görsel türü desteklenmiyor", "You are already using a custom theme" : "Zaten özel bir tema kullanıyorsunuz", "Theming" : "Tema", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Temalar kullandığınız kopyanın ve desteklenen istemcilerin genel görünümün kolayca değiştirilmesini sağlar. Tüm kullanıcılara görüntülenir.", "Name" : "Ad", "reset to default" : "varsayılana dön", "Web address" : "Web adresi", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "Yeni logo yükle", "Login image" : "Oturum açma görseli", "Upload new login background" : "Yeni oturum açma art alanı yükle", + "Remove background image" : "Art alan görselini kaldır", "Log in image" : "Oturum açma görseli" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/theming/l10n/tr.json b/apps/theming/l10n/tr.json index 4e2071a0cf9..b26920471b1 100644 --- a/apps/theming/l10n/tr.json +++ b/apps/theming/l10n/tr.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "Önizleme yükleniyor...", + "Saved" : "Kaydedildi", "Admin" : "Yönetici", "a safe home for all your data" : "verileriniz için güvenli bir barınak", "The given name is too long" : "Belirtilen ad çok uzun", "The given web address is too long" : "Belirtilen web adresi çok uzun", "The given slogan is too long" : "Belirtilen slogan çok uzun", "The given color is invalid" : "Belirtilen renk geçersiz", - "Saved" : "Kaydedildi", "No file uploaded" : "Herhangi bir dosya yüklenmemiş", "Unsupported image type" : "Görsel türü desteklenmiyor", "You are already using a custom theme" : "Zaten özel bir tema kullanıyorsunuz", "Theming" : "Tema", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Temalar kullandığınız kopyanın ve desteklenen istemcilerin genel görünümün kolayca değiştirilmesini sağlar. Tüm kullanıcılara görüntülenir.", "Name" : "Ad", "reset to default" : "varsayılana dön", "Web address" : "Web adresi", @@ -20,6 +22,7 @@ "Upload new logo" : "Yeni logo yükle", "Login image" : "Oturum açma görseli", "Upload new login background" : "Yeni oturum açma art alanı yükle", + "Remove background image" : "Art alan görselini kaldır", "Log in image" : "Oturum açma görseli" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/theming/l10n/vi.js b/apps/theming/l10n/vi.js index 5dbedc87f7b..4bc27a36332 100644 --- a/apps/theming/l10n/vi.js +++ b/apps/theming/l10n/vi.js @@ -1,11 +1,11 @@ OC.L10N.register( "theming", { + "Saved" : "Đã lưu", "The given name is too long" : "Tên quá dài", "The given web address is too long" : "Địa chỉ web quá dài", "The given slogan is too long" : "Khẩu hiệu quá dài", "The given color is invalid" : "Màu đã chọn không hợp lệ", - "Saved" : "Đã lưu", "No file uploaded" : "Không có tệp nào được tải lên", "Unsupported image type" : "Loại hình ảnh không được hỗ trợ", "You are already using a custom theme" : "Bạn đã sử dụng một chủ đề tuỳ chỉnh", diff --git a/apps/theming/l10n/vi.json b/apps/theming/l10n/vi.json index de50a696d82..dac197289d7 100644 --- a/apps/theming/l10n/vi.json +++ b/apps/theming/l10n/vi.json @@ -1,9 +1,9 @@ { "translations": { + "Saved" : "Đã lưu", "The given name is too long" : "Tên quá dài", "The given web address is too long" : "Địa chỉ web quá dài", "The given slogan is too long" : "Khẩu hiệu quá dài", "The given color is invalid" : "Màu đã chọn không hợp lệ", - "Saved" : "Đã lưu", "No file uploaded" : "Không có tệp nào được tải lên", "Unsupported image type" : "Loại hình ảnh không được hỗ trợ", "You are already using a custom theme" : "Bạn đã sử dụng một chủ đề tuỳ chỉnh", diff --git a/apps/theming/l10n/zh_CN.js b/apps/theming/l10n/zh_CN.js index a8be448fe93..8dae780b651 100644 --- a/apps/theming/l10n/zh_CN.js +++ b/apps/theming/l10n/zh_CN.js @@ -1,17 +1,19 @@ OC.L10N.register( "theming", { + "Loading preview…" : "正在加载预览...", + "Saved" : "已保存", "Admin" : "管理", "a safe home for all your data" : "给您所有的数据一个安全的家", "The given name is too long" : "输入的名称过长", "The given web address is too long" : "输入的地址过长", "The given slogan is too long" : "输入的标语过长", "The given color is invalid" : "提供的颜色无效", - "Saved" : "已保存", "No file uploaded" : "文件没有上传", "Unsupported image type" : "不支持图片格式", "You are already using a custom theme" : "你已经在使用自定义主题", "Theming" : "主题", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "主题使得方便地定制你的实例的外观和体验成为可能。所有用户都可以使用。", "Name" : "名字", "reset to default" : "重置默认", "Web address" : "网址", @@ -22,6 +24,7 @@ OC.L10N.register( "Upload new logo" : "上传新标志", "Login image" : "登录图片", "Upload new login background" : "上传新登录背景", + "Remove background image" : "删除背景图片", "Log in image" : "登录图片" }, "nplurals=1; plural=0;"); diff --git a/apps/theming/l10n/zh_CN.json b/apps/theming/l10n/zh_CN.json index 9fab5a516ea..9075d74f638 100644 --- a/apps/theming/l10n/zh_CN.json +++ b/apps/theming/l10n/zh_CN.json @@ -1,15 +1,17 @@ { "translations": { + "Loading preview…" : "正在加载预览...", + "Saved" : "已保存", "Admin" : "管理", "a safe home for all your data" : "给您所有的数据一个安全的家", "The given name is too long" : "输入的名称过长", "The given web address is too long" : "输入的地址过长", "The given slogan is too long" : "输入的标语过长", "The given color is invalid" : "提供的颜色无效", - "Saved" : "已保存", "No file uploaded" : "文件没有上传", "Unsupported image type" : "不支持图片格式", "You are already using a custom theme" : "你已经在使用自定义主题", "Theming" : "主题", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "主题使得方便地定制你的实例的外观和体验成为可能。所有用户都可以使用。", "Name" : "名字", "reset to default" : "重置默认", "Web address" : "网址", @@ -20,6 +22,7 @@ "Upload new logo" : "上传新标志", "Login image" : "登录图片", "Upload new login background" : "上传新登录背景", + "Remove background image" : "删除背景图片", "Log in image" : "登录图片" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php index b2d603bb68a..225673079a3 100644 --- a/apps/theming/lib/Controller/ThemingController.php +++ b/apps/theming/lib/Controller/ThemingController.php @@ -40,6 +40,7 @@ use OCP\AppFramework\Utility\ITimeFactory; use OCP\Files\File; use OCP\Files\IAppData; use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; use OCP\IConfig; use OCP\IL10N; use OCP\ILogger; @@ -163,6 +164,10 @@ class ThemingController extends Controller { } $this->themingDefaults->set($setting, $value); + + // reprocess server scss for preview + $cssCached = $this->scssCacher->process(\OC::$SERVERROOT, '/core/css/server.scss', 'core'); + return new DataResponse( [ 'data' => @@ -180,6 +185,20 @@ class ThemingController extends Controller { * @return DataResponse */ public function updateLogo() { + $backgroundColor = $this->request->getParam('backgroundColor', false); + if($backgroundColor) { + $this->themingDefaults->set('backgroundMime', 'backgroundColor'); + return new DataResponse( + [ + 'data' => + [ + 'name' => 'backgroundColor', + 'message' => $this->l10n->t('Saved') + ], + 'status' => 'success' + ] + ); + } $newLogo = $this->request->getUploadedFile('uploadlogo'); $newBackgroundLogo = $this->request->getUploadedFile('upload-login-background'); if (empty($newLogo) && empty($newBackgroundLogo)) { @@ -259,6 +278,26 @@ class ThemingController extends Controller { */ public function undo($setting) { $value = $this->themingDefaults->undo($setting); + // reprocess server scss for preview + $cssCached = $this->scssCacher->process(\OC::$SERVERROOT, '/core/css/server.scss', 'core'); + + if($setting === 'logoMime') { + try { + $file = $this->appData->getFolder('images')->getFile('logo'); + $file->delete(); + } catch (NotFoundException $e) { + } catch (NotPermittedException $e) { + } + } + if($setting === 'backgroundMime') { + try { + $file = $this->appData->getFolder('images')->getFile('background'); + $file->delete(); + } catch (NotFoundException $e) { + } catch (NotPermittedException $e) { + } + } + return new DataResponse( [ 'data' => diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index 85ad11943dd..0824a36ccdc 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -66,11 +66,11 @@ class ThemingDefaults extends \OC_Defaults { public function __construct(IConfig $config, IL10N $l, IURLGenerator $urlGenerator, - \OC_Defaults $defaults, IAppData $appData, ICacheFactory $cacheFactory, Util $util ) { + parent::__construct(); $this->config = $config; $this->l = $l; $this->urlGenerator = $urlGenerator; @@ -78,10 +78,10 @@ class ThemingDefaults extends \OC_Defaults { $this->cacheFactory = $cacheFactory; $this->util = $util; - $this->name = $defaults->getName(); - $this->url = $defaults->getBaseUrl(); - $this->slogan = $defaults->getSlogan(); - $this->color = $defaults->getColorPrimary(); + $this->name = parent::getName(); + $this->url = parent::getBaseUrl(); + $this->slogan = parent::getSlogan(); + $this->color = parent::getColorPrimary(); } public function getName() { @@ -129,9 +129,10 @@ class ThemingDefaults extends \OC_Defaults { /** * Themed logo url * + * @param bool $useSvg Whether to point to the SVG image or a fallback * @return string */ - public function getLogo() { + public function getLogo($useSvg = true) { $logo = $this->config->getAppValue('theming', 'logoMime', false); $logoExists = true; @@ -144,7 +145,12 @@ class ThemingDefaults extends \OC_Defaults { $cacheBusterCounter = $this->config->getAppValue('theming', 'cachebuster', '0'); if(!$logo || !$logoExists) { - return $this->urlGenerator->imagePath('core','logo.svg') . '?v=' . $cacheBusterCounter; + if($useSvg) { + $logo = $this->urlGenerator->imagePath('core', 'logo.svg'); + } else { + $logo = $this->urlGenerator->imagePath('core', 'logo.png'); + } + return $logo . '?v=' . $cacheBusterCounter; } return $this->urlGenerator->linkToRoute('theming.Theming.getLogo') . '?v=' . $cacheBusterCounter; @@ -165,11 +171,13 @@ class ThemingDefaults extends \OC_Defaults { $backgroundExists = false; } + $cacheBusterCounter = $this->config->getAppValue('theming', 'cachebuster', '0'); + if(!$backgroundLogo || !$backgroundExists) { - return $this->urlGenerator->imagePath('core','background.jpg'); + return $this->urlGenerator->imagePath('core','background.jpg') . '?v=' . $cacheBusterCounter; } - return $this->urlGenerator->linkToRoute('theming.Theming.getLoginBackground'); + return $this->urlGenerator->linkToRoute('theming.Theming.getLoginBackground') . '?v=' . $cacheBusterCounter; } @@ -188,6 +196,7 @@ class ThemingDefaults extends \OC_Defaults { $variables['image-logo'] = "'".$this->urlGenerator->getAbsoluteURL($this->getLogo())."'"; $variables['image-login-background'] = "'".$this->urlGenerator->getAbsoluteURL($this->getBackground())."'"; + $variables['image-login-plain'] = 'false'; if ($this->config->getAppValue('theming', 'color', null) !== null) { if ($this->util->invertTextColor($this->getColorPrimary())) { @@ -198,6 +207,10 @@ class ThemingDefaults extends \OC_Defaults { $variables['color-primary'] = $this->getColorPrimary(); $variables['color-primary-text'] = $colorPrimaryText; } + + if ($this->config->getAppValue('theming', 'backgroundMime', null) === 'backgroundColor') { + $variables['image-login-plain'] = 'true'; + } $cache->set('getScssVariables', $variables); return $variables; } diff --git a/apps/theming/templates/settings-admin.php b/apps/theming/templates/settings-admin.php index 61fe57c3c75..858b916c932 100644 --- a/apps/theming/templates/settings-admin.php +++ b/apps/theming/templates/settings-admin.php @@ -28,8 +28,11 @@ style('theming', 'settings-admin'); ?> <div id="theming" class="section"> <h2 class="inlineblock"><?php p($l->t('Theming')); ?></h2> - <p class="settings-hint"><?php p($l->t('Theming makes it possible to easily customize the look and feel of your instance. This will be visible for all users.')); ?></p> - <div id="theming_settings_msg" class="msg success inlineblock" style="display: none;">Saved</div> + <p class="settings-hint"><?php p($l->t('Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.')); ?></p> + <div id="theming_settings_status"> + <div id="theming_settings_loading" class="icon-loading-small" style="display: none;"></div> + <span id="theming_settings_msg" class="msg success" style="display: none;">Saved</span> + </div> <?php if ($_['themable'] === false) { ?> <p> <?php p($_['errorMessage']) ?> @@ -64,7 +67,7 @@ style('theming', 'settings-admin'); </label> </div> <div> - <form class="uploadButton inlineblock" method="post" action="<?php p($_['uploadLogoRoute']) ?>"> + <form class="uploadButton" method="post" action="<?php p($_['uploadLogoRoute']) ?>"> <input type="hidden" id="current-logoMime" name="current-logoMime" value="<?php p($_['logoMime']); ?>" /> <label for="uploadlogo"><span><?php p($l->t('Logo')) ?></span></label> <input id="uploadlogo" class="upload-logo-field" name="uploadlogo" type="file" /> @@ -73,16 +76,16 @@ style('theming', 'settings-admin'); </form> </div> <div> - <form class="uploadButton inlineblock" method="post" action="<?php p($_['uploadLogoRoute']) ?>"> + <form class="uploadButton" method="post" action="<?php p($_['uploadLogoRoute']) ?>"> <input type="hidden" id="current-backgroundMime" name="current-backgroundMime" value="<?php p($_['backgroundMime']); ?>" /> <label for="upload-login-background"><span><?php p($l->t('Login image')) ?></span></label> <input id="upload-login-background" class="upload-logo-field" name="upload-login-background" type="file"> <label for="upload-login-background" class="button icon-upload svg" id="upload-login-background" title="<?php p($l->t("Upload new login background")) ?>"></label> <div data-setting="backgroundMime" data-toggle="tooltip" data-original-title="<?php p($l->t('reset to default')); ?>" class="theme-undo icon icon-history"></div> + <div class="theme-remove-bg icon icon-delete" data-toggle="tooltip" data-original-title="<?php p($l->t('Remove background image')); ?>"></div> </form> </div> - - <div id="theming-preview" style="background-color:<?php p($_['color']);?>; background-image:url(<?php p($_['background']); ?>);"> + <div id="theming-preview"> <img src="<?php p($_['logo']); ?>" id="theming-preview-logo" /> </div> <?php } ?> diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index 0aa9ead3742..cbdb86d0358 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -152,11 +152,16 @@ class ThemingControllerTest extends TestCase { public function testUpdateLogoNoData() { $this->request ->expects($this->at(0)) + ->method('getParam') + ->with('backgroundColor') + ->willReturn(false); + $this->request + ->expects($this->at(1)) ->method('getUploadedFile') ->with('uploadlogo') ->willReturn(null); $this->request - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getUploadedFile') ->with('upload-login-background') ->willReturn(null); @@ -179,6 +184,29 @@ class ThemingControllerTest extends TestCase { $this->assertEquals($expected, $this->themingController->updateLogo()); } + public function testUpdateBackgroundColor() { + $this->request + ->expects($this->at(0)) + ->method('getParam') + ->with('backgroundColor') + ->willReturn(true); + $this->themingDefaults + ->expects($this->once()) + ->method('set') + ->with('backgroundMime', 'backgroundColor'); + $expected = new DataResponse( + [ + 'data' => + [ + 'name' => 'backgroundColor', + 'message' => $this->l10n->t('Saved') + ], + 'status' => 'success' + ] + ); + $this->assertEquals($expected, $this->themingController->updateLogo()); + } + public function dataUpdateImages() { return [ [false], @@ -194,6 +222,11 @@ class ThemingControllerTest extends TestCase { touch($tmpLogo); $this->request ->expects($this->at(0)) + ->method('getParam') + ->with('backgroundColor') + ->willReturn(false); + $this->request + ->expects($this->at(1)) ->method('getUploadedFile') ->with('uploadlogo') ->willReturn([ @@ -202,7 +235,7 @@ class ThemingControllerTest extends TestCase { 'name' => 'logo.svg', ]); $this->request - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getUploadedFile') ->with('upload-login-background') ->willReturn(null); @@ -259,11 +292,16 @@ class ThemingControllerTest extends TestCase { file_put_contents($tmpLogo, file_get_contents(__DIR__ . '/../../../../tests/data/desktopapp.png')); $this->request ->expects($this->at(0)) + ->method('getParam') + ->with('backgroundColor') + ->willReturn(false); + $this->request + ->expects($this->at(1)) ->method('getUploadedFile') ->with('uploadlogo') ->willReturn(null); $this->request - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getUploadedFile') ->with('upload-login-background') ->willReturn([ @@ -322,11 +360,16 @@ class ThemingControllerTest extends TestCase { file_put_contents($tmpLogo, file_get_contents(__DIR__ . '/../../../../tests/data/data.zip')); $this->request ->expects($this->at(0)) + ->method('getParam') + ->with('backgroundColor') + ->willReturn(false); + $this->request + ->expects($this->at(1)) ->method('getUploadedFile') ->with('uploadlogo') ->willReturn(null); $this->request - ->expects($this->at(1)) + ->expects($this->at(2)) ->method('getUploadedFile') ->with('upload-login-background') ->willReturn([ @@ -385,6 +428,56 @@ class ThemingControllerTest extends TestCase { $this->assertEquals($expected, $this->themingController->undo('MySetting')); } + public function dataUndoDelete() { + return [ + [ 'backgroundMime', 'background' ], + [ 'logoMime', 'logo' ] + ]; + } + + /** @dataProvider dataUndoDelete */ + public function testUndoDelete($value, $filename) { + $this->l10n + ->expects($this->once()) + ->method('t') + ->with('Saved') + ->willReturn('Saved'); + $this->themingDefaults + ->expects($this->once()) + ->method('undo') + ->with($value) + ->willReturn($value); + $folder = $this->createMock(ISimpleFolder::class); + $file = $this->createMock(ISimpleFile::class); + $this->appData + ->expects($this->once()) + ->method('getFolder') + ->with('images') + ->willReturn($folder); + $folder + ->expects($this->once()) + ->method('getFile') + ->with($filename) + ->willReturn($file); + $file + ->expects($this->once()) + ->method('delete'); + + $expected = new DataResponse( + [ + 'data' => + [ + 'value' => $value, + 'message' => 'Saved', + ], + 'status' => 'success' + ] + ); + $this->assertEquals($expected, $this->themingController->undo($value)); + } + + + public function testGetLogoNotExistent() { $this->appData->method('getFolder') ->with($this->equalTo('images')) diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index f8ecc78d8ba..a7cb7790aa6 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -65,25 +65,7 @@ class ThemingDefaultsTest extends TestCase { $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->cache = $this->createMock(ICache::class); $this->util = $this->createMock(Util::class); - $this->defaults = $this->getMockBuilder(\OC_Defaults::class) - ->disableOriginalConstructor() - ->getMock(); - $this->defaults - ->expects($this->at(0)) - ->method('getName') - ->willReturn('Nextcloud'); - $this->defaults - ->expects($this->at(1)) - ->method('getBaseUrl') - ->willReturn('https://nextcloud.com/'); - $this->defaults - ->expects($this->at(2)) - ->method('getSlogan') - ->willReturn('Safe Data'); - $this->defaults - ->expects($this->at(3)) - ->method('getColorPrimary') - ->willReturn('#000'); + $this->defaults = new \OC_Defaults(); $this->cacheFactory ->expects($this->any()) ->method('create') @@ -93,7 +75,6 @@ class ThemingDefaultsTest extends TestCase { $this->config, $this->l10n, $this->urlGenerator, - $this->defaults, $this->appData, $this->cacheFactory, $this->util @@ -185,17 +166,17 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->once()) ->method('getAppValue') - ->with('theming', 'url', 'https://nextcloud.com/') - ->willReturn('https://nextcloud.com/'); + ->with('theming', 'url', $this->defaults->getBaseUrl()) + ->willReturn($this->defaults->getBaseUrl()); - $this->assertEquals('https://nextcloud.com/', $this->template->getBaseUrl()); + $this->assertEquals($this->defaults->getBaseUrl(), $this->template->getBaseUrl()); } public function testGetBaseUrlWithCustom() { $this->config ->expects($this->once()) ->method('getAppValue') - ->with('theming', 'url', 'https://nextcloud.com/') + ->with('theming', 'url', $this->defaults->getBaseUrl()) ->willReturn('https://example.com/'); $this->assertEquals('https://example.com/', $this->template->getBaseUrl()); @@ -205,17 +186,17 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->once()) ->method('getAppValue') - ->with('theming', 'slogan', 'Safe Data') - ->willReturn('Safe Data'); + ->with('theming', 'slogan', $this->defaults->getSlogan()) + ->willReturn($this->defaults->getSlogan()); - $this->assertEquals('Safe Data', $this->template->getSlogan()); + $this->assertEquals($this->defaults->getSlogan(), $this->template->getSlogan()); } public function testGetSloganWithCustom() { $this->config ->expects($this->once()) ->method('getAppValue') - ->with('theming', 'slogan', 'Safe Data') + ->with('theming', 'slogan', $this->defaults->getSlogan()) ->willReturn('My custom Slogan'); $this->assertEquals('My custom Slogan', $this->template->getSlogan()); @@ -226,9 +207,9 @@ class ThemingDefaultsTest extends TestCase { ->expects($this->exactly(3)) ->method('getAppValue') ->willReturnMap([ - ['theming', 'url', 'https://nextcloud.com/', 'url'], + ['theming', 'url', $this->defaults->getBaseUrl(), 'url'], ['theming', 'name', 'Nextcloud', 'Name'], - ['theming', 'slogan', 'Safe Data', 'Slogan'], + ['theming', 'slogan', $this->defaults->getSlogan(), 'Slogan'], ]); $this->assertEquals('<a href="url" target="_blank" rel="noreferrer">Name</a> – Slogan', $this->template->getShortFooter()); @@ -239,9 +220,9 @@ class ThemingDefaultsTest extends TestCase { ->expects($this->exactly(3)) ->method('getAppValue') ->willReturnMap([ - ['theming', 'url', 'https://nextcloud.com/', 'url'], + ['theming', 'url', $this->defaults->getBaseUrl(), 'url'], ['theming', 'name', 'Nextcloud', 'Name'], - ['theming', 'slogan', 'Safe Data', ''], + ['theming', 'slogan', $this->defaults->getSlogan(), ''], ]); $this->assertEquals('<a href="url" target="_blank" rel="noreferrer">Name</a>', $this->template->getShortFooter()); @@ -251,17 +232,17 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->once()) ->method('getAppValue') - ->with('theming', 'color', '#000') - ->willReturn('#000'); + ->with('theming', 'color', $this->defaults->getColorPrimary()) + ->willReturn($this->defaults->getColorPrimary()); - $this->assertEquals('#000', $this->template->getColorPrimary()); + $this->assertEquals($this->defaults->getColorPrimary(), $this->template->getColorPrimary()); } public function testgetColorPrimaryWithCustom() { $this->config ->expects($this->once()) ->method('getAppValue') - ->with('theming', 'color', '#000') + ->with('theming', 'color', $this->defaults->getColorPrimary()) ->willReturn('#fff'); $this->assertEquals('#fff', $this->template->getColorPrimary()); @@ -328,10 +309,10 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->at(3)) ->method('getAppValue') - ->with('theming', 'url', 'https://nextcloud.com/') - ->willReturn('https://nextcloud.com/'); + ->with('theming', 'url', $this->defaults->getBaseUrl()) + ->willReturn($this->defaults->getBaseUrl()); - $this->assertSame('https://nextcloud.com/', $this->template->undo('url')); + $this->assertSame($this->defaults->getBaseUrl(), $this->template->undo('url')); } public function testUndoSlogan() { @@ -351,10 +332,10 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->at(3)) ->method('getAppValue') - ->with('theming', 'slogan', 'Safe Data') - ->willReturn('Safe Data'); + ->with('theming', 'slogan', $this->defaults->getSlogan()) + ->willReturn($this->defaults->getSlogan()); - $this->assertSame('Safe Data', $this->template->undo('slogan')); + $this->assertSame($this->defaults->getSlogan(), $this->template->undo('slogan')); } public function testUndoColor() { @@ -374,10 +355,10 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->at(3)) ->method('getAppValue') - ->with('theming', 'color', '#000') - ->willReturn('#000'); + ->with('theming', 'color', $this->defaults->getColorPrimary()) + ->willReturn($this->defaults->getColorPrimary()); - $this->assertSame('#000', $this->template->undo('color')); + $this->assertSame($this->defaults->getColorPrimary(), $this->template->undo('color')); } public function testUndoDefaultAction() { @@ -403,10 +384,15 @@ class ThemingDefaultsTest extends TestCase { ->method('getFolder') ->willThrowException(new NotFoundException()); $this->config - ->expects($this->once()) + ->expects($this->at(0)) ->method('getAppValue') ->with('theming', 'backgroundMime') ->willReturn(''); + $this->config + ->expects($this->at(1)) + ->method('getAppValue') + ->with('theming', 'cachebuster', '0') + ->willReturn('0'); $this->appData ->expects($this->once()) ->method('getFolder') @@ -416,7 +402,7 @@ class ThemingDefaultsTest extends TestCase { ->method('imagePath') ->with('core', 'background.jpg') ->willReturn('core-background'); - $this->assertEquals('core-background', $this->template->getBackground()); + $this->assertEquals('core-background?v=0', $this->template->getBackground()); } public function testGetBackgroundCustom() { @@ -429,18 +415,23 @@ class ThemingDefaultsTest extends TestCase { ->method('getFolder') ->willReturn($folder); $this->config - ->expects($this->once()) + ->expects($this->at(0)) ->method('getAppValue') ->with('theming', 'backgroundMime', false) ->willReturn('image/svg+xml'); + $this->config + ->expects($this->at(1)) + ->method('getAppValue') + ->with('theming', 'cachebuster', '0') + ->willReturn('0'); $this->urlGenerator->expects($this->once()) ->method('linkToRoute') ->with('theming.Theming.getLoginBackground') ->willReturn('custom-background'); - $this->assertEquals('custom-background', $this->template->getBackground()); + $this->assertEquals('custom-background?v=0', $this->template->getBackground()); } - public function testGetLogoDefault() { + private function getLogoHelper($withName, $useSvg) { $this->appData->expects($this->once()) ->method('getFolder') ->willThrowException(new NotFoundException()); @@ -461,9 +452,17 @@ class ThemingDefaultsTest extends TestCase { ->willThrowException(new \Exception()); $this->urlGenerator->expects($this->once()) ->method('imagePath') - ->with('core', 'logo.svg') + ->with('core', $withName) ->willReturn('core-logo'); - $this->assertEquals('core-logo' . '?v=0', $this->template->getLogo()); + $this->assertEquals('core-logo?v=0', $this->template->getLogo($useSvg)); + } + + public function testGetLogoDefaultWithSvg() { + $this->getLogoHelper('logo.svg', true); + } + + public function testGetLogoDefaultWithoutSvg() { + $this->getLogoHelper('logo.png', false); } public function testGetLogoCustom() { @@ -502,11 +501,12 @@ class ThemingDefaultsTest extends TestCase { $this->config->expects($this->at(1))->method('getAppValue')->with('theming', 'logoMime', false)->willReturn('jpeg'); $this->config->expects($this->at(2))->method('getAppValue')->with('theming', 'cachebuster', '0')->willReturn('0'); $this->config->expects($this->at(3))->method('getAppValue')->with('theming', 'backgroundMime', false)->willReturn('jpeg'); - $this->config->expects($this->at(4))->method('getAppValue')->with('theming', 'color', null)->willReturn('#000000'); - $this->config->expects($this->at(5))->method('getAppValue')->with('theming', 'color', '#000')->willReturn('#000000'); - $this->config->expects($this->at(6))->method('getAppValue')->with('theming', 'color', '#000')->willReturn('#000000'); + $this->config->expects($this->at(4))->method('getAppValue')->with('theming', 'cachebuster', '0')->willReturn('0'); + $this->config->expects($this->at(5))->method('getAppValue')->with('theming', 'color', null)->willReturn($this->defaults->getColorPrimary()); + $this->config->expects($this->at(6))->method('getAppValue')->with('theming', 'color', $this->defaults->getColorPrimary())->willReturn($this->defaults->getColorPrimary()); + $this->config->expects($this->at(7))->method('getAppValue')->with('theming', 'color', $this->defaults->getColorPrimary())->willReturn($this->defaults->getColorPrimary()); - $this->util->expects($this->any())->method('invertTextColor')->with('#000000')->willReturn(false); + $this->util->expects($this->any())->method('invertTextColor')->with($this->defaults->getColorPrimary())->willReturn(false); $this->cache->expects($this->once())->method('get')->with('getScssVariables')->willReturn(null); $folder = $this->createMock(ISimpleFolder::class); $file = $this->createMock(ISimpleFile::class); @@ -531,9 +531,10 @@ class ThemingDefaultsTest extends TestCase { $expected = [ 'theming-cachebuster' => '\'0\'', 'image-logo' => "'absolute-custom-logo?v=0'", - 'image-login-background' => "'absolute-custom-background'", - 'color-primary' => '#000000', - 'color-primary-text' => '#ffffff' + 'image-login-background' => "'absolute-custom-background?v=0'", + 'color-primary' => $this->defaults->getColorPrimary(), + 'color-primary-text' => '#ffffff', + 'image-login-plain' => 'false' ]; $this->assertEquals($expected, $this->template->getScssVariables()); diff --git a/apps/twofactor_backupcodes/appinfo/app.php b/apps/twofactor_backupcodes/appinfo/app.php index 0cb10531360..34b4866af2d 100644 --- a/apps/twofactor_backupcodes/appinfo/app.php +++ b/apps/twofactor_backupcodes/appinfo/app.php @@ -1,7 +1,8 @@ <?php - /** - * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> * * @license GNU AGPL version 3 or any later version * @@ -20,6 +21,5 @@ * */ -// @codeCoverageIgnoreStart -OC_App::registerPersonal('twofactor_backupcodes', 'settings/personal'); -// @codeCoverageIgnoreEnd +$app = new \OCA\TwoFactorBackupCodes\AppInfo\Application(); +$app->register(); diff --git a/apps/twofactor_backupcodes/appinfo/database.xml b/apps/twofactor_backupcodes/appinfo/database.xml index 02ca7c93a1e..93b0c1ad563 100644 --- a/apps/twofactor_backupcodes/appinfo/database.xml +++ b/apps/twofactor_backupcodes/appinfo/database.xml @@ -5,7 +5,7 @@ <overwrite>false</overwrite> <charset>utf8</charset> <table> - <name>*dbprefix*twofactor_backup_codes</name> + <name>*dbprefix*twofactor_backupcodes</name> <declaration> <field> <name>id</name> @@ -37,7 +37,7 @@ </field> <index> - <name>two_factor_backupcodes_user_id</name> + <name>twofactor_backupcodes_uid</name> <field> <name>user_id</name> <sorting>ascending</sorting> diff --git a/apps/twofactor_backupcodes/appinfo/info.xml b/apps/twofactor_backupcodes/appinfo/info.xml index 42985d15481..e5e96eddcf9 100644 --- a/apps/twofactor_backupcodes/appinfo/info.xml +++ b/apps/twofactor_backupcodes/appinfo/info.xml @@ -5,7 +5,7 @@ <description>A two-factor auth backup codes provider</description> <licence>agpl</licence> <author>Christoph Wurst</author> - <version>1.1.0</version> + <version>1.1.1</version> <namespace>TwoFactorBackupCodes</namespace> <category>other</category> @@ -29,4 +29,10 @@ <provider>OCA\TwoFactorBackupCodes\Activity\Provider</provider> </providers> </activity> + + <repair-steps> + <post-migration> + <step>OCA\TwoFactorBackupCodes\Migration\CopyEntriesFromOldTable</step> + </post-migration> + </repair-steps> </info> diff --git a/apps/twofactor_backupcodes/css/style.css b/apps/twofactor_backupcodes/css/style.css index 0e15290b86a..396192b43a7 100644 --- a/apps/twofactor_backupcodes/css/style.css +++ b/apps/twofactor_backupcodes/css/style.css @@ -5,11 +5,13 @@ .challenge { margin-top: 0 !important; margin-left: 0 !important; + box-sizing: border-box !important; + width: 100% !important; } .confirm-inline { position: absolute; - right: 10px; + right: 0; top: 0; margin: 0 !important; padding-right: 25px !important; diff --git a/apps/twofactor_backupcodes/l10n/de.js b/apps/twofactor_backupcodes/l10n/de.js index 039b8bea68b..695b2a8accb 100644 --- a/apps/twofactor_backupcodes/l10n/de.js +++ b/apps/twofactor_backupcodes/l10n/de.js @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "Du hast Zwei-Faktor Sicherungs-Codes für Dein Konto erstellt", "Backup code" : "Backup-Code", "Use backup code" : "Backup-Code verwenden", + "Two factor backup codes" : "Zweifaktor-Backup-Codes", "Second-factor backup codes" : "Zweitfaktor-Backup-Codes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/de.json b/apps/twofactor_backupcodes/l10n/de.json index 6afdfa52ac4..0cd652e7693 100644 --- a/apps/twofactor_backupcodes/l10n/de.json +++ b/apps/twofactor_backupcodes/l10n/de.json @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "Du hast Zwei-Faktor Sicherungs-Codes für Dein Konto erstellt", "Backup code" : "Backup-Code", "Use backup code" : "Backup-Code verwenden", + "Two factor backup codes" : "Zweifaktor-Backup-Codes", "Second-factor backup codes" : "Zweitfaktor-Backup-Codes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/de_DE.js b/apps/twofactor_backupcodes/l10n/de_DE.js index 0764ef3b7a4..4ee7176cc4a 100644 --- a/apps/twofactor_backupcodes/l10n/de_DE.js +++ b/apps/twofactor_backupcodes/l10n/de_DE.js @@ -2,7 +2,7 @@ OC.L10N.register( "twofactor_backupcodes", { "Generate backup codes" : "Backup-Codes erzeugen", - "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Backup-Codes wurden erstellt. {{used}} von {{total}} Codes wurden verwandt.", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Backup-Codes wurden erstellt. {{used}} von {{total}} Codes wurden benutzt.", "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Dies sind Ihre Backup-Codes. Bitte speichern und/oder drucken Sie diese, da diese Codes später nicht mehr gelesen werden können", "Save backup codes" : "Backup-Codes speichern", "Print backup codes" : "Backup-Codes drucken", @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "Sie haben Zwei-Faktor Sicherungs-Codes für Ihr Konto erstellt", "Backup code" : "Backup-Code", "Use backup code" : "Verwende Backup-Code", + "Two factor backup codes" : "Zweifaktor Backup-Codes", "Second-factor backup codes" : "Zweitfaktor Backup-Codes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/de_DE.json b/apps/twofactor_backupcodes/l10n/de_DE.json index 43f36e49cb3..d5202046a00 100644 --- a/apps/twofactor_backupcodes/l10n/de_DE.json +++ b/apps/twofactor_backupcodes/l10n/de_DE.json @@ -1,6 +1,6 @@ { "translations": { "Generate backup codes" : "Backup-Codes erzeugen", - "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Backup-Codes wurden erstellt. {{used}} von {{total}} Codes wurden verwandt.", + "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "Backup-Codes wurden erstellt. {{used}} von {{total}} Codes wurden benutzt.", "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Dies sind Ihre Backup-Codes. Bitte speichern und/oder drucken Sie diese, da diese Codes später nicht mehr gelesen werden können", "Save backup codes" : "Backup-Codes speichern", "Print backup codes" : "Backup-Codes drucken", @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "Sie haben Zwei-Faktor Sicherungs-Codes für Ihr Konto erstellt", "Backup code" : "Backup-Code", "Use backup code" : "Verwende Backup-Code", + "Two factor backup codes" : "Zweifaktor Backup-Codes", "Second-factor backup codes" : "Zweitfaktor Backup-Codes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/es_MX.js b/apps/twofactor_backupcodes/l10n/es_MX.js index 8ef88c0cef3..398b4594a5e 100644 --- a/apps/twofactor_backupcodes/l10n/es_MX.js +++ b/apps/twofactor_backupcodes/l10n/es_MX.js @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "Usted ha creado códigos de respaldo de dos factores para su cuenta", "Backup code" : "Código de respaldo", "Use backup code" : "Use el código de respaldo", + "Two factor backup codes" : "Códigos de respaldo de dos factores", "Second-factor backup codes" : "Códigos de respaldo del segundo factor" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/es_MX.json b/apps/twofactor_backupcodes/l10n/es_MX.json index 179b29fd060..0d41fcea249 100644 --- a/apps/twofactor_backupcodes/l10n/es_MX.json +++ b/apps/twofactor_backupcodes/l10n/es_MX.json @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "Usted ha creado códigos de respaldo de dos factores para su cuenta", "Backup code" : "Código de respaldo", "Use backup code" : "Use el código de respaldo", + "Two factor backup codes" : "Códigos de respaldo de dos factores", "Second-factor backup codes" : "Códigos de respaldo del segundo factor" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/fr.js b/apps/twofactor_backupcodes/l10n/fr.js index f046128f474..f73bfa04a31 100644 --- a/apps/twofactor_backupcodes/l10n/fr.js +++ b/apps/twofactor_backupcodes/l10n/fr.js @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "Vous avez créé des codes de secours à deux facteurs pour votre compte", "Backup code" : "Code de récupération", "Use backup code" : "Utiliser un code de récupération", + "Two factor backup codes" : "Codes de récupération pour l'authentification en deux étapes", "Second-factor backup codes" : "Codes de récupération pour l'authentification en deux étapes" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/twofactor_backupcodes/l10n/fr.json b/apps/twofactor_backupcodes/l10n/fr.json index 6f7801119b9..29e4c216c62 100644 --- a/apps/twofactor_backupcodes/l10n/fr.json +++ b/apps/twofactor_backupcodes/l10n/fr.json @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "Vous avez créé des codes de secours à deux facteurs pour votre compte", "Backup code" : "Code de récupération", "Use backup code" : "Utiliser un code de récupération", + "Two factor backup codes" : "Codes de récupération pour l'authentification en deux étapes", "Second-factor backup codes" : "Codes de récupération pour l'authentification en deux étapes" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/is.js b/apps/twofactor_backupcodes/l10n/is.js index 56f0ba4ac63..c7c019bcf10 100644 --- a/apps/twofactor_backupcodes/l10n/is.js +++ b/apps/twofactor_backupcodes/l10n/is.js @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "Þú útbjóst tveggja-þrepa öryggisafritunarkóða fyrir aðganginn þinn", "Backup code" : "Öryggisafritunarkóði", "Use backup code" : "Nota öryggisafritunarkóða", + "Two factor backup codes" : "Tveggja-þrepa öryggisafritunarkóðar", "Second-factor backup codes" : "Tveggja-þrepa öryggisafritunarkóðar" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/twofactor_backupcodes/l10n/is.json b/apps/twofactor_backupcodes/l10n/is.json index bac4659e688..e07cb07b70a 100644 --- a/apps/twofactor_backupcodes/l10n/is.json +++ b/apps/twofactor_backupcodes/l10n/is.json @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "Þú útbjóst tveggja-þrepa öryggisafritunarkóða fyrir aðganginn þinn", "Backup code" : "Öryggisafritunarkóði", "Use backup code" : "Nota öryggisafritunarkóða", + "Two factor backup codes" : "Tveggja-þrepa öryggisafritunarkóðar", "Second-factor backup codes" : "Tveggja-þrepa öryggisafritunarkóðar" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/ko.js b/apps/twofactor_backupcodes/l10n/ko.js index 53ea6f37f20..06f4c9b76e0 100644 --- a/apps/twofactor_backupcodes/l10n/ko.js +++ b/apps/twofactor_backupcodes/l10n/ko.js @@ -3,15 +3,19 @@ OC.L10N.register( { "Generate backup codes" : "백업 코드 생성", "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "백업 코드가 생성되었습니다. {{total}}개 중 {{used}}개의 코드가 사용되었습니다.", - "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "이것은 백업 코드입니다. 이 코드는 나중에 다시 확인할 수 없으므로 저장하거나 인쇄하십시오.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "다음은 백업 코드입니다. 이 코드는 나중에 다시 확인할 수 없으므로 저장하거나 인쇄하십시오.", "Save backup codes" : "백업 코드 저장", "Print backup codes" : "백업 코드 인쇄", "Regenerate backup codes" : "백업 코드 다시 생성", "If you regenerate backup codes, you automatically invalidate old codes." : "백업 코드를 다시 생성하면 이전 코드는 자동으로 무효화 됩니다.", "An error occurred while generating your backup codes" : "백업 코드를 생성하는 중 오류가 발생했습니다.", "Nextcloud backup codes" : "Nextcloud 백업 코드", + "Two-factor authentication" : "2단계 인증", + "You successfully logged in using two-factor authentication (%1$s)" : "2단계 인증으로 로그인함(%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "2단계 인증 시도가 실패함(%1$s)", + "You created two-factor backup codes for your account" : "내 계정의 2단계 인증 백업 코드를 생성함", "Backup code" : "백업 코드", "Use backup code" : "백업 코드 사용", - "Second-factor backup codes" : "이중 인증 백업 코드" + "Second-factor backup codes" : "2단계 인증 백업 코드" }, "nplurals=1; plural=0;"); diff --git a/apps/twofactor_backupcodes/l10n/ko.json b/apps/twofactor_backupcodes/l10n/ko.json index cce8a5ac0b8..b2817272e4d 100644 --- a/apps/twofactor_backupcodes/l10n/ko.json +++ b/apps/twofactor_backupcodes/l10n/ko.json @@ -1,15 +1,19 @@ { "translations": { "Generate backup codes" : "백업 코드 생성", "Backup codes have been generated. {{used}} of {{total}} codes have been used." : "백업 코드가 생성되었습니다. {{total}}개 중 {{used}}개의 코드가 사용되었습니다.", - "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "이것은 백업 코드입니다. 이 코드는 나중에 다시 확인할 수 없으므로 저장하거나 인쇄하십시오.", + "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "다음은 백업 코드입니다. 이 코드는 나중에 다시 확인할 수 없으므로 저장하거나 인쇄하십시오.", "Save backup codes" : "백업 코드 저장", "Print backup codes" : "백업 코드 인쇄", "Regenerate backup codes" : "백업 코드 다시 생성", "If you regenerate backup codes, you automatically invalidate old codes." : "백업 코드를 다시 생성하면 이전 코드는 자동으로 무효화 됩니다.", "An error occurred while generating your backup codes" : "백업 코드를 생성하는 중 오류가 발생했습니다.", "Nextcloud backup codes" : "Nextcloud 백업 코드", + "Two-factor authentication" : "2단계 인증", + "You successfully logged in using two-factor authentication (%1$s)" : "2단계 인증으로 로그인함(%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "2단계 인증 시도가 실패함(%1$s)", + "You created two-factor backup codes for your account" : "내 계정의 2단계 인증 백업 코드를 생성함", "Backup code" : "백업 코드", "Use backup code" : "백업 코드 사용", - "Second-factor backup codes" : "이중 인증 백업 코드" + "Second-factor backup codes" : "2단계 인증 백업 코드" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/pt_BR.js b/apps/twofactor_backupcodes/l10n/pt_BR.js index e120d7a3163..1ed9c85d4c1 100644 --- a/apps/twofactor_backupcodes/l10n/pt_BR.js +++ b/apps/twofactor_backupcodes/l10n/pt_BR.js @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "Você criou os códigos de backup de dois fatores para sua conta.", "Backup code" : "Código de backup", "Use backup code" : "Usar o código de backup", + "Two factor backup codes" : "Códigos de backup de dois fatores", "Second-factor backup codes" : "Códigos de backup da autenticação" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/twofactor_backupcodes/l10n/pt_BR.json b/apps/twofactor_backupcodes/l10n/pt_BR.json index f451511bc4c..a2bb2d487c8 100644 --- a/apps/twofactor_backupcodes/l10n/pt_BR.json +++ b/apps/twofactor_backupcodes/l10n/pt_BR.json @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "Você criou os códigos de backup de dois fatores para sua conta.", "Backup code" : "Código de backup", "Use backup code" : "Usar o código de backup", + "Two factor backup codes" : "Códigos de backup de dois fatores", "Second-factor backup codes" : "Códigos de backup da autenticação" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/ru.js b/apps/twofactor_backupcodes/l10n/ru.js index b8e20f8d0a4..0efdf741a71 100644 --- a/apps/twofactor_backupcodes/l10n/ru.js +++ b/apps/twofactor_backupcodes/l10n/ru.js @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "Вы создали двухфакторные резервные коды для своего аккаунта", "Backup code" : "Резервный код", "Use backup code" : "Использовать резервный код", + "Two factor backup codes" : "Второй фактор — резервные коды", "Second-factor backup codes" : "Резервные коды двухфакторной аутентификации" }, "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/twofactor_backupcodes/l10n/ru.json b/apps/twofactor_backupcodes/l10n/ru.json index 51aff5de850..6bf8911fae4 100644 --- a/apps/twofactor_backupcodes/l10n/ru.json +++ b/apps/twofactor_backupcodes/l10n/ru.json @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "Вы создали двухфакторные резервные коды для своего аккаунта", "Backup code" : "Резервный код", "Use backup code" : "Использовать резервный код", + "Two factor backup codes" : "Второй фактор — резервные коды", "Second-factor backup codes" : "Резервные коды двухфакторной аутентификации" },"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/twofactor_backupcodes/l10n/tr.js b/apps/twofactor_backupcodes/l10n/tr.js index ff68c827c78..c02f7d3509d 100644 --- a/apps/twofactor_backupcodes/l10n/tr.js +++ b/apps/twofactor_backupcodes/l10n/tr.js @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "İki aşamalı kimlik doğrulama için yedek kodlarınızı oluşturdunuz", "Backup code" : "Yedek kod", "Use backup code" : "Yedek kodu kullan", - "Second-factor backup codes" : "İki aşamalı yedek kodları" + "Two factor backup codes" : "İki aşamalı kimlik doğrulama yedek kodları", + "Second-factor backup codes" : "İki aşamalı kimlik doğrulama yedek kodları" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/twofactor_backupcodes/l10n/tr.json b/apps/twofactor_backupcodes/l10n/tr.json index fb392c867ff..79321d9cd41 100644 --- a/apps/twofactor_backupcodes/l10n/tr.json +++ b/apps/twofactor_backupcodes/l10n/tr.json @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "İki aşamalı kimlik doğrulama için yedek kodlarınızı oluşturdunuz", "Backup code" : "Yedek kod", "Use backup code" : "Yedek kodu kullan", - "Second-factor backup codes" : "İki aşamalı yedek kodları" + "Two factor backup codes" : "İki aşamalı kimlik doğrulama yedek kodları", + "Second-factor backup codes" : "İki aşamalı kimlik doğrulama yedek kodları" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/zh_CN.js b/apps/twofactor_backupcodes/l10n/zh_CN.js index 041b159b136..00067e77f6a 100644 --- a/apps/twofactor_backupcodes/l10n/zh_CN.js +++ b/apps/twofactor_backupcodes/l10n/zh_CN.js @@ -16,6 +16,7 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "您已经为账号创建了两步验证的备用码", "Backup code" : "备用码", "Use backup code" : "使用备用码", + "Two factor backup codes" : "双重备份代码", "Second-factor backup codes" : "两步验证备用码" }, "nplurals=1; plural=0;"); diff --git a/apps/twofactor_backupcodes/l10n/zh_CN.json b/apps/twofactor_backupcodes/l10n/zh_CN.json index 2b1f7ce50ce..b85ac3e79a0 100644 --- a/apps/twofactor_backupcodes/l10n/zh_CN.json +++ b/apps/twofactor_backupcodes/l10n/zh_CN.json @@ -14,6 +14,7 @@ "You created two-factor backup codes for your account" : "您已经为账号创建了两步验证的备用码", "Backup code" : "备用码", "Use backup code" : "使用备用码", + "Two factor backup codes" : "双重备份代码", "Second-factor backup codes" : "两步验证备用码" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/lib/AppInfo/Application.php b/apps/twofactor_backupcodes/lib/AppInfo/Application.php new file mode 100644 index 00000000000..ad92c0b1476 --- /dev/null +++ b/apps/twofactor_backupcodes/lib/AppInfo/Application.php @@ -0,0 +1,62 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @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\TwoFactorBackupCodes\AppInfo; + +use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper; +use OCP\AppFramework\App; +use OCP\Util; + +class Application extends App { + public function __construct () { + parent::__construct('twofactor_backupcodes'); + } + + /** + * Register the different app parts + */ + public function register() { + $this->registerHooksAndEvents(); + $this->registerPersonalPage(); + } + + /** + * Register the hooks and events + */ + public function registerHooksAndEvents() { + Util::connectHook('OC_User', 'post_deleteUser', $this, 'deleteUser'); + } + + public function deleteUser($params) { + /** @var BackupCodeMapper $mapper */ + $mapper = $this->getContainer()->query(BackupCodeMapper::class); + $mapper->deleteCodesByUserId($params['uid']); + } + + /** + * Register personal settings for notifications and emails + */ + public function registerPersonalPage() { + \OCP\App::registerPersonal($this->getContainer()->getAppName(), 'settings/personal'); + } +} diff --git a/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php b/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php index 85cc174fb6a..03fe7bb5ec8 100644 --- a/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php +++ b/apps/twofactor_backupcodes/lib/Db/BackupCodeMapper.php @@ -22,13 +22,14 @@ namespace OCA\TwoFactorBackupCodes\Db; use OCP\AppFramework\Db\Mapper; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; use OCP\IUser; class BackupCodeMapper extends Mapper { public function __construct(IDBConnection $db) { - parent::__construct($db, 'twofactor_backup_codes'); + parent::__construct($db, 'twofactor_backupcodes'); } /** @@ -40,7 +41,7 @@ class BackupCodeMapper extends Mapper { $qb = $this->db->getQueryBuilder(); $qb->select('id', 'user_id', 'code', 'used') - ->from('twofactor_backup_codes') + ->from('twofactor_backupcodes') ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user->getUID()))); $result = $qb->execute(); @@ -52,12 +53,22 @@ class BackupCodeMapper extends Mapper { }, $rows); } + /** + * @param IUser $user + */ public function deleteCodes(IUser $user) { + $this->deleteCodesByUserId($user->getUID()); + } + + /** + * @param string $uid + */ + public function deleteCodesByUserId($uid) { /* @var IQueryBuilder $qb */ $qb = $this->db->getQueryBuilder(); - $qb->delete('twofactor_backup_codes') - ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user->getUID()))); + $qb->delete('twofactor_backupcodes') + ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($uid))); $qb->execute(); } diff --git a/apps/twofactor_backupcodes/lib/Migration/CopyEntriesFromOldTable.php b/apps/twofactor_backupcodes/lib/Migration/CopyEntriesFromOldTable.php new file mode 100644 index 00000000000..6d65a7d0c14 --- /dev/null +++ b/apps/twofactor_backupcodes/lib/Migration/CopyEntriesFromOldTable.php @@ -0,0 +1,108 @@ +<?php +/** + * @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com> + * + * @author Joas Schilling <coding@schilljs.com> + * + * @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\TwoFactorBackupCodes\Migration; + +use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; + +class CopyEntriesFromOldTable implements IRepairStep { + + /** @var IDBConnection */ + protected $connection; + + /** @var IConfig */ + protected $config; + + /** + * @param IDBConnection $connection + * @param IConfig $config + */ + public function __construct(IDBConnection $connection, IConfig $config) { + $this->connection = $connection; + $this->config = $config; + } + + /** + * Returns the step's name + * + * @return string + * @since 9.1.0 + */ + public function getName() { + return 'Copy twofactor backup codes from legacy table'; + } + + /** + * Run repair step. + * Must throw exception on error. + * + * @since 9.1.0 + * @param IOutput $output + * @throws \Exception in case of failure + */ + public function run(IOutput $output) { + $version = $this->config->getAppValue('twofactor_backupcodes', 'installed_version', '0.0.0'); + if (version_compare($version, '1.1.1', '>=')) { + return; + } + + if (!$this->connection->tableExists('twofactor_backup_codes')) { + // Legacy table does not exist + return; + } + + $insert = $this->connection->getQueryBuilder(); + $insert->insert('twofactor_backupcodes') + ->values([ + // Inserting with id might fail: 'id' => $insert->createParameter('id'), + 'user_id' => $insert->createParameter('user_id'), + 'code' => $insert->createParameter('code'), + 'used' => $insert->createParameter('used'), + ]); + + $query = $this->connection->getQueryBuilder(); + $query->select('*') + ->from('twofactor_backup_codes') + ->orderBy('id', 'ASC'); + $result = $query->execute(); + + $output->startProgress(); + while ($row = $result->fetch()) { + $output->advance(); + + $insert + // Inserting with id might fail: ->setParameter('id', $row['id'], IQueryBuilder::PARAM_INT) + ->setParameter('user_id', $row['user_id'], IQueryBuilder::PARAM_STR) + ->setParameter('code', $row['code'], IQueryBuilder::PARAM_STR) + ->setParameter('used', $row['used'], IQueryBuilder::PARAM_INT) + ->execute(); + } + $output->finishProgress(); + + $this->connection->dropTable('twofactor_backup_codes'); + } +} diff --git a/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php b/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php index 902f7c783d5..5c5500862e6 100644 --- a/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php +++ b/apps/twofactor_backupcodes/lib/Provider/BackupCodesProvider.php @@ -22,6 +22,7 @@ namespace OCA\TwoFactorBackupCodes\Provider; +use OC\App\AppManager; use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage; use OCP\Authentication\TwoFactorAuth\IProvider; use OCP\IL10N; @@ -30,15 +31,29 @@ use OCP\Template; class BackupCodesProvider implements IProvider { + /** @var string */ + private $appName; + /** @var BackupCodeStorage */ private $storage; /** @var IL10N */ private $l10n; - public function __construct(BackupCodeStorage $storage, IL10N $l10n) { + /** @var AppManager */ + private $appManager; + + /** + * @param string $appName + * @param BackupCodeStorage $storage + * @param IL10N $l10n + * @param AppManager $appManager + */ + public function __construct($appName, BackupCodeStorage $storage, IL10N $l10n, AppManager $appManager) { + $this->appName = $appName; $this->l10n = $l10n; $this->storage = $storage; + $this->appManager = $appManager; } /** @@ -99,4 +114,28 @@ class BackupCodesProvider implements IProvider { return $this->storage->hasBackupCodes($user); } + /** + * Determine whether backup codes should be active or not + * + * Backup codes only make sense if at least one 2FA provider is active, + * hence this method checks all enabled apps on whether they provide 2FA + * functionality or not. If there's at least one app, backup codes are + * enabled on the personal settings page. + * + * @param IUser $user + * @return boolean + */ + public function isActive(IUser $user) { + $appIds = array_filter($this->appManager->getEnabledAppsForUser($user), function($appId) { + return $appId !== $this->appName; + }); + foreach ($appIds as $appId) { + $info = $this->appManager->getAppInfo($appId); + if (isset($info['two-factor-providers']) && count($info['two-factor-providers']) > 0) { + return true; + } + } + return false; + } + } diff --git a/apps/twofactor_backupcodes/settings/personal.php b/apps/twofactor_backupcodes/settings/personal.php index 0a018c0ff28..48c84a3355e 100644 --- a/apps/twofactor_backupcodes/settings/personal.php +++ b/apps/twofactor_backupcodes/settings/personal.php @@ -1,6 +1,19 @@ <?php + +use OCA\TwoFactorBackupCodes\Provider\BackupCodesProvider; +use OCP\Template; + // @codeCoverageIgnoreStart -$tmpl = new \OCP\Template('twofactor_backupcodes', 'personal'); -return $tmpl->fetchPage(); +/* @var $provider BackupCodesProvider */ +$provider = OC::$server->query(BackupCodesProvider::class); +$user = OC::$server->getUserSession()->getUser(); + +if ($provider->isActive($user)) { + $tmpl = new Template('twofactor_backupcodes', 'personal'); + return $tmpl->fetchPage(); +} else { + return ""; +} + // @codeCoverageIgnoreEnd diff --git a/apps/twofactor_backupcodes/templates/personal.php b/apps/twofactor_backupcodes/templates/personal.php index 23b06e23058..3076e16a166 100644 --- a/apps/twofactor_backupcodes/templates/personal.php +++ b/apps/twofactor_backupcodes/templates/personal.php @@ -7,6 +7,6 @@ style('twofactor_backupcodes', 'style'); ?> <div class="section"> - <h2><?php p($l->t('Second-factor backup codes')); ?></h2> + <h2 data-anchor-name="second-factor-backup-codes"><?php p($l->t('Second-factor backup codes')); ?></h2> <div id="twofactor-backupcodes-settings"></div> </div> diff --git a/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php b/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php index 5a99cfadd41..cec5b7b2160 100644 --- a/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php +++ b/apps/twofactor_backupcodes/tests/Unit/Provider/BackupCodesProviderTest.php @@ -22,32 +22,41 @@ namespace OCA\TwoFactorBackupCodes\Tests\Unit\Provider; +use OC\App\AppManager; use OCA\TwoFactorBackupCodes\Provider\BackupCodesProvider; use OCA\TwoFactorBackupCodes\Service\BackupCodeStorage; use OCP\IL10N; use OCP\IUser; use OCP\Template; +use PHPUnit_Framework_MockObject_MockObject; use Test\TestCase; class BackupCodesProviderTest extends TestCase { + /** @var string */ + private $appName; + /** @var BackupCodeStorage|PHPUnit_Framework_MockObject_MockObject */ private $storage; /** @var IL10N|PHPUnit_Framework_MockObject_MockObject */ private $l10n; + /** @var AppManager|PHPUnit_Framework_MockObject_MockObject */ + private $appManager; + /** @var BackupCodesProvider */ private $provider; protected function setUp() { parent::setUp(); - $this->storage = $this->getMockBuilder(BackupCodeStorage::class) - ->disableOriginalConstructor() - ->getMock(); - $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); - $this->provider = new BackupCodesProvider($this->storage, $this->l10n); + $this->appName = "twofactor_backupcodes"; + $this->storage = $this->createMock(BackupCodeStorage::class); + $this->l10n = $this->createMock(IL10N::class); + $this->appManager = $this->createMock(AppManager::class); + + $this->provider = new BackupCodesProvider($this->appName, $this->storage, $this->l10n, $this->appManager); } public function testGetId() { @@ -100,4 +109,46 @@ class BackupCodesProviderTest extends TestCase { $this->assertTrue($this->provider->isTwoFactorAuthEnabledForUser($user)); } + public function testIsActiveNoProviders() { + $user = $this->getMockBuilder(IUser::class)->getMock(); + + $this->appManager->expects($this->once()) + ->method('getEnabledAppsForUser') + ->with($user) + ->willReturn([ + 'twofactor_backupcodes', + 'mail', + ]); + $this->appManager->expects($this->once()) + ->method('getAppInfo') + ->with('mail') + ->willReturn([ + 'two-factor-providers' => [], + ]); + + $this->assertFalse($this->provider->isActive($user)); + } + + public function testIsActiveWithProviders() { + $user = $this->getMockBuilder(IUser::class)->getMock(); + + $this->appManager->expects($this->once()) + ->method('getEnabledAppsForUser') + ->with($user) + ->willReturn([ + 'twofactor_backupcodes', + 'twofactor_u2f', + ]); + $this->appManager->expects($this->once()) + ->method('getAppInfo') + ->with('twofactor_u2f') + ->willReturn([ + 'two-factor-providers' => [ + 'OCA\TwoFactorU2F\Provider\U2FProvider', + ], + ]); + + $this->assertTrue($this->provider->isActive($user)); + } + } diff --git a/apps/updatenotification/js/admin.js b/apps/updatenotification/js/admin.js index 589765348af..93b42295a23 100644 --- a/apps/updatenotification/js/admin.js +++ b/apps/updatenotification/js/admin.js @@ -32,6 +32,13 @@ $(document).ready(function(){ var body = $('body'); $('head').remove(); body.html(data); + + // Eval the script elements in the response + var dom = $(data); + dom.filter('script').each(function() { + eval(this.text || this.textContent || this.innerHTML || ''); + }); + body.removeAttr('id'); body.attr('id', 'body-settings'); } diff --git a/apps/updatenotification/l10n/ast.js b/apps/updatenotification/l10n/ast.js index a9fef552d0b..bf763aa344a 100644 --- a/apps/updatenotification/l10n/ast.js +++ b/apps/updatenotification/l10n/ast.js @@ -1,6 +1,26 @@ OC.L10N.register( "updatenotification", { - "Updater" : "Anovador" + "Update notifications" : "Avisos d'anovamientu", + "Could not start updater, please try the manual update" : "Nun pudo aniciase l'anovador, por favor prueba l'anovamientu manual", + "{version} is available. Get more information on how to update." : "Ta disponible {version}. Consigui más infromación tocante a cómo anovar.", + "Channel updated" : "Anovóse la canal", + "The update server could not be reached since %d days to check for new updates." : "Nun pudo algamase'l sirvidor d'anovamientu dende hai %d díes pa comprobar anovamientos.", + "Please check the Nextcloud and server log files for errors." : "Comprueba los fallos de los ficheros de rexistru del sirvidor y Nextcloud, por favor.", + "Update to %1$s is available." : "Ta disponible l'anovamientu a %1$s", + "Update for %1$s to version %2$s is available." : "Ta disponible l'anovamientu pa %1$s a la versión %2$s.", + "Update for {app} to version %s is available." : "Ta disponible l'anovamientu pa {app} a la versión %s.", + "Update notification" : "Avisu d'anovamientu", + "A new version is available: %s" : "Ta disponible una versión más nueva: %s", + "Open updater" : "Abrir anovador", + "Download now" : "Baxar agora", + "Your version is up to date." : "La to versión ta anovada", + "Checked on %s" : "Comprobóse'l %s", + "Update channel:" : "Canal d'anovamientu:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempres pues anovar a una canal esperimental pero enxamás nun afites una canal más estable.", + "Notify members of the following groups about available updates:" : "Avisar a los miembros de los grupos de darréu tocante a anovamientos disponibles:", + "Only notification for app updates are available." : "Namái tán disponibles los avisos pa los anovamientos d'aplicaciones.", + "The selected update channel makes dedicated notifications for the server obsolete." : "La canal esbillada d'anovamientu fai avisos dedicaos pa lo obsoleto del sirvidor.", + "The selected update channel does not support updates of the server." : "El canal esbilláu d'anovamientu nun sofita anovamientos del sirvidor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/ast.json b/apps/updatenotification/l10n/ast.json index 3edbb4c46ef..6c585d76e99 100644 --- a/apps/updatenotification/l10n/ast.json +++ b/apps/updatenotification/l10n/ast.json @@ -1,4 +1,24 @@ { "translations": { - "Updater" : "Anovador" + "Update notifications" : "Avisos d'anovamientu", + "Could not start updater, please try the manual update" : "Nun pudo aniciase l'anovador, por favor prueba l'anovamientu manual", + "{version} is available. Get more information on how to update." : "Ta disponible {version}. Consigui más infromación tocante a cómo anovar.", + "Channel updated" : "Anovóse la canal", + "The update server could not be reached since %d days to check for new updates." : "Nun pudo algamase'l sirvidor d'anovamientu dende hai %d díes pa comprobar anovamientos.", + "Please check the Nextcloud and server log files for errors." : "Comprueba los fallos de los ficheros de rexistru del sirvidor y Nextcloud, por favor.", + "Update to %1$s is available." : "Ta disponible l'anovamientu a %1$s", + "Update for %1$s to version %2$s is available." : "Ta disponible l'anovamientu pa %1$s a la versión %2$s.", + "Update for {app} to version %s is available." : "Ta disponible l'anovamientu pa {app} a la versión %s.", + "Update notification" : "Avisu d'anovamientu", + "A new version is available: %s" : "Ta disponible una versión más nueva: %s", + "Open updater" : "Abrir anovador", + "Download now" : "Baxar agora", + "Your version is up to date." : "La to versión ta anovada", + "Checked on %s" : "Comprobóse'l %s", + "Update channel:" : "Canal d'anovamientu:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempres pues anovar a una canal esperimental pero enxamás nun afites una canal más estable.", + "Notify members of the following groups about available updates:" : "Avisar a los miembros de los grupos de darréu tocante a anovamientos disponibles:", + "Only notification for app updates are available." : "Namái tán disponibles los avisos pa los anovamientos d'aplicaciones.", + "The selected update channel makes dedicated notifications for the server obsolete." : "La canal esbillada d'anovamientu fai avisos dedicaos pa lo obsoleto del sirvidor.", + "The selected update channel does not support updates of the server." : "El canal esbilláu d'anovamientu nun sofita anovamientos del sirvidor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/ca.js b/apps/updatenotification/l10n/ca.js index 920f2d68321..20a1fb22fe6 100644 --- a/apps/updatenotification/l10n/ca.js +++ b/apps/updatenotification/l10n/ca.js @@ -2,16 +2,24 @@ OC.L10N.register( "updatenotification", { "Update notifications" : "Notificacions d'actualització", + "Could not start updater, please try the manual update" : "No s'ha pogut iniciar actualitzador, provi l'actualització manual", "{version} is available. Get more information on how to update." : "Hi ha disponible la versió {version}. Obtingueu més informació sobre com actualitzar.", - "Updated channel" : "Canal actualitzat", + "Channel updated" : "Canal actualitzat", + "The update server could not be reached since %d days to check for new updates." : "El servidor d'actualització no es va poder arribar des %d dies per comprovar si hi ha noves actualitzacions.", + "Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de log del servidor i de Nextcloud per detectar errors.", + "Update to %1$s is available." : "Actualització per %1$s està disponible.", "Update for %1$s to version %2$s is available." : "L'actualització per %1$s a la versió %2$s està disponible.", - "Updater" : "Actualitzador", + "Update for {app} to version %s is available." : "Actualització per {app} a la versió %s està disponible.", "A new version is available: %s" : "Una nova versió està disponible: %s", "Open updater" : "Obrir actualitzador", + "Download now" : "Descarrega ara", "Your version is up to date." : "La teva versió està actualitzada.", "Checked on %s" : "Comprovat en %s", "Update channel:" : "Actualitzar canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre podràs actualitzar a una versió més recent / canal experimental. Però mai es pot fer un \"downgrade\" a un canal més estable.", - "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:" + "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:", + "Only notification for app updates are available." : "Només notificació d'actualitzacions d'apps estan disponibles.", + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal d'actualització seleccionat deixa obsoletes les notificacions específiques del servidor.", + "The selected update channel does not support updates of the server." : "El canal d'actualització seleccionat no admet actualitzacions del servidor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/ca.json b/apps/updatenotification/l10n/ca.json index 600e1292de3..ec4ccf23b5e 100644 --- a/apps/updatenotification/l10n/ca.json +++ b/apps/updatenotification/l10n/ca.json @@ -1,15 +1,23 @@ { "translations": { "Update notifications" : "Notificacions d'actualització", + "Could not start updater, please try the manual update" : "No s'ha pogut iniciar actualitzador, provi l'actualització manual", "{version} is available. Get more information on how to update." : "Hi ha disponible la versió {version}. Obtingueu més informació sobre com actualitzar.", - "Updated channel" : "Canal actualitzat", + "Channel updated" : "Canal actualitzat", + "The update server could not be reached since %d days to check for new updates." : "El servidor d'actualització no es va poder arribar des %d dies per comprovar si hi ha noves actualitzacions.", + "Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de log del servidor i de Nextcloud per detectar errors.", + "Update to %1$s is available." : "Actualització per %1$s està disponible.", "Update for %1$s to version %2$s is available." : "L'actualització per %1$s a la versió %2$s està disponible.", - "Updater" : "Actualitzador", + "Update for {app} to version %s is available." : "Actualització per {app} a la versió %s està disponible.", "A new version is available: %s" : "Una nova versió està disponible: %s", "Open updater" : "Obrir actualitzador", + "Download now" : "Descarrega ara", "Your version is up to date." : "La teva versió està actualitzada.", "Checked on %s" : "Comprovat en %s", "Update channel:" : "Actualitzar canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre podràs actualitzar a una versió més recent / canal experimental. Però mai es pot fer un \"downgrade\" a un canal més estable.", - "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:" + "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:", + "Only notification for app updates are available." : "Només notificació d'actualitzacions d'apps estan disponibles.", + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal d'actualització seleccionat deixa obsoletes les notificacions específiques del servidor.", + "The selected update channel does not support updates of the server." : "El canal d'actualització seleccionat no admet actualitzacions del servidor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/cs.js b/apps/updatenotification/l10n/cs.js index 0338800a2c5..44f92f97759 100644 --- a/apps/updatenotification/l10n/cs.js +++ b/apps/updatenotification/l10n/cs.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "Je dostupná {version}. Přečtěte si více informací jak aktualizovat.", "Channel updated" : "Kanál aktualizován", "The update server could not be reached since %d days to check for new updates." : "Aktualizační server nebyl dosažen %d dní pro kontrolu aktualizací.", + "Please check the Nextcloud and server log files for errors." : "Po chybách se podívejte v protokolech Nextcloudu a webového serveru.", "Update to %1$s is available." : "Je dostupná aktualizace na %1$s.", "Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.", "Update for {app} to version %s is available." : "Pro {app} je dostupná aktualizace na verzi %s.", diff --git a/apps/updatenotification/l10n/cs.json b/apps/updatenotification/l10n/cs.json index 19e1c509ea2..22676eebcdd 100644 --- a/apps/updatenotification/l10n/cs.json +++ b/apps/updatenotification/l10n/cs.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "Je dostupná {version}. Přečtěte si více informací jak aktualizovat.", "Channel updated" : "Kanál aktualizován", "The update server could not be reached since %d days to check for new updates." : "Aktualizační server nebyl dosažen %d dní pro kontrolu aktualizací.", + "Please check the Nextcloud and server log files for errors." : "Po chybách se podívejte v protokolech Nextcloudu a webového serveru.", "Update to %1$s is available." : "Je dostupná aktualizace na %1$s.", "Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.", "Update for {app} to version %s is available." : "Pro {app} je dostupná aktualizace na verzi %s.", diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js index 62fb269d262..dbaadfdd853 100644 --- a/apps/updatenotification/l10n/de.js +++ b/apps/updatenotification/l10n/de.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", "Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.", "Update for {app} to version %s is available." : "Ein Update für {app} auf Version %s ist verfügbar.", + "Update notification" : "Update-Benachrichtigung", "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "Open updater" : "Updater öffnen", "Download now" : "Jetzt herunterladen", diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json index f9a9e5ea681..9084b298f1a 100644 --- a/apps/updatenotification/l10n/de.json +++ b/apps/updatenotification/l10n/de.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", "Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.", "Update for {app} to version %s is available." : "Ein Update für {app} auf Version %s ist verfügbar.", + "Update notification" : "Update-Benachrichtigung", "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "Open updater" : "Updater öffnen", "Download now" : "Jetzt herunterladen", diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js index 088cef00980..6963ce16e91 100644 --- a/apps/updatenotification/l10n/de_DE.js +++ b/apps/updatenotification/l10n/de_DE.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", "Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.", "Update for {app} to version %s is available." : "Ein Update für {app} auf Version %s ist verfügbar.", + "Update notification" : "Aktualisierungs-Benachrichtigung", "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "Open updater" : "Updater öffnen", "Download now" : "Jetzt herunterladen", diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json index b53b37692cb..5fc5407d6c0 100644 --- a/apps/updatenotification/l10n/de_DE.json +++ b/apps/updatenotification/l10n/de_DE.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", "Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.", "Update for {app} to version %s is available." : "Ein Update für {app} auf Version %s ist verfügbar.", + "Update notification" : "Aktualisierungs-Benachrichtigung", "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "Open updater" : "Updater öffnen", "Download now" : "Jetzt herunterladen", diff --git a/apps/updatenotification/l10n/el.js b/apps/updatenotification/l10n/el.js index dc41eb7117e..bb8695e6781 100644 --- a/apps/updatenotification/l10n/el.js +++ b/apps/updatenotification/l10n/el.js @@ -5,9 +5,12 @@ OC.L10N.register( "Could not start updater, please try the manual update" : "Δεν μπορεί να εκκινήσει η εφαρμογή ενημέρωσης, παρακαλώ δοκιμάστε την χειροκίνητη ενημέρωση", "{version} is available. Get more information on how to update." : "Η έκδοση {version} είναι διαθέσιμη. Δείτε περισσότερες πληροφορίες για το πως να κάνετε την ενημέρωση.", "Channel updated" : "Ενημερωμένο κανάλι", + "The update server could not be reached since %d days to check for new updates." : "Ο διακομιστής ενημέρωσης δεν ήταν προσβάσιμος από %dημέρες για να ελέγξει για νέες ενημερώσεις. ", + "Please check the Nextcloud and server log files for errors." : "Παρακαλούμε ελέγξτε για σφάλματα στα αρχεία ιστορικού του Nextcloud και του διακομιστή σας.", "Update to %1$s is available." : "Είναι διαθέσιμη η ενημέρωση σε %1$s.", "Update for %1$s to version %2$s is available." : "Είναι διαθέσιμη η ενημέρωση από την έκδοση %1$s στην %2$s.", "Update for {app} to version %s is available." : "Είναι διαθέσιμη η ενημέρωση της εφαρμογής {app} στην έκδοση %s", + "Update notification" : "Ειδοποίηση ενημέρωσης", "A new version is available: %s" : "Μία νέα έκδοση είναι διαθέσιμη: %s", "Open updater" : "Άνοιγμα εφαρμογής ενημέρωσης", "Download now" : "Λήψη τώρα", @@ -15,6 +18,7 @@ OC.L10N.register( "Checked on %s" : "Ελέγχθηκε στις %s", "Update channel:" : "Ενημέρωση καναλιού:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Μπορείτε πάντα να περάσετε σε νεότερη / πειραματική έκδοση. Αλλά ποτέ δεν μπορείτε να γυρίσετε πίσω σε πιο σταθερό κανάλι.", - "Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:" + "Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:", + "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/el.json b/apps/updatenotification/l10n/el.json index 763646d428e..388ee178778 100644 --- a/apps/updatenotification/l10n/el.json +++ b/apps/updatenotification/l10n/el.json @@ -3,9 +3,12 @@ "Could not start updater, please try the manual update" : "Δεν μπορεί να εκκινήσει η εφαρμογή ενημέρωσης, παρακαλώ δοκιμάστε την χειροκίνητη ενημέρωση", "{version} is available. Get more information on how to update." : "Η έκδοση {version} είναι διαθέσιμη. Δείτε περισσότερες πληροφορίες για το πως να κάνετε την ενημέρωση.", "Channel updated" : "Ενημερωμένο κανάλι", + "The update server could not be reached since %d days to check for new updates." : "Ο διακομιστής ενημέρωσης δεν ήταν προσβάσιμος από %dημέρες για να ελέγξει για νέες ενημερώσεις. ", + "Please check the Nextcloud and server log files for errors." : "Παρακαλούμε ελέγξτε για σφάλματα στα αρχεία ιστορικού του Nextcloud και του διακομιστή σας.", "Update to %1$s is available." : "Είναι διαθέσιμη η ενημέρωση σε %1$s.", "Update for %1$s to version %2$s is available." : "Είναι διαθέσιμη η ενημέρωση από την έκδοση %1$s στην %2$s.", "Update for {app} to version %s is available." : "Είναι διαθέσιμη η ενημέρωση της εφαρμογής {app} στην έκδοση %s", + "Update notification" : "Ειδοποίηση ενημέρωσης", "A new version is available: %s" : "Μία νέα έκδοση είναι διαθέσιμη: %s", "Open updater" : "Άνοιγμα εφαρμογής ενημέρωσης", "Download now" : "Λήψη τώρα", @@ -13,6 +16,7 @@ "Checked on %s" : "Ελέγχθηκε στις %s", "Update channel:" : "Ενημέρωση καναλιού:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Μπορείτε πάντα να περάσετε σε νεότερη / πειραματική έκδοση. Αλλά ποτέ δεν μπορείτε να γυρίσετε πίσω σε πιο σταθερό κανάλι.", - "Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:" + "Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:", + "Only notification for app updates are available." : "Είναι μόνο διαθέσιμες οι ενημερώσεις για την εφαρμογή" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/en_GB.js b/apps/updatenotification/l10n/en_GB.js index b26672b438e..cd32df87ae2 100644 --- a/apps/updatenotification/l10n/en_GB.js +++ b/apps/updatenotification/l10n/en_GB.js @@ -2,10 +2,17 @@ OC.L10N.register( "updatenotification", { "Update notifications" : "Update notifications", + "Could not start updater, please try the manual update" : "Could not start updater, please try the manual update", "{version} is available. Get more information on how to update." : "{version} is available. Get more information on how to update.", - "Nextcloud core" : "Nextcloud core", + "Channel updated" : "Channel updated", + "The update server could not be reached since %d days to check for new updates." : "The update server could not be reached since %d days to check for new updates.", + "Please check the Nextcloud and server log files for errors." : "Please check the Nextcloud and server log files for errors.", + "Update to %1$s is available." : "Update to %1$s is available.", "Update for %1$s to version %2$s is available." : "Update for %1$s to version %2$s is available.", + "Update for {app} to version %s is available." : "Update for {app} to version %s is available.", "A new version is available: %s" : "A new version is available: %s", + "Open updater" : "Open updater", + "Download now" : "Download now", "Your version is up to date." : "Your version is up to date.", "Checked on %s" : "Checked on %s", "Update channel:" : "Update channel:", @@ -13,7 +20,6 @@ OC.L10N.register( "Notify members of the following groups about available updates:" : "Notify members of the following groups about available updates:", "Only notification for app updates are available." : "Only notification for app updates are available.", "The selected update channel makes dedicated notifications for the server obsolete." : "The selected update channel makes dedicated notifications for the server obsolete.", - "The selected update channel does not support updates of the server." : "The selected update channel does not support updates of the server.", - "Updater" : "Updater" + "The selected update channel does not support updates of the server." : "The selected update channel does not support updates of the server." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/en_GB.json b/apps/updatenotification/l10n/en_GB.json index 830650fcce3..f8c435efdb7 100644 --- a/apps/updatenotification/l10n/en_GB.json +++ b/apps/updatenotification/l10n/en_GB.json @@ -1,9 +1,16 @@ { "translations": { "Update notifications" : "Update notifications", + "Could not start updater, please try the manual update" : "Could not start updater, please try the manual update", "{version} is available. Get more information on how to update." : "{version} is available. Get more information on how to update.", - "Nextcloud core" : "Nextcloud core", + "Channel updated" : "Channel updated", + "The update server could not be reached since %d days to check for new updates." : "The update server could not be reached since %d days to check for new updates.", + "Please check the Nextcloud and server log files for errors." : "Please check the Nextcloud and server log files for errors.", + "Update to %1$s is available." : "Update to %1$s is available.", "Update for %1$s to version %2$s is available." : "Update for %1$s to version %2$s is available.", + "Update for {app} to version %s is available." : "Update for {app} to version %s is available.", "A new version is available: %s" : "A new version is available: %s", + "Open updater" : "Open updater", + "Download now" : "Download now", "Your version is up to date." : "Your version is up to date.", "Checked on %s" : "Checked on %s", "Update channel:" : "Update channel:", @@ -11,7 +18,6 @@ "Notify members of the following groups about available updates:" : "Notify members of the following groups about available updates:", "Only notification for app updates are available." : "Only notification for app updates are available.", "The selected update channel makes dedicated notifications for the server obsolete." : "The selected update channel makes dedicated notifications for the server obsolete.", - "The selected update channel does not support updates of the server." : "The selected update channel does not support updates of the server.", - "Updater" : "Updater" + "The selected update channel does not support updates of the server." : "The selected update channel does not support updates of the server." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_MX.js b/apps/updatenotification/l10n/es_MX.js index a8c015e77f1..94cf0cbefc9 100644 --- a/apps/updatenotification/l10n/es_MX.js +++ b/apps/updatenotification/l10n/es_MX.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "La actualización a %1$s está disponible. ", "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Open updater" : "Abrir actualizador", "Download now" : "Descargar ahora", diff --git a/apps/updatenotification/l10n/es_MX.json b/apps/updatenotification/l10n/es_MX.json index 4a35a71648e..0f63c9ba5a0 100644 --- a/apps/updatenotification/l10n/es_MX.json +++ b/apps/updatenotification/l10n/es_MX.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "La actualización a %1$s está disponible. ", "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Open updater" : "Abrir actualizador", "Download now" : "Descargar ahora", diff --git a/apps/updatenotification/l10n/fr.js b/apps/updatenotification/l10n/fr.js index 5e5fbe79a8d..a50bc3309d1 100644 --- a/apps/updatenotification/l10n/fr.js +++ b/apps/updatenotification/l10n/fr.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "Une mise à jour vers %1$s est disponible", "Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.", "Update for {app} to version %s is available." : "Une mise à jour de {app} vers la version %s est disponible.", + "Update notification" : "Mettre à jour les notifications", "A new version is available: %s" : "Une nouvelle version est disponible : %s", "Open updater" : "Ouvrir le système de mise à jour", "Download now" : "Télécharger maintenant", diff --git a/apps/updatenotification/l10n/fr.json b/apps/updatenotification/l10n/fr.json index e6a81da9bc5..2a86bbbd989 100644 --- a/apps/updatenotification/l10n/fr.json +++ b/apps/updatenotification/l10n/fr.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "Une mise à jour vers %1$s est disponible", "Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.", "Update for {app} to version %s is available." : "Une mise à jour de {app} vers la version %s est disponible.", + "Update notification" : "Mettre à jour les notifications", "A new version is available: %s" : "Une nouvelle version est disponible : %s", "Open updater" : "Ouvrir le système de mise à jour", "Download now" : "Télécharger maintenant", diff --git a/apps/updatenotification/l10n/is.js b/apps/updatenotification/l10n/is.js index ae4dd1894fe..f6b3825b56b 100644 --- a/apps/updatenotification/l10n/is.js +++ b/apps/updatenotification/l10n/is.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "Uppfærsla fyrir %1$s er tiltæk.", "Update for %1$s to version %2$s is available." : "Uppfærsla %1$s í útgáfu %2$s er tiltæk.", "Update for {app} to version %s is available." : "Uppfærsla fyrir {app} í útgáfu %s er tiltæk.", + "Update notification" : "Tilkynning um uppfærslu", "A new version is available: %s" : "Ný útgáfa er tiltæk: %s", "Open updater" : "Opna uppfærslustýringu", "Download now" : "Sækja núna", diff --git a/apps/updatenotification/l10n/is.json b/apps/updatenotification/l10n/is.json index 7682520c169..c24c469b2f2 100644 --- a/apps/updatenotification/l10n/is.json +++ b/apps/updatenotification/l10n/is.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "Uppfærsla fyrir %1$s er tiltæk.", "Update for %1$s to version %2$s is available." : "Uppfærsla %1$s í útgáfu %2$s er tiltæk.", "Update for {app} to version %s is available." : "Uppfærsla fyrir {app} í útgáfu %s er tiltæk.", + "Update notification" : "Tilkynning um uppfærslu", "A new version is available: %s" : "Ný útgáfa er tiltæk: %s", "Open updater" : "Opna uppfærslustýringu", "Download now" : "Sækja núna", diff --git a/apps/updatenotification/l10n/ja.js b/apps/updatenotification/l10n/ja.js index 02a009292f8..289eebe861e 100644 --- a/apps/updatenotification/l10n/ja.js +++ b/apps/updatenotification/l10n/ja.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "{version} が利用可能です。アップデート方法について詳細情報を確認してください。", "Channel updated" : "チャンネルが更新されました", "The update server could not be reached since %d days to check for new updates." : "%d日以降、新しい更新をチェックする更新サーバーにアクセスできませんでした。", + "Please check the Nextcloud and server log files for errors." : "Nextcloudとサーバーログファイルでエラーがないか確認してください。", "Update to %1$s is available." : "%1$s への更新が利用可能です。", "Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。", "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。", diff --git a/apps/updatenotification/l10n/ja.json b/apps/updatenotification/l10n/ja.json index feb1993dc80..fcead04da5b 100644 --- a/apps/updatenotification/l10n/ja.json +++ b/apps/updatenotification/l10n/ja.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "{version} が利用可能です。アップデート方法について詳細情報を確認してください。", "Channel updated" : "チャンネルが更新されました", "The update server could not be reached since %d days to check for new updates." : "%d日以降、新しい更新をチェックする更新サーバーにアクセスできませんでした。", + "Please check the Nextcloud and server log files for errors." : "Nextcloudとサーバーログファイルでエラーがないか確認してください。", "Update to %1$s is available." : "%1$s への更新が利用可能です。", "Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。", "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。", diff --git a/apps/updatenotification/l10n/ko.js b/apps/updatenotification/l10n/ko.js index cc225791380..08fbd6e7cb0 100644 --- a/apps/updatenotification/l10n/ko.js +++ b/apps/updatenotification/l10n/ko.js @@ -1,13 +1,25 @@ OC.L10N.register( "updatenotification", { + "Update notifications" : "업데이트 알림", + "Could not start updater, please try the manual update" : "업데이트를 시작할 수 없습니다. 수동 업데이트를 시도하십시오.", "{version} is available. Get more information on how to update." : "{version}을(를) 사용할 수 있습니다. 업데이트하는 방법에 대해서 알아보십시오.", - "Updated channel" : "업데이트 된 채널", - "Updater" : "업데이터", + "Channel updated" : "채널 업데이트됨", + "The update server could not be reached since %d days to check for new updates." : "업데이트 서버에 %d일 동안 접근할 수 없어서 새 업데이트를 확인할 수 없습니다.", + "Please check the Nextcloud and server log files for errors." : "Nextcloud 및 서버 로그에서 오류 정보를 확인하십시오.", + "Update to %1$s is available." : "%1$s(으)로 업데이트할 수 있습니다.", + "Update for %1$s to version %2$s is available." : "%1$s을(를) 버전 %2$s(으)로 업데이트할 수 있습니다.", + "Update for {app} to version %s is available." : "{app}을(를) 버전 %s(으)로 업데이트할 수 있습니다.", "A new version is available: %s" : "새 버전을 사용할 수 있습니다: %s", "Open updater" : "업데이터 열기", + "Download now" : "지금 다운로드", "Your version is up to date." : "최신 버전을 사용하고 있습니다.", + "Checked on %s" : "%s에 확인함", "Update channel:" : "업데이트 채널:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "항상 새로운 버전이나 실험 채널로 업그레이드할 수 있지만, 안정 채널로 다운그레이드할 수는 없습니다." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "항상 새로운 버전이나 실험 채널로 업그레이드할 수 있지만, 안정 채널로 다운그레이드할 수는 없습니다.", + "Notify members of the following groups about available updates:" : "다음 그룹 구성원에게 업데이트 알림 전달:", + "Only notification for app updates are available." : "앱 업데이트 알림만 사용할 수 있습니다.", + "The selected update channel makes dedicated notifications for the server obsolete." : "선택한 업데이트 채널은 서버 알림을 사용하지 않습니다.", + "The selected update channel does not support updates of the server." : "선택한 업데이트 채널은 서버 업데이트를 지원하지 않습니다." }, "nplurals=1; plural=0;"); diff --git a/apps/updatenotification/l10n/ko.json b/apps/updatenotification/l10n/ko.json index a2e0474a0e3..8f2014e5c83 100644 --- a/apps/updatenotification/l10n/ko.json +++ b/apps/updatenotification/l10n/ko.json @@ -1,11 +1,23 @@ { "translations": { + "Update notifications" : "업데이트 알림", + "Could not start updater, please try the manual update" : "업데이트를 시작할 수 없습니다. 수동 업데이트를 시도하십시오.", "{version} is available. Get more information on how to update." : "{version}을(를) 사용할 수 있습니다. 업데이트하는 방법에 대해서 알아보십시오.", - "Updated channel" : "업데이트 된 채널", - "Updater" : "업데이터", + "Channel updated" : "채널 업데이트됨", + "The update server could not be reached since %d days to check for new updates." : "업데이트 서버에 %d일 동안 접근할 수 없어서 새 업데이트를 확인할 수 없습니다.", + "Please check the Nextcloud and server log files for errors." : "Nextcloud 및 서버 로그에서 오류 정보를 확인하십시오.", + "Update to %1$s is available." : "%1$s(으)로 업데이트할 수 있습니다.", + "Update for %1$s to version %2$s is available." : "%1$s을(를) 버전 %2$s(으)로 업데이트할 수 있습니다.", + "Update for {app} to version %s is available." : "{app}을(를) 버전 %s(으)로 업데이트할 수 있습니다.", "A new version is available: %s" : "새 버전을 사용할 수 있습니다: %s", "Open updater" : "업데이터 열기", + "Download now" : "지금 다운로드", "Your version is up to date." : "최신 버전을 사용하고 있습니다.", + "Checked on %s" : "%s에 확인함", "Update channel:" : "업데이트 채널:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "항상 새로운 버전이나 실험 채널로 업그레이드할 수 있지만, 안정 채널로 다운그레이드할 수는 없습니다." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "항상 새로운 버전이나 실험 채널로 업그레이드할 수 있지만, 안정 채널로 다운그레이드할 수는 없습니다.", + "Notify members of the following groups about available updates:" : "다음 그룹 구성원에게 업데이트 알림 전달:", + "Only notification for app updates are available." : "앱 업데이트 알림만 사용할 수 있습니다.", + "The selected update channel makes dedicated notifications for the server obsolete." : "선택한 업데이트 채널은 서버 알림을 사용하지 않습니다.", + "The selected update channel does not support updates of the server." : "선택한 업데이트 채널은 서버 업데이트를 지원하지 않습니다." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/nb.js b/apps/updatenotification/l10n/nb.js index 5e05b025299..bd1e6cf8859 100644 --- a/apps/updatenotification/l10n/nb.js +++ b/apps/updatenotification/l10n/nb.js @@ -19,7 +19,7 @@ OC.L10N.register( "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid oppdatere til en nyere versjon / eksperimentell kanal. Men du kan aldri nedgradere til en mer stabil kanal.", "Notify members of the following groups about available updates:" : "Informer medlemmene i følgende grupper om tilgjengelig oppdateringer:", "Only notification for app updates are available." : "Kun varsler for app oppdateringer er tilgjengelig.", - "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør at dedikerte varsler til denne serveren utdatert.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør dedikerte varsler til denne tjeneren utdatert.", "The selected update channel does not support updates of the server." : "Den valgte oppdateringskanalen tilbyr ikke oppdateringer av tjeneren." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/nb.json b/apps/updatenotification/l10n/nb.json index 41fb9d83e00..9d2127ace72 100644 --- a/apps/updatenotification/l10n/nb.json +++ b/apps/updatenotification/l10n/nb.json @@ -17,7 +17,7 @@ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid oppdatere til en nyere versjon / eksperimentell kanal. Men du kan aldri nedgradere til en mer stabil kanal.", "Notify members of the following groups about available updates:" : "Informer medlemmene i følgende grupper om tilgjengelig oppdateringer:", "Only notification for app updates are available." : "Kun varsler for app oppdateringer er tilgjengelig.", - "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør at dedikerte varsler til denne serveren utdatert.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør dedikerte varsler til denne tjeneren utdatert.", "The selected update channel does not support updates of the server." : "Den valgte oppdateringskanalen tilbyr ikke oppdateringer av tjeneren." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/pl.js b/apps/updatenotification/l10n/pl.js index edc80cb3687..24c54279dd7 100644 --- a/apps/updatenotification/l10n/pl.js +++ b/apps/updatenotification/l10n/pl.js @@ -6,9 +6,11 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "Wersja {version} jest dostępna. Dowiedz się jak zaktualizować.", "Channel updated" : "Zaktualizowany kanał", "The update server could not be reached since %d days to check for new updates." : "Połączenie z serwerem z aktualizacjami w celu sprawdzenia nowych aktualizacji nie powiodło się od %d dni.", + "Please check the Nextcloud and server log files for errors." : "Proszę sprawdzić pliki z logami Nextcloud i serwera w celu poszukiwania błędów.", "Update to %1$s is available." : "Aktualizacja do %1$s jest dostępna.", "Update for %1$s to version %2$s is available." : "Jest dostępna aktualizacja dla %1$s do wersji %2$s", "Update for {app} to version %s is available." : "aktualizacja dla {app} do wersji %s jest dostępna.", + "Update notification" : "Powiadomienie o aktualizacji", "A new version is available: %s" : "Dostępna jest nowa wersja: %s", "Open updater" : "Otwórz aktualizator", "Download now" : "Pobierz teraz", diff --git a/apps/updatenotification/l10n/pl.json b/apps/updatenotification/l10n/pl.json index 0e37989ac0a..c2500f1ac07 100644 --- a/apps/updatenotification/l10n/pl.json +++ b/apps/updatenotification/l10n/pl.json @@ -4,9 +4,11 @@ "{version} is available. Get more information on how to update." : "Wersja {version} jest dostępna. Dowiedz się jak zaktualizować.", "Channel updated" : "Zaktualizowany kanał", "The update server could not be reached since %d days to check for new updates." : "Połączenie z serwerem z aktualizacjami w celu sprawdzenia nowych aktualizacji nie powiodło się od %d dni.", + "Please check the Nextcloud and server log files for errors." : "Proszę sprawdzić pliki z logami Nextcloud i serwera w celu poszukiwania błędów.", "Update to %1$s is available." : "Aktualizacja do %1$s jest dostępna.", "Update for %1$s to version %2$s is available." : "Jest dostępna aktualizacja dla %1$s do wersji %2$s", "Update for {app} to version %s is available." : "aktualizacja dla {app} do wersji %s jest dostępna.", + "Update notification" : "Powiadomienie o aktualizacji", "A new version is available: %s" : "Dostępna jest nowa wersja: %s", "Open updater" : "Otwórz aktualizator", "Download now" : "Pobierz teraz", diff --git a/apps/updatenotification/l10n/pt_BR.js b/apps/updatenotification/l10n/pt_BR.js index 486e885f60c..6bf7916bf67 100644 --- a/apps/updatenotification/l10n/pt_BR.js +++ b/apps/updatenotification/l10n/pt_BR.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "Atualização para %1$s está disponível.", "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponível.", "Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.", + "Update notification" : "Atualizar notificação", "A new version is available: %s" : "Uma nova versão está disponível: %s", "Open updater" : "Abrir atualizador", "Download now" : "Baixar agora", diff --git a/apps/updatenotification/l10n/pt_BR.json b/apps/updatenotification/l10n/pt_BR.json index 69a85ac7ee3..b14ce2e8540 100644 --- a/apps/updatenotification/l10n/pt_BR.json +++ b/apps/updatenotification/l10n/pt_BR.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "Atualização para %1$s está disponível.", "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponível.", "Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.", + "Update notification" : "Atualizar notificação", "A new version is available: %s" : "Uma nova versão está disponível: %s", "Open updater" : "Abrir atualizador", "Download now" : "Baixar agora", diff --git a/apps/updatenotification/l10n/ru.js b/apps/updatenotification/l10n/ru.js index e0e25b4b1fa..fdcc6c91944 100644 --- a/apps/updatenotification/l10n/ru.js +++ b/apps/updatenotification/l10n/ru.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "Доступно обновлений: %1$s", "Update for %1$s to version %2$s is available." : "Доступно обновление для %1$s до версии %2$s.", "Update for {app} to version %s is available." : "Доступно обновление для {app} до версии %s", + "Update notification" : "Уведомление об обновлении", "A new version is available: %s" : "Доступна новая версия: %s", "Open updater" : "Открыть окно обновления", "Download now" : "Скачать сейчас", diff --git a/apps/updatenotification/l10n/ru.json b/apps/updatenotification/l10n/ru.json index a5544220b50..ec54e69b26d 100644 --- a/apps/updatenotification/l10n/ru.json +++ b/apps/updatenotification/l10n/ru.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "Доступно обновлений: %1$s", "Update for %1$s to version %2$s is available." : "Доступно обновление для %1$s до версии %2$s.", "Update for {app} to version %s is available." : "Доступно обновление для {app} до версии %s", + "Update notification" : "Уведомление об обновлении", "A new version is available: %s" : "Доступна новая версия: %s", "Open updater" : "Открыть окно обновления", "Download now" : "Скачать сейчас", diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js index 13623c514aa..e5c5a9ea4f6 100644 --- a/apps/updatenotification/l10n/tr.js +++ b/apps/updatenotification/l10n/tr.js @@ -10,6 +10,7 @@ OC.L10N.register( "Update to %1$s is available." : "%1$s güncellemesi yayınlanmış.", "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme yayınlanmış.", "Update for {app} to version %s is available." : "{app} uygulaması için %s sürümü güncellemesi yayınlanmış.", + "Update notification" : "Güncelleme bildirimi", "A new version is available: %s" : "Yeni bir sürüm yayınlanmış: %s", "Open updater" : "Güncelleyici aç", "Download now" : "İndir", diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json index 6834ff34cb9..deaca0e5b93 100644 --- a/apps/updatenotification/l10n/tr.json +++ b/apps/updatenotification/l10n/tr.json @@ -8,6 +8,7 @@ "Update to %1$s is available." : "%1$s güncellemesi yayınlanmış.", "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme yayınlanmış.", "Update for {app} to version %s is available." : "{app} uygulaması için %s sürümü güncellemesi yayınlanmış.", + "Update notification" : "Güncelleme bildirimi", "A new version is available: %s" : "Yeni bir sürüm yayınlanmış: %s", "Open updater" : "Güncelleyici aç", "Download now" : "İndir", diff --git a/apps/updatenotification/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js index a49275375e1..b7e292cff7b 100644 --- a/apps/updatenotification/l10n/zh_CN.js +++ b/apps/updatenotification/l10n/zh_CN.js @@ -6,9 +6,11 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。", "Channel updated" : "更新通道", "The update server could not be reached since %d days to check for new updates." : "更新服务器自 1%d 天前起无法访问以检查更新。", + "Please check the Nextcloud and server log files for errors." : "请检查 nextcloud 和服务器的日志中的错误。", "Update to %1$s is available." : " 可以更新到 %1$s 。", "Update for %1$s to version %2$s is available." : "可以从 %1$s 版本更新到 %2$s 版本。", "Update for {app} to version %s is available." : "可以将您的 {app} 更新到版本 %s 。", + "Update notification" : "升级通知", "A new version is available: %s" : "有可用的新版本: %s", "Open updater" : "打开更新器", "Download now" : "开始下载", diff --git a/apps/updatenotification/l10n/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json index 3fc3433ff16..bee2c4f7ea1 100644 --- a/apps/updatenotification/l10n/zh_CN.json +++ b/apps/updatenotification/l10n/zh_CN.json @@ -4,9 +4,11 @@ "{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。", "Channel updated" : "更新通道", "The update server could not be reached since %d days to check for new updates." : "更新服务器自 1%d 天前起无法访问以检查更新。", + "Please check the Nextcloud and server log files for errors." : "请检查 nextcloud 和服务器的日志中的错误。", "Update to %1$s is available." : " 可以更新到 %1$s 。", "Update for %1$s to version %2$s is available." : "可以从 %1$s 版本更新到 %2$s 版本。", "Update for {app} to version %s is available." : "可以将您的 {app} 更新到版本 %s 。", + "Update notification" : "升级通知", "A new version is available: %s" : "有可用的新版本: %s", "Open updater" : "打开更新器", "Download now" : "开始下载", diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php index cbdcafc58d6..70e505c18af 100644 --- a/apps/user_ldap/appinfo/app.php +++ b/apps/user_ldap/appinfo/app.php @@ -29,46 +29,26 @@ $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); $configPrefixes = $helper->getServerConfigurationPrefixes(true); -$ldapWrapper = new OCA\User_LDAP\LDAP(); -$ocConfig = \OC::$server->getConfig(); -$notificationManager = \OC::$server->getNotificationManager(); -$notificationManager->registerNotifier(function() { - return new \OCA\User_LDAP\Notification\Notifier( - \OC::$server->getL10NFactory() - ); -}, function() { +if(count($configPrefixes) > 0) { + $ldapWrapper = new OCA\User_LDAP\LDAP(); + $ocConfig = \OC::$server->getConfig(); + $notificationManager = \OC::$server->getNotificationManager(); + $notificationManager->registerNotifier(function() { + return new \OCA\User_LDAP\Notification\Notifier( + \OC::$server->getL10NFactory() + ); + }, function() { $l = \OC::$server->getL10N('user_ldap'); return [ 'id' => 'user_ldap', 'name' => $l->t('LDAP user and group backend'), ]; -}); -if(count($configPrefixes) === 1) { - $dbc = \OC::$server->getDatabaseConnection(); - $userManager = new OCA\User_LDAP\User\Manager($ocConfig, - new OCA\User_LDAP\FilesystemHelper(), - new OCA\User_LDAP\LogWrapper(), - \OC::$server->getAvatarManager(), - new \OCP\Image(), - $dbc, - \OC::$server->getUserManager(), - $notificationManager - ); - $connector = new OCA\User_LDAP\Connection($ldapWrapper, $configPrefixes[0]); - $ldapAccess = new OCA\User_LDAP\Access($connector, $ldapWrapper, $userManager, $helper); + }); - $ldapAccess->setUserMapper(new OCA\User_LDAP\Mapping\UserMapping($dbc)); - $ldapAccess->setGroupMapper(new OCA\User_LDAP\Mapping\GroupMapping($dbc)); - $userBackend = new OCA\User_LDAP\User_LDAP($ldapAccess, $ocConfig, $notificationManager); - $groupBackend = new \OCA\User_LDAP\Group_LDAP($ldapAccess); -} else if(count($configPrefixes) > 1) { $userBackend = new OCA\User_LDAP\User_Proxy( $configPrefixes, $ldapWrapper, $ocConfig, $notificationManager ); $groupBackend = new OCA\User_LDAP\Group_Proxy($configPrefixes, $ldapWrapper); -} - -if(count($configPrefixes) > 0) { // register user backend OC_User::useBackend($userBackend); \OC::$server->getGroupManager()->addBackend($groupBackend); diff --git a/apps/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js index aa8b62a55cb..1ab15c0a720 100644 --- a/apps/user_ldap/l10n/ast.js +++ b/apps/user_ldap/l10n/ast.js @@ -1,7 +1,7 @@ OC.L10N.register( "user_ldap", { - "Failed to clear the mappings." : "Hebo un fallu al desaniciar les asignaciones.", + "Failed to clear the mappings." : "Fallu al llimpiar los mapeos.", "Failed to delete the server configuration" : "Fallu al desaniciar la configuración del sirvidor", "The configuration is invalid: anonymous bind is not allowed." : "La configuración nun ye válida: nun s'almite l'enllaz anónimu ", "The configuration is valid and the connection could be established!" : "¡La configuración ye válida y pudo afitase la conexón!", @@ -12,13 +12,17 @@ OC.L10N.register( "No data specified" : "Nun s'especificaron los datos", " Could not set configuration %s" : "Nun pudo afitase la configuración %s", "Action does not exist" : "L'acción nun esiste", + "Weak password" : "Contraseña feble", + "So-so password" : "Contraseña normalina", + "Good password" : "Contraseña bona", + "Strong password" : "Contraseña fuerte", "The Base DN appears to be wrong" : "La base DN paez tar mal", "Testing configuration…" : "Probando configuración...", "Configuration incorrect" : "Configuración incorreuta", "Configuration incomplete" : "Configuración incompleta", "Configuration OK" : "Configuración correuta", "Select groups" : "Esbillar grupos", - "Select object classes" : "Seleicionar la clas d'oxetu", + "Select object classes" : "Esbillar les clases d'oxetu", "Please check the credentials, they seem to be wrong." : "Por favor, compruebe les credenciales, que paecen tar mal.", "Please specify the port, it could not be auto-detected." : "Por favor especifica'l puertu, nun puede ser detectáu automáticamente .", "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN nun puede ser detectada automáticamente, por favor revisa les credenciales, host yá'l puertu.", @@ -36,7 +40,6 @@ OC.L10N.register( "LDAP Operations error. Anonymous bind might not be allowed." : "Erru d'operaciones LDAP . Enllaz anónimu nun s'almite.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Nun pudo guardase. Por favor asegúrate que la base de datos ta en funcionamientu. Actualiza enantes de siguir.", "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?" : "Cambiar el mou va habilitar les consultes LDAP automátiques . Dependiendo del to tamañu de LDAP puede llevar un tiempu. ¿Inda deseya camudar el mou?", - "Mode switch" : "Conmutar mou", "Select attributes" : "Esbillar atributos", "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nun s'alcuentra l'usuariu. Encamiéntase consultar los atributos d'accesu y nome d'usuariu. Filtru efectivu (copiar y pegar pa la validación de llínea de comandos): <br/>", "User found and settings verified." : "Usuariu atopáu y la configuración verificada.", @@ -49,7 +52,7 @@ OC.L10N.register( "_%s user found_::_%s users found_" : ["%s usuariu alcontráu","%s usuarios alcontraos"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nun deteutamos el nome d'atributu na pantalla d'usuariu. Por favor especifícalu nos axustes avanzaos de ldap", "Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada", - "Invalid Host" : "Host inválidu", + "Invalid Host" : "Agospiu non válidu", "Test Configuration" : "Configuración de prueba", "Help" : "Ayuda", "Groups meeting these criteria are available in %s:" : "Los grupos que cumplen estos criterios tán disponibles en %s:", @@ -61,6 +64,7 @@ OC.L10N.register( "Edit LDAP Query" : "Editar consulta LDAP", "LDAP Filter:" : "Filtru LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtru especifica qué grupos LDAP van tener accesu a %s.", + "Verify settings and count the groups" : "Verificar axustes y contar los grupos", "When logging in, %s will find the user based on the following attributes:" : "Al empecipiar sesión, %s atópase l'usuariu en función de los siguientes atributos :", "LDAP / AD Username:" : "Nome d'usuariu LDAP / AD:", "LDAP / AD Email Address:" : "Direición e-mail LDAP / AD:", @@ -92,6 +96,12 @@ OC.L10N.register( "Saving" : "Guardando", "Back" : "Atrás", "Continue" : "Continuar", + "An internal error occurred." : "Asocedió un fallu internu.", + "Current password" : "Contraseña actual", + "New password" : "Contraseña nueva", + "Renew password" : "Renovar contraseña", + "Wrong password." : "Contraseña incorreuta.", + "Cancel" : "Encaboxar", "LDAP" : "LDAP", "Server" : "Sirvidor", "Users" : "Usuarios", @@ -134,6 +144,7 @@ OC.L10N.register( "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Cuando s'active, van permitise grupos que contengan otros grupos (namái funciona si l'atributu de miembru de grupu contién DNs).", "Paging chunksize" : "Tamañu de los fragmentos de paxinación", "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.)" : "Tamañu de los fragmentos usáu pa busques LDAP paxinaes que puen devolver resultaos voluminosos, como enubmeración d'usuarios o de grupos. (Si s'afita en 0, van deshabilitase les busques LDAP paxinaes neses situaciones.)", + "(New password is sent as plain text to LDAP)" : "(La contraseña únviase como testu planu a LDAP)", "Special Attributes" : "Atributos especiales", "Quota Field" : "Cuota", "Quota Default" : "Cuota por defeutu", diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json index 789eb3ad167..f81877bb84c 100644 --- a/apps/user_ldap/l10n/ast.json +++ b/apps/user_ldap/l10n/ast.json @@ -1,5 +1,5 @@ { "translations": { - "Failed to clear the mappings." : "Hebo un fallu al desaniciar les asignaciones.", + "Failed to clear the mappings." : "Fallu al llimpiar los mapeos.", "Failed to delete the server configuration" : "Fallu al desaniciar la configuración del sirvidor", "The configuration is invalid: anonymous bind is not allowed." : "La configuración nun ye válida: nun s'almite l'enllaz anónimu ", "The configuration is valid and the connection could be established!" : "¡La configuración ye válida y pudo afitase la conexón!", @@ -10,13 +10,17 @@ "No data specified" : "Nun s'especificaron los datos", " Could not set configuration %s" : "Nun pudo afitase la configuración %s", "Action does not exist" : "L'acción nun esiste", + "Weak password" : "Contraseña feble", + "So-so password" : "Contraseña normalina", + "Good password" : "Contraseña bona", + "Strong password" : "Contraseña fuerte", "The Base DN appears to be wrong" : "La base DN paez tar mal", "Testing configuration…" : "Probando configuración...", "Configuration incorrect" : "Configuración incorreuta", "Configuration incomplete" : "Configuración incompleta", "Configuration OK" : "Configuración correuta", "Select groups" : "Esbillar grupos", - "Select object classes" : "Seleicionar la clas d'oxetu", + "Select object classes" : "Esbillar les clases d'oxetu", "Please check the credentials, they seem to be wrong." : "Por favor, compruebe les credenciales, que paecen tar mal.", "Please specify the port, it could not be auto-detected." : "Por favor especifica'l puertu, nun puede ser detectáu automáticamente .", "Base DN could not be auto-detected, please revise credentials, host and port." : "Base DN nun puede ser detectada automáticamente, por favor revisa les credenciales, host yá'l puertu.", @@ -34,7 +38,6 @@ "LDAP Operations error. Anonymous bind might not be allowed." : "Erru d'operaciones LDAP . Enllaz anónimu nun s'almite.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Nun pudo guardase. Por favor asegúrate que la base de datos ta en funcionamientu. Actualiza enantes de siguir.", "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?" : "Cambiar el mou va habilitar les consultes LDAP automátiques . Dependiendo del to tamañu de LDAP puede llevar un tiempu. ¿Inda deseya camudar el mou?", - "Mode switch" : "Conmutar mou", "Select attributes" : "Esbillar atributos", "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "Nun s'alcuentra l'usuariu. Encamiéntase consultar los atributos d'accesu y nome d'usuariu. Filtru efectivu (copiar y pegar pa la validación de llínea de comandos): <br/>", "User found and settings verified." : "Usuariu atopáu y la configuración verificada.", @@ -47,7 +50,7 @@ "_%s user found_::_%s users found_" : ["%s usuariu alcontráu","%s usuarios alcontraos"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Nun deteutamos el nome d'atributu na pantalla d'usuariu. Por favor especifícalu nos axustes avanzaos de ldap", "Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada", - "Invalid Host" : "Host inválidu", + "Invalid Host" : "Agospiu non válidu", "Test Configuration" : "Configuración de prueba", "Help" : "Ayuda", "Groups meeting these criteria are available in %s:" : "Los grupos que cumplen estos criterios tán disponibles en %s:", @@ -59,6 +62,7 @@ "Edit LDAP Query" : "Editar consulta LDAP", "LDAP Filter:" : "Filtru LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtru especifica qué grupos LDAP van tener accesu a %s.", + "Verify settings and count the groups" : "Verificar axustes y contar los grupos", "When logging in, %s will find the user based on the following attributes:" : "Al empecipiar sesión, %s atópase l'usuariu en función de los siguientes atributos :", "LDAP / AD Username:" : "Nome d'usuariu LDAP / AD:", "LDAP / AD Email Address:" : "Direición e-mail LDAP / AD:", @@ -90,6 +94,12 @@ "Saving" : "Guardando", "Back" : "Atrás", "Continue" : "Continuar", + "An internal error occurred." : "Asocedió un fallu internu.", + "Current password" : "Contraseña actual", + "New password" : "Contraseña nueva", + "Renew password" : "Renovar contraseña", + "Wrong password." : "Contraseña incorreuta.", + "Cancel" : "Encaboxar", "LDAP" : "LDAP", "Server" : "Sirvidor", "Users" : "Usuarios", @@ -132,6 +142,7 @@ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Cuando s'active, van permitise grupos que contengan otros grupos (namái funciona si l'atributu de miembru de grupu contién DNs).", "Paging chunksize" : "Tamañu de los fragmentos de paxinación", "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.)" : "Tamañu de los fragmentos usáu pa busques LDAP paxinaes que puen devolver resultaos voluminosos, como enubmeración d'usuarios o de grupos. (Si s'afita en 0, van deshabilitase les busques LDAP paxinaes neses situaciones.)", + "(New password is sent as plain text to LDAP)" : "(La contraseña únviase como testu planu a LDAP)", "Special Attributes" : "Atributos especiales", "Quota Field" : "Cuota", "Quota Default" : "Cuota por defeutu", diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js index 2645072771b..6c4f10cd309 100644 --- a/apps/user_ldap/l10n/cs.js +++ b/apps/user_ldap/l10n/cs.js @@ -12,6 +12,13 @@ OC.L10N.register( "No data specified" : "Neurčena žádná data", " Could not set configuration %s" : "Nelze nastavit konfiguraci %s", "Action does not exist" : "Tato akce neexistuje", + "LDAP user and group backend" : "Backend pro LDAP uživatele a skupiny", + "Renewing …" : "Obnovování …", + "Very weak password" : "Velmi slabé heslo", + "Weak password" : "Slabé heslo", + "So-so password" : "Přijatelné heslo", + "Good password" : "Dobré heslo", + "Strong password" : "Silné heslo", "The Base DN appears to be wrong" : "Base DN nevypadá být v pořádku", "Testing configuration…" : "Testování konfigurace...", "Configuration incorrect" : "Nesprávná konfigurace", @@ -44,9 +51,13 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Zástupný symbol \"%uid\" chybí. Při dotatzu na LDAP / AD bude nahrazen přihlašovacím jménem.", "Please provide a login name to test against" : "Zadejte prosím přihlašovací jméno pro otestování", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Skupinové pole bylo vypnuto, protože LDAP / AD server nepodporuje memberOf.", "Password change rejected. Hint: " : "Změna hesla zamítnuta. Nápověda: ", + "Please login with the new password" : "Prosím, přihlaste se pomocí nového hesla", + "Your password will expire tomorrow." : "Vaše heslo zítra vyprší.", + "Your password will expire today." : "Vaše heslo dnes vyprší.", "LDAP / AD integration" : "LDAP / AD propojení", "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"], "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"], @@ -64,8 +75,10 @@ OC.L10N.register( "Edit LDAP Query" : "Upravit LDAP požadavek", "LDAP Filter:" : "LDAP filtr:", "The filter specifies which LDAP groups 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 the groups" : "Ověřit nastavení a spočítat skupiny", "When logging in, %s will find the user based on the following attributes:" : "Při přihlašování, %s bude hledat uživatele na základě následujících atributů:", "LDAP / AD Username:" : "LDAP / AD uživatelské jméno:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Umožňuje přihlášení LDAP / AD uživatelským jménem, což je uid nebo sAMAccountName a bude detekováno.", "LDAP / AD Email Address:" : "LDAP / AD emailová adresa:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Umožňuje přihlášení s atributem emailu. Jsou povoleny Mail a mailPrimaryAddress.", "Other Attributes:" : "Další atributy:", @@ -74,9 +87,11 @@ OC.L10N.register( "Verify settings" : "Ověřit nastavení", "1. Server" : "1. Server", "%s. Server:" : "%s. Server:", + "Add a new configuration" : "Přidat novou konfiguraci", "Copy current configuration into new directory binding" : "Zkopírovat současnou konfiguraci do nového adresářového propojení", "Delete the current configuration" : "Smazat současnou konfiguraci", "Host" : "Počítač", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Pokud nevyžadujete SSL, můžete protokol vynechat. Pokud ano, začněte ldaps://", "Port" : "Port", "Detect Port" : "Detekovat port", "User DN" : "Uživatelské DN", @@ -96,6 +111,15 @@ OC.L10N.register( "Saving" : "Ukládá se", "Back" : "Zpět", "Continue" : "Pokračovat", + "Please renew your password." : "Prosím, obnovte vaše heslo.", + "An internal error occurred." : "Došlo k interní chybě.", + "Please try again or contact your administrator." : "Zkuste to znovu, nebo kontaktujte vašeho administrátora.", + "Current password" : "Aktuální heslo", + "New password" : "Žádné heslo", + "Renew password" : "Obnovit heslo", + "Wrong password. Reset it?" : "Chybné heslo. Resetovat?", + "Wrong password." : "Chybné heslo.", + "Cancel" : "Zrušit", "LDAP" : "LDAP", "Server" : "Server", "Users" : "Uživatelé", @@ -141,10 +165,15 @@ OC.L10N.register( "Enable LDAP password changes per user" : "Povolit změny LDAP hesla pro každého uživatele", "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." : "Povolit LDAP uživatelům změnu jejich hesla a povolit Super Administrátorům a skupinovým Administrátorům změnu hesel jejich LDAP uživatelů. Funguje pouze, pokud jsou na LDAP serveru příslušně nakonfigurovány seznamy řízení přístupu. Protože hesla jsou LDAP serveru zasílána v čisté podobě, musí být použito šifrování při transportu a na LDAP serveru by mělo být nakonfigurováno hashování hesel.", "(New password is sent as plain text to LDAP)" : "(Nové heslo je LDAPu zasláno jako prostý text)", + "Default password policy DN" : "DN výchozí politiky hesel", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN výchozí politiky hesel, která bude použita ke zpracování vypršení hesel. Funguje pouze pokud jsou povoleny změny hesla uživatelem a používá se OpenLDAP. Ponechte prázdné pro výchozí zpracování vypršení hesel.", "Special Attributes" : "Speciální atributy", "Quota Field" : "Pole pro kvótu", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Ponechte prázné pro výchozí uživatelskou kvótu. Jinak uveďte LDAP / AD atribut.", "Quota Default" : "Výchozí kvóta", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Přepsat výchozí kvótu pro LDAP uživatele, kteří nemají kvótu nastavenou v poli kvóty.", "Email Field" : "Pole emailu", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Nastavit e-mail uživatele na základě LDAP atributu. Ponechte prázdné pro výchozí chování.", "User Home Folder Naming Rule" : "Pravidlo pojmenování domovského adresáře uživatele", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Ponechte prázdné pro uživatelské jméno (výchozí). Jinak uveďte LDAP/AD parametr.", "Internal Username" : "Interní uživatelské jméno", diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json index c3b2279237a..e8e6553e2d8 100644 --- a/apps/user_ldap/l10n/cs.json +++ b/apps/user_ldap/l10n/cs.json @@ -10,6 +10,13 @@ "No data specified" : "Neurčena žádná data", " Could not set configuration %s" : "Nelze nastavit konfiguraci %s", "Action does not exist" : "Tato akce neexistuje", + "LDAP user and group backend" : "Backend pro LDAP uživatele a skupiny", + "Renewing …" : "Obnovování …", + "Very weak password" : "Velmi slabé heslo", + "Weak password" : "Slabé heslo", + "So-so password" : "Přijatelné heslo", + "Good password" : "Dobré heslo", + "Strong password" : "Silné heslo", "The Base DN appears to be wrong" : "Base DN nevypadá být v pořádku", "Testing configuration…" : "Testování konfigurace...", "Configuration incorrect" : "Nesprávná konfigurace", @@ -42,9 +49,13 @@ "An unspecified error occurred. Please check the settings and the log." : "Došlo k nespecifikované chybě. Zkontrolujte prosím nastavení a soubor logu.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Filtr vyhledávání je neplatný, pravděpodobně z důvodu chybné syntax jako třeba neuzavřené závorky. Ověřte to.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Došlo k chybě připojení k LDAP / AD, zkontrolujte prosím host, port a přihlašovací údaje.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Zástupný symbol \"%uid\" chybí. Při dotatzu na LDAP / AD bude nahrazen přihlašovacím jménem.", "Please provide a login name to test against" : "Zadejte prosím přihlašovací jméno pro otestování", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Skupinové pole bylo vypnuto, protože LDAP / AD server nepodporuje memberOf.", "Password change rejected. Hint: " : "Změna hesla zamítnuta. Nápověda: ", + "Please login with the new password" : "Prosím, přihlaste se pomocí nového hesla", + "Your password will expire tomorrow." : "Vaše heslo zítra vyprší.", + "Your password will expire today." : "Vaše heslo dnes vyprší.", "LDAP / AD integration" : "LDAP / AD propojení", "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin"], "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů"], @@ -62,8 +73,10 @@ "Edit LDAP Query" : "Upravit LDAP požadavek", "LDAP Filter:" : "LDAP filtr:", "The filter specifies which LDAP groups 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 the groups" : "Ověřit nastavení a spočítat skupiny", "When logging in, %s will find the user based on the following attributes:" : "Při přihlašování, %s bude hledat uživatele na základě následujících atributů:", "LDAP / AD Username:" : "LDAP / AD uživatelské jméno:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Umožňuje přihlášení LDAP / AD uživatelským jménem, což je uid nebo sAMAccountName a bude detekováno.", "LDAP / AD Email Address:" : "LDAP / AD emailová adresa:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Umožňuje přihlášení s atributem emailu. Jsou povoleny Mail a mailPrimaryAddress.", "Other Attributes:" : "Další atributy:", @@ -72,9 +85,11 @@ "Verify settings" : "Ověřit nastavení", "1. Server" : "1. Server", "%s. Server:" : "%s. Server:", + "Add a new configuration" : "Přidat novou konfiguraci", "Copy current configuration into new directory binding" : "Zkopírovat současnou konfiguraci do nového adresářového propojení", "Delete the current configuration" : "Smazat současnou konfiguraci", "Host" : "Počítač", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Pokud nevyžadujete SSL, můžete protokol vynechat. Pokud ano, začněte ldaps://", "Port" : "Port", "Detect Port" : "Detekovat port", "User DN" : "Uživatelské DN", @@ -94,6 +109,15 @@ "Saving" : "Ukládá se", "Back" : "Zpět", "Continue" : "Pokračovat", + "Please renew your password." : "Prosím, obnovte vaše heslo.", + "An internal error occurred." : "Došlo k interní chybě.", + "Please try again or contact your administrator." : "Zkuste to znovu, nebo kontaktujte vašeho administrátora.", + "Current password" : "Aktuální heslo", + "New password" : "Žádné heslo", + "Renew password" : "Obnovit heslo", + "Wrong password. Reset it?" : "Chybné heslo. Resetovat?", + "Wrong password." : "Chybné heslo.", + "Cancel" : "Zrušit", "LDAP" : "LDAP", "Server" : "Server", "Users" : "Uživatelé", @@ -139,10 +163,15 @@ "Enable LDAP password changes per user" : "Povolit změny LDAP hesla pro každého uživatele", "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." : "Povolit LDAP uživatelům změnu jejich hesla a povolit Super Administrátorům a skupinovým Administrátorům změnu hesel jejich LDAP uživatelů. Funguje pouze, pokud jsou na LDAP serveru příslušně nakonfigurovány seznamy řízení přístupu. Protože hesla jsou LDAP serveru zasílána v čisté podobě, musí být použito šifrování při transportu a na LDAP serveru by mělo být nakonfigurováno hashování hesel.", "(New password is sent as plain text to LDAP)" : "(Nové heslo je LDAPu zasláno jako prostý text)", + "Default password policy DN" : "DN výchozí politiky hesel", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "DN výchozí politiky hesel, která bude použita ke zpracování vypršení hesel. Funguje pouze pokud jsou povoleny změny hesla uživatelem a používá se OpenLDAP. Ponechte prázdné pro výchozí zpracování vypršení hesel.", "Special Attributes" : "Speciální atributy", "Quota Field" : "Pole pro kvótu", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Ponechte prázné pro výchozí uživatelskou kvótu. Jinak uveďte LDAP / AD atribut.", "Quota Default" : "Výchozí kvóta", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Přepsat výchozí kvótu pro LDAP uživatele, kteří nemají kvótu nastavenou v poli kvóty.", "Email Field" : "Pole emailu", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Nastavit e-mail uživatele na základě LDAP atributu. Ponechte prázdné pro výchozí chování.", "User Home Folder Naming Rule" : "Pravidlo pojmenování domovského adresáře uživatele", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Ponechte prázdné pro uživatelské jméno (výchozí). Jinak uveďte LDAP/AD parametr.", "Internal Username" : "Interní uživatelské jméno", diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js index 16be6a4ba1b..a1f6bb440a4 100644 --- a/apps/user_ldap/l10n/de.js +++ b/apps/user_ldap/l10n/de.js @@ -56,6 +56,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.", "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:", "Please login with the new password" : "Bitte mit dem neuen Passwort anmelden", + "Your password will expire tomorrow." : "Dein Passwort läuft morgen ab", + "Your password will expire today." : "Dein Passwort läuft heute ab", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Dein Passwort läuft in %n Tag ab","Dein Passwort läuft in %n Tagen ab"], "LDAP / AD integration" : "LDAP / AD Integration", "_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"], "_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"], diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json index bd6b2dcc0d2..234355bc34c 100644 --- a/apps/user_ldap/l10n/de.json +++ b/apps/user_ldap/l10n/de.json @@ -54,6 +54,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.", "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:", "Please login with the new password" : "Bitte mit dem neuen Passwort anmelden", + "Your password will expire tomorrow." : "Dein Passwort läuft morgen ab", + "Your password will expire today." : "Dein Passwort läuft heute ab", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Dein Passwort läuft in %n Tag ab","Dein Passwort läuft in %n Tagen ab"], "LDAP / AD integration" : "LDAP / AD Integration", "_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"], "_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"], diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js index 768fa8b17d0..16a39130585 100644 --- a/apps/user_ldap/l10n/de_DE.js +++ b/apps/user_ldap/l10n/de_DE.js @@ -56,6 +56,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.", "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:", "Please login with the new password" : "Bitte mit dem neuen Passwort anmelden", + "Your password will expire tomorrow." : "Ihr Passwort läuft morgen ab", + "Your password will expire today." : "Ihr Passwort läuft heute ab", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ihr Passwort läuft in %n Tage ab","Ihr Passwort läuft in %n Tagen ab"], "LDAP / AD integration" : "LDAP/AD-Integration", "_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"], "_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"], diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json index 04c83419dd3..3e707d6ba17 100644 --- a/apps/user_ldap/l10n/de_DE.json +++ b/apps/user_ldap/l10n/de_DE.json @@ -54,6 +54,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.", "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:", "Please login with the new password" : "Bitte mit dem neuen Passwort anmelden", + "Your password will expire tomorrow." : "Ihr Passwort läuft morgen ab", + "Your password will expire today." : "Ihr Passwort läuft heute ab", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ihr Passwort läuft in %n Tage ab","Ihr Passwort läuft in %n Tagen ab"], "LDAP / AD integration" : "LDAP/AD-Integration", "_%s group found_::_%s groups found_" : ["%s Gruppe gefunden","%s Gruppen gefunden"], "_%s user found_::_%s users found_" : ["%s Benutzer gefunden","%s Benutzer gefunden"], diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js index bb01c24533c..49974f76b03 100644 --- a/apps/user_ldap/l10n/el.js +++ b/apps/user_ldap/l10n/el.js @@ -12,6 +12,8 @@ OC.L10N.register( "No data specified" : "Δεν προσδιορίστηκαν δεδομένα", " Could not set configuration %s" : "Αδυναμία ρύθμισης %s", "Action does not exist" : "Η ενέργεια δεν υπάρχει", + "Renewing …" : "Ανανέωση ...", + "Very weak password" : "Πολύ αδύναμος κωδικός πρόσβασης", "Weak password" : "Ασθενές συνηματικό", "Good password" : "Καλό συνθηματικό", "Strong password" : "Ισχυρό συνθηματικό", @@ -48,6 +50,8 @@ OC.L10N.register( "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Προέκυψε σφάλμα σύνδεσης στο LDAP / AD, παρακαλούμε ελέγξτε διακομιστή θύρα και διαπιστευτήρια.", "Please provide a login name to test against" : "Παρακαλούμε δώστε ένα όνομα σύνδεσης για να γίνει δοκιμή", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Το πεδίο ομάδας απενεργοποιήθηκε επειδή ο διακομιστής LDAP / AD δεν υποστηρίζει το memberOf.", + "Your password will expire tomorrow." : "Το συνθηματικό σας θα λήξει αύριο.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."], "_%s group found_::_%s groups found_" : ["%s ομάδα βρέθηκε","%s ομάδες βρέθηκαν"], "_%s user found_::_%s users found_" : ["%s χρήστης βρέθηκε","%s χρήστες βρέθηκαν"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Δεν ήταν δυνατή η ανίχνευση της ιδιότητας του εμφανιζόμενου ονόματος χρήστη . Παρακαλείστε να το προσδιορίσετε στις προηγμένες ρυθμίσεις LDAP", @@ -74,6 +78,7 @@ OC.L10N.register( "Verify settings" : "Επιβεβαίωση ρυθμίσεων", "1. Server" : "1. Διακομιστής", "%s. Server:" : "%s. Διακομιστής:", + "Add a new configuration" : "Προσθήκη νέας ρύθμισης", "Copy current configuration into new directory binding" : "Αντιγραφή της τρέχουσας διαμόρφωσης σε νέο κατάλογο", "Delete the current configuration" : "Διαγραφή τρέχουσας διαμόρφωσης", "Host" : "Διακομιστής", @@ -95,6 +100,14 @@ OC.L10N.register( "Saving" : "Αποθήκευση", "Back" : "Επιστροφή", "Continue" : "Συνέχεια", + "Please renew your password." : "Παρακαλούμε ανανεώτε το συνθηματικό σας.", + "An internal error occurred." : "Παρουσιάστηκε ένα εσωτερικό σφάλμα.", + "Current password" : "Τρέχον συνθηματικό", + "New password" : "Νέο συνθηματικό", + "Renew password" : "Ανανέωση συνθηματικού", + "Wrong password. Reset it?" : "Λάθος συνθηματικο. Επαναφορά;", + "Wrong password." : "Εσφαλμένο συνθηματικό.", + "Cancel" : "Ακύρωση", "LDAP" : "LDAP", "Server" : "Διακομιστής", "Users" : "Χρήστες", diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json index 83db36afa19..d0262fa9cfd 100644 --- a/apps/user_ldap/l10n/el.json +++ b/apps/user_ldap/l10n/el.json @@ -10,6 +10,8 @@ "No data specified" : "Δεν προσδιορίστηκαν δεδομένα", " Could not set configuration %s" : "Αδυναμία ρύθμισης %s", "Action does not exist" : "Η ενέργεια δεν υπάρχει", + "Renewing …" : "Ανανέωση ...", + "Very weak password" : "Πολύ αδύναμος κωδικός πρόσβασης", "Weak password" : "Ασθενές συνηματικό", "Good password" : "Καλό συνθηματικό", "Strong password" : "Ισχυρό συνθηματικό", @@ -46,6 +48,8 @@ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Προέκυψε σφάλμα σύνδεσης στο LDAP / AD, παρακαλούμε ελέγξτε διακομιστή θύρα και διαπιστευτήρια.", "Please provide a login name to test against" : "Παρακαλούμε δώστε ένα όνομα σύνδεσης για να γίνει δοκιμή", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Το πεδίο ομάδας απενεργοποιήθηκε επειδή ο διακομιστής LDAP / AD δεν υποστηρίζει το memberOf.", + "Your password will expire tomorrow." : "Το συνθηματικό σας θα λήξει αύριο.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."], "_%s group found_::_%s groups found_" : ["%s ομάδα βρέθηκε","%s ομάδες βρέθηκαν"], "_%s user found_::_%s users found_" : ["%s χρήστης βρέθηκε","%s χρήστες βρέθηκαν"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "Δεν ήταν δυνατή η ανίχνευση της ιδιότητας του εμφανιζόμενου ονόματος χρήστη . Παρακαλείστε να το προσδιορίσετε στις προηγμένες ρυθμίσεις LDAP", @@ -72,6 +76,7 @@ "Verify settings" : "Επιβεβαίωση ρυθμίσεων", "1. Server" : "1. Διακομιστής", "%s. Server:" : "%s. Διακομιστής:", + "Add a new configuration" : "Προσθήκη νέας ρύθμισης", "Copy current configuration into new directory binding" : "Αντιγραφή της τρέχουσας διαμόρφωσης σε νέο κατάλογο", "Delete the current configuration" : "Διαγραφή τρέχουσας διαμόρφωσης", "Host" : "Διακομιστής", @@ -93,6 +98,14 @@ "Saving" : "Αποθήκευση", "Back" : "Επιστροφή", "Continue" : "Συνέχεια", + "Please renew your password." : "Παρακαλούμε ανανεώτε το συνθηματικό σας.", + "An internal error occurred." : "Παρουσιάστηκε ένα εσωτερικό σφάλμα.", + "Current password" : "Τρέχον συνθηματικό", + "New password" : "Νέο συνθηματικό", + "Renew password" : "Ανανέωση συνθηματικού", + "Wrong password. Reset it?" : "Λάθος συνθηματικο. Επαναφορά;", + "Wrong password." : "Εσφαλμένο συνθηματικό.", + "Cancel" : "Ακύρωση", "LDAP" : "LDAP", "Server" : "Διακομιστής", "Users" : "Χρήστες", diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js index 44bb447ae97..59556732058 100644 --- a/apps/user_ldap/l10n/es.js +++ b/apps/user_ldap/l10n/es.js @@ -12,6 +12,13 @@ OC.L10N.register( "No data specified" : "No se han especificado los datos", " Could not set configuration %s" : "No se pudo establecer la configuración %s", "Action does not exist" : "La acción no existe.", + "LDAP user and group backend" : "Motor de usuarios y grupos LDAP", + "Renewing …" : "Renovando...", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña pasable", + "Good password" : "Contraseña buena", + "Strong password" : "Contraseña fuerte", "The Base DN appears to be wrong" : "La Base DN parece estar mal", "Testing configuration…" : "Probando configuración", "Configuration incorrect" : "Configuración Incorrecta", @@ -44,9 +51,14 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "Un error no especificado ocurrió. Por favor verifique las configuraciones y el registro.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de búsqueda es inválido, probablemente debido a problemas de sintáxis tales como números impares de paréntesis abiertos y cerrados. Por favor revíselos.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Un error de conexión a LDAP / AD ocurrió, por favor verifique host, puerto y credenciales.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el marcador de posición \"%uid\". Será reemplazado por el nombre de registro al consultar LDAP / AD.", "Please provide a login name to test against" : "Por favor suministre un nombre de inicio de sesión para probar", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "El cuadro de grupo fue deshabilitado, porque el servidor LDAP / AD no admite memberOf.", "Password change rejected. Hint: " : "Contraseña rechazada. Pista:", + "Please login with the new password" : "Por favor, entra con la nueva contraseña", + "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", + "Your password will expire today." : "Tu contraseña expirará hoy.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Tu contraseña expirará dentro de %n día.","Tu contraseña expirará dentro de %n días."], "LDAP / AD integration" : "Integración LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","Grupos %s encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados"], @@ -67,6 +79,7 @@ OC.L10N.register( "Verify settings and count the groups" : "Verifique los ajustes y cuente los grupos", "When logging in, %s will find the user based on the following attributes:" : "Cuando se inicia sesión, %s encontrará al usuario basado en los siguientes atributos:", "LDAP / AD Username:" : "Nombre de usuario LDAP /AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Permite identificarse contra el nombre de usuario LDAP / AD, que es o bien uid o bien sAMAccountName y será detectado.", "LDAP / AD Email Address:" : "LDAP / AD dirección de correo electrónico:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite el inicio de sesión contra un atributo de correo electrónico. Correo y dirección primario de correo electrónico está habilitada.", "Other Attributes:" : "Otros atributos:", @@ -79,6 +92,7 @@ OC.L10N.register( "Copy current configuration into new directory binding" : "Copiar la actual configuración en un nuevo directorio de enlace", "Delete the current configuration" : "Elimina la actual configuración", "Host" : "Servidor", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Puedes omitir el protocolo, excepto si requieres SSL. En este caso, comienza con ldaps://", "Port" : "Puerto", "Detect Port" : "Detectar puerto", "User DN" : "DN usuario", @@ -98,6 +112,15 @@ OC.L10N.register( "Saving" : "Guardando", "Back" : "Atrás", "Continue" : "Continuar", + "Please renew your password." : "Por favor, renueva tu contraseña.", + "An internal error occurred." : "Ha ocurrido un error interno.", + "Please try again or contact your administrator." : "Por favor, inténtalo de nuevo o contacta con tu administrador.", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Renew password" : "Renovar contraseña", + "Wrong password. Reset it?" : "Contraseña errónea. ¿Resetearla?", + "Wrong password." : "Contraseña errónea.", + "Cancel" : "Cancelar", "LDAP" : "LDAP", "Server" : "Servidor", "Users" : "Usuarios", @@ -143,6 +166,8 @@ OC.L10N.register( "Enable LDAP password changes per user" : "Permitir cambios de contraseñas LDAP por usuario", "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." : "Permite a usuarios LDAP cambiar su contraseña y permite administradores y administradores de grupos, cambiar la contraseña de sus usuarios LDAP. SOlo funciona cuando las políticas de control de acceso están configuradas de acuerdo a las del servidor LDAP. Como las contraseñas se mandan en texto plano al servidor, LDAP, encripción del transporte debe ser usado y cifrado de las contraseñas debe ser configurado en el servidor LDAP.", "(New password is sent as plain text to LDAP)" : "(La nueva contraseña se envía como texto plano a LDAP)", + "Default password policy DN" : "Política de contraseñas por defecto DN", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN de una política de contraseñas por defecto que será usado para el manejo de la expiración de contraseñas. Solo funciona cuando los cambios por usuario de la contraseña LDAP están habilitados y solo está aceptada por OpenLDAP. Déjala vacía para deshabilitar el manejo de expiración de contraseñas.", "Special Attributes" : "Atributos especiales", "Quota Field" : "Cuota", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deje vacío para la couta predeterminada del usuario. De otra manera, específique un atributo LDAP/AD.", diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json index ed7bdc158ad..d3686ded22a 100644 --- a/apps/user_ldap/l10n/es.json +++ b/apps/user_ldap/l10n/es.json @@ -10,6 +10,13 @@ "No data specified" : "No se han especificado los datos", " Could not set configuration %s" : "No se pudo establecer la configuración %s", "Action does not exist" : "La acción no existe.", + "LDAP user and group backend" : "Motor de usuarios y grupos LDAP", + "Renewing …" : "Renovando...", + "Very weak password" : "Contraseña muy débil", + "Weak password" : "Contraseña débil", + "So-so password" : "Contraseña pasable", + "Good password" : "Contraseña buena", + "Strong password" : "Contraseña fuerte", "The Base DN appears to be wrong" : "La Base DN parece estar mal", "Testing configuration…" : "Probando configuración", "Configuration incorrect" : "Configuración Incorrecta", @@ -42,9 +49,14 @@ "An unspecified error occurred. Please check the settings and the log." : "Un error no especificado ocurrió. Por favor verifique las configuraciones y el registro.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtro de búsqueda es inválido, probablemente debido a problemas de sintáxis tales como números impares de paréntesis abiertos y cerrados. Por favor revíselos.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Un error de conexión a LDAP / AD ocurrió, por favor verifique host, puerto y credenciales.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Falta el marcador de posición \"%uid\". Será reemplazado por el nombre de registro al consultar LDAP / AD.", "Please provide a login name to test against" : "Por favor suministre un nombre de inicio de sesión para probar", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "El cuadro de grupo fue deshabilitado, porque el servidor LDAP / AD no admite memberOf.", "Password change rejected. Hint: " : "Contraseña rechazada. Pista:", + "Please login with the new password" : "Por favor, entra con la nueva contraseña", + "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", + "Your password will expire today." : "Tu contraseña expirará hoy.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Tu contraseña expirará dentro de %n día.","Tu contraseña expirará dentro de %n días."], "LDAP / AD integration" : "Integración LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","Grupos %s encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados"], @@ -65,6 +77,7 @@ "Verify settings and count the groups" : "Verifique los ajustes y cuente los grupos", "When logging in, %s will find the user based on the following attributes:" : "Cuando se inicia sesión, %s encontrará al usuario basado en los siguientes atributos:", "LDAP / AD Username:" : "Nombre de usuario LDAP /AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Permite identificarse contra el nombre de usuario LDAP / AD, que es o bien uid o bien sAMAccountName y será detectado.", "LDAP / AD Email Address:" : "LDAP / AD dirección de correo electrónico:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite el inicio de sesión contra un atributo de correo electrónico. Correo y dirección primario de correo electrónico está habilitada.", "Other Attributes:" : "Otros atributos:", @@ -77,6 +90,7 @@ "Copy current configuration into new directory binding" : "Copiar la actual configuración en un nuevo directorio de enlace", "Delete the current configuration" : "Elimina la actual configuración", "Host" : "Servidor", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Puedes omitir el protocolo, excepto si requieres SSL. En este caso, comienza con ldaps://", "Port" : "Puerto", "Detect Port" : "Detectar puerto", "User DN" : "DN usuario", @@ -96,6 +110,15 @@ "Saving" : "Guardando", "Back" : "Atrás", "Continue" : "Continuar", + "Please renew your password." : "Por favor, renueva tu contraseña.", + "An internal error occurred." : "Ha ocurrido un error interno.", + "Please try again or contact your administrator." : "Por favor, inténtalo de nuevo o contacta con tu administrador.", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Renew password" : "Renovar contraseña", + "Wrong password. Reset it?" : "Contraseña errónea. ¿Resetearla?", + "Wrong password." : "Contraseña errónea.", + "Cancel" : "Cancelar", "LDAP" : "LDAP", "Server" : "Servidor", "Users" : "Usuarios", @@ -141,6 +164,8 @@ "Enable LDAP password changes per user" : "Permitir cambios de contraseñas LDAP por usuario", "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." : "Permite a usuarios LDAP cambiar su contraseña y permite administradores y administradores de grupos, cambiar la contraseña de sus usuarios LDAP. SOlo funciona cuando las políticas de control de acceso están configuradas de acuerdo a las del servidor LDAP. Como las contraseñas se mandan en texto plano al servidor, LDAP, encripción del transporte debe ser usado y cifrado de las contraseñas debe ser configurado en el servidor LDAP.", "(New password is sent as plain text to LDAP)" : "(La nueva contraseña se envía como texto plano a LDAP)", + "Default password policy DN" : "Política de contraseñas por defecto DN", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN de una política de contraseñas por defecto que será usado para el manejo de la expiración de contraseñas. Solo funciona cuando los cambios por usuario de la contraseña LDAP están habilitados y solo está aceptada por OpenLDAP. Déjala vacía para deshabilitar el manejo de expiración de contraseñas.", "Special Attributes" : "Atributos especiales", "Quota Field" : "Cuota", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deje vacío para la couta predeterminada del usuario. De otra manera, específique un atributo LDAP/AD.", diff --git a/apps/user_ldap/l10n/es_MX.js b/apps/user_ldap/l10n/es_MX.js index e0a8aecb939..6a3dd19978a 100644 --- a/apps/user_ldap/l10n/es_MX.js +++ b/apps/user_ldap/l10n/es_MX.js @@ -56,6 +56,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "El cuadro de grupo está deshabilitado, porque el servidor LDAP / AD no soporta memberOf.", "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ", "Please login with the new password" : "Favor de iniciar sesion con la nueva contraseña", + "Your password will expire tomorrow." : "Su contraseña expirará mañana.", + "Your password will expire today." : "Su contraseña expirará el día de hoy. ", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La contraseña expirará dentro de %n día. ","La contraseña expirará dentro de %n días. "], "LDAP / AD integration" : "Integración con LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"], diff --git a/apps/user_ldap/l10n/es_MX.json b/apps/user_ldap/l10n/es_MX.json index 5478beea589..b3a56b09562 100644 --- a/apps/user_ldap/l10n/es_MX.json +++ b/apps/user_ldap/l10n/es_MX.json @@ -54,6 +54,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "El cuadro de grupo está deshabilitado, porque el servidor LDAP / AD no soporta memberOf.", "Password change rejected. Hint: " : "Cambio de contraseña rechazado. Pista: ", "Please login with the new password" : "Favor de iniciar sesion con la nueva contraseña", + "Your password will expire tomorrow." : "Su contraseña expirará mañana.", + "Your password will expire today." : "Su contraseña expirará el día de hoy. ", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La contraseña expirará dentro de %n día. ","La contraseña expirará dentro de %n días. "], "LDAP / AD integration" : "Integración con LDAP / AD", "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados"], "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados"], diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js index efb8574d47b..969d2cdffbb 100644 --- a/apps/user_ldap/l10n/fr.js +++ b/apps/user_ldap/l10n/fr.js @@ -12,6 +12,7 @@ OC.L10N.register( "No data specified" : "Aucune donnée spécifiée", " Could not set configuration %s" : "Impossible d'appliquer la configuration %s", "Action does not exist" : "L'action n'existe pas", + "LDAP user and group backend" : "Utilisateur LDAP et infrastructure de groupe", "Renewing …" : "Renouvellement en cours...", "Very weak password" : "Mot de passe très faible", "Weak password" : "Mot de passe faible", @@ -55,6 +56,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Les groupes sont désactivés car le serveur LDAP / AD ne prend pas en charge memberOf.", "Password change rejected. Hint: " : "La modification du mot de passe a été rejetée. Indice :", "Please login with the new password" : "Veuillez vous connecter avec le nouveau mot de passe", + "Your password will expire tomorrow." : "Votre mot de passe va expirer demain.", + "Your password will expire today." : "Votre mot de passe va expirer aujourd'hui.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Votre mot de passe va expirer dans %n jour.","Votre mot de passe va expirer dans %n jours."], "LDAP / AD integration" : "Intégration LDAP/AD", "_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés"], "_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés"], @@ -162,6 +166,8 @@ OC.L10N.register( "Enable LDAP password changes per user" : "Activer la modification du mot de passe LDAP par l'utilisateur", "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." : "Autoriser les utilisateurs LDAP à changer leurs mots de passe et permettre aux super administrateurs et aux administrateurs de groupe de modifier les mots de passe de leurs utilisateurs LDAP. Cela fonctionnera uniquement si les règles de contrôle d'accès sont configurées comme ceux du serveur LDAP. Puisque les mots de passe sont envoyés dans un texte en clair au serveur LDAP, le transport doit être chiffré et le hachage de mot de passe doit être configuré sur le serveur LDAP.", "(New password is sent as plain text to LDAP)" : "(Le nouveau mot de passe a été envoyé en tant que texte brut par LDAP)", + "Default password policy DN" : "DN stratégie de mots de passe par défaut", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Le DN d'une stratégie de mot de passe par défaut qui sera utilisé pour la gestion d'expiration du mot de passe. Fonctionne seulement quand le changement du mot de passe LDAP par utilisateur est activé et est uniquement supporté par OpenLDAP. Laissez vide pour désactiver la gestion d'expiration du mot de passe.", "Special Attributes" : "Attributs spéciaux", "Quota Field" : "Champ du quota", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Laissez vide pour appliquer le quota par défaut de l'utilisateur. Sinon, spécifiez un attribut LDAP / AD.", diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json index 24abea6f372..360af4c48b8 100644 --- a/apps/user_ldap/l10n/fr.json +++ b/apps/user_ldap/l10n/fr.json @@ -10,6 +10,7 @@ "No data specified" : "Aucune donnée spécifiée", " Could not set configuration %s" : "Impossible d'appliquer la configuration %s", "Action does not exist" : "L'action n'existe pas", + "LDAP user and group backend" : "Utilisateur LDAP et infrastructure de groupe", "Renewing …" : "Renouvellement en cours...", "Very weak password" : "Mot de passe très faible", "Weak password" : "Mot de passe faible", @@ -53,6 +54,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Les groupes sont désactivés car le serveur LDAP / AD ne prend pas en charge memberOf.", "Password change rejected. Hint: " : "La modification du mot de passe a été rejetée. Indice :", "Please login with the new password" : "Veuillez vous connecter avec le nouveau mot de passe", + "Your password will expire tomorrow." : "Votre mot de passe va expirer demain.", + "Your password will expire today." : "Votre mot de passe va expirer aujourd'hui.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Votre mot de passe va expirer dans %n jour.","Votre mot de passe va expirer dans %n jours."], "LDAP / AD integration" : "Intégration LDAP/AD", "_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés"], "_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés"], @@ -160,6 +164,8 @@ "Enable LDAP password changes per user" : "Activer la modification du mot de passe LDAP par l'utilisateur", "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." : "Autoriser les utilisateurs LDAP à changer leurs mots de passe et permettre aux super administrateurs et aux administrateurs de groupe de modifier les mots de passe de leurs utilisateurs LDAP. Cela fonctionnera uniquement si les règles de contrôle d'accès sont configurées comme ceux du serveur LDAP. Puisque les mots de passe sont envoyés dans un texte en clair au serveur LDAP, le transport doit être chiffré et le hachage de mot de passe doit être configuré sur le serveur LDAP.", "(New password is sent as plain text to LDAP)" : "(Le nouveau mot de passe a été envoyé en tant que texte brut par LDAP)", + "Default password policy DN" : "DN stratégie de mots de passe par défaut", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Le DN d'une stratégie de mot de passe par défaut qui sera utilisé pour la gestion d'expiration du mot de passe. Fonctionne seulement quand le changement du mot de passe LDAP par utilisateur est activé et est uniquement supporté par OpenLDAP. Laissez vide pour désactiver la gestion d'expiration du mot de passe.", "Special Attributes" : "Attributs spéciaux", "Quota Field" : "Champ du quota", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Laissez vide pour appliquer le quota par défaut de l'utilisateur. Sinon, spécifiez un attribut LDAP / AD.", diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js index 52b000e65b4..51d8d48defd 100644 --- a/apps/user_ldap/l10n/ko.js +++ b/apps/user_ldap/l10n/ko.js @@ -12,8 +12,15 @@ OC.L10N.register( "No data specified" : "데이터가 지정되지 않음", " Could not set configuration %s" : " 설정 %s을(를) 지정할 수 없음", "Action does not exist" : "동작이 존재하지 않음", + "LDAP user and group backend" : "LDAP 사용자 및 그룹 백엔드", + "Renewing …" : "갱신 중 …", + "Very weak password" : "매우 약한 암호", + "Weak password" : "약한 암호", + "So-so password" : "그저 그런 암호", + "Good password" : "좋은 암호", + "Strong password" : "매우 좋은 암호", "The Base DN appears to be wrong" : "기본 DN이 올바르지 않습니다", - "Testing configuration…" : "설정 시험 중...", + "Testing configuration…" : "설정 시험 중…", "Configuration incorrect" : "설정 올바르지 않음", "Configuration incomplete" : "설정 불완전함", "Configuration OK" : "설정 올바름", @@ -35,16 +42,24 @@ OC.L10N.register( "Anonymous bind is not allowed. Please provide a User DN and Password." : "익명 연결은 허용되지 않습니다. 사용자 DN과 암호를 입력하십시오.", "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP 작업 오류입니다. 익명 연결이 비활성화 되었을 수 있습니다.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "저장할 수 없습니다. 데이터베이스 상태를 확인하십시오. 계속하기 전에 새로 고치십시오.", - "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "모드를 전환하면 자동 LDAP 쿼리를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "모드를 전환하면 자동 LDAP 질의를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?", "Mode switch" : "모드 전환", "Select attributes" : "속성 선택", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):<br/>", "User found and settings verified." : "사용자를 찾았고 설정을 확인했습니다.", + "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인했지만 사용자가 한 명 이상 있습니다. 첫 번째 사용자만 로그인할 수 있습니다. 더 구체적인 필터를 지정하십시오.", "An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생했습니다. 설정과 로그를 확인하십시오.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생했습니다. 호스트, 포트, 인증 정보를 확인하십시오.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "\"%uid\" 자리 비움자가 없습니다. LDAP/AD에 조회할 때 로그인 이름으로 대체됩니다.", "Please provide a login name to test against" : "테스트할 로그인 사용자 이름을 입력하십시오", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "LDAP/AD 서버에서 memberOf를 지원하지 않아서 그룹 상자를 비활성화합니다.", + "Password change rejected. Hint: " : "암호 변경이 거부되었습니다. 힌트:", + "Please login with the new password" : "새 암호로 로그인하십시오", + "Your password will expire tomorrow." : "내 암호가 내일 만료됩니다.", + "Your password will expire today." : "내 암호가 오늘 만료됩니다.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["내 암호가 %n일 후 만료됩니다."], + "LDAP / AD integration" : "LDAP/AD 통합", "_%s group found_::_%s groups found_" : ["그룹 %s개 찾음"], "_%s user found_::_%s users found_" : ["사용자 %s명 찾음"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "사용자 표시 이름을 결정할 수 없습니다. 고급 LDAP 설정에서 직접 입력하십시오.", @@ -58,11 +73,13 @@ OC.L10N.register( "Search groups" : "그룹 검색", "Available groups" : "사용 가능한 그룹", "Selected groups" : "선택한 그룹", - "Edit LDAP Query" : "LDAP 쿼리 편집", + "Edit LDAP Query" : "LDAP 질의 편집", "LDAP Filter:" : "LDAP 필터:", "The filter specifies which LDAP groups shall have access to the %s instance." : "이 필터는 %s에 접근할 수 있는 LDAP 그룹을 설정합니다.", + "Verify settings and count the groups" : "설정을 확인하고 그룹 개수 세기", "When logging in, %s will find the user based on the following attributes:" : "로그인할 때 %s에서 다음 속성을 기반으로 사용자를 찾습니다:", "LDAP / AD Username:" : "LDAP/AD 사용자 이름:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "LDAP/AD 사용자 이름으로 로그인하는 것을 허용합니다. uid 및 sAMAccountName 중 하나이며 자동으로 감지합니다.", "LDAP / AD Email Address:" : "LDAP/AD 이메일 주소:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "이메일 속성으로 로그인을 허용합니다. Mail 및 mailPrimaryAddress를 허용합니다.", "Other Attributes:" : "기타 속성:", @@ -71,9 +88,11 @@ OC.L10N.register( "Verify settings" : "설정 검사", "1. Server" : "1. 서버", "%s. Server:" : "%s. 서버:", + "Add a new configuration" : "새 설정 추가", "Copy current configuration into new directory binding" : "현재 설정을 새 디렉터리 바인딩으로 복사", "Delete the current configuration" : "현재 설정 삭제", "Host" : "호스트", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "SSL이 필요한 경우가 아니라면 프로토콜을 입력하지 않아도 됩니다. SSL이 필요한 경우 ldaps:// 주소를 입력하십시오", "Port" : "포트", "Detect Port" : "포트 감지", "User DN" : "사용자 DN", @@ -86,12 +105,22 @@ 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 필터 입력(대형 사이트에 추천)", + "Listing and searching for users is constrained by these criteria:" : "다음 조건으로 사용자 조회 및 검색 제한:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "일반적인 객체 클래스는 organizationalPerson, person, user, inetOrgPerson입니다. 어떤 객체 클래스를 사용해야 할 지 모르겠으면 디렉터리 서비스 관리자에게 연락하십시오.", "The filter specifies which LDAP users shall have access to the %s instance." : "이 필터는 %s에 접근할 수 있는 LDAP 사용자를 설정합니다.", "Verify settings and count users" : "설정을 확인하고 사용자 수 계산", "Saving" : "저장 중", "Back" : "뒤로", "Continue" : "계속", + "Please renew your password." : "암호를 갱신하십시오.", + "An internal error occurred." : "내부 오류가 발생했습니다.", + "Please try again or contact your administrator." : "다시 시도하거나 관리자에게 연락하십시오.", + "Current password" : "현재 암호", + "New password" : "새 암호", + "Renew password" : "암호 갱신", + "Wrong password. Reset it?" : "암호가 잘못되었습니다. 초기화하시겠습니까?", + "Wrong password." : "암호가 잘못되었습니다.", + "Cancel" : "취소", "LDAP" : "LDAP", "Server" : "서버", "Users" : "사용자", @@ -134,13 +163,22 @@ OC.L10N.register( "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "이 설정을 사용하면 그룹 안의 그룹을 지원합니다.(그룹 구성원 속성이 DN을 포함하는 경우에만 사용 가능)", "Paging chunksize" : "페이지 청크 크기", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "사용자와 그룹 목록 가져오기와 같은 다량의 결과를 반환하는 페이지를 지정한 LDAP 검색에 사용할 청크 크기입니다.(0으로 설정하면 이러한 검색을 할 때 페이지를 사용하지 않습니다.)", + "Enable LDAP password changes per user" : "사용자별 LDAP 암호 변경 허용", + "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP 사용자가 암호를 변경하고 수퍼 관리자 및 그룹 관리자가 LDAP 사용자의 암호를 변경할 수 있도록 허용합니다. LDAP 서버의 접근 제어가 올바르게 설정되어 있어야 작동합니다. LDAP 서버에 평문으로 암호가 전송되기 때문에 전송 계층 암호화가 설정되어 있어야 하며 LDAP 서버에 암호 해시가 설정되어 있어야 합니다.", + "(New password is sent as plain text to LDAP)" : "(새 암호가 LDAP 서버에 평문으로 전송됨)", + "Default password policy DN" : "기본 암호 정책 DN", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "암호 만료 처리에 사용할 기본 암호 정책 DN입니다. 사용자별 LDAP 암호 변경이 활성화되어 있어야 하며 OpenLDAP에서만 동작합니다. 암호 만료 처리를 사용하지 않으려면 비워 두십시오.", "Special Attributes" : "특수 속성", "Quota Field" : "할당량 필드", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "사용자의 기본 할당량을 사용하려면 비워 두십시오. 할당량 설정이 필요하면 LDAP/AD 속성을 지정하십시오.", "Quota Default" : "기본 할당량", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "할당량 필드에 할당량이 설정되지 않은 LDAP 사용자를 위한 기본 할당량입니다.", "Email Field" : "이메일 필드", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "LDAP 속성에서 사용자의 이메일을 설정합니다. 기본 행동을 사용하려면 비워 두십시오.", "User Home Folder Naming Rule" : "사용자 홈 폴더 이름 규칙", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "사용자 이름을 사용하려면 비워 두십시오(기본값). 기타 경우 LDAP/AD 속성을 지정하십시오.", "Internal Username" : "내부 사용자 이름", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "기본적으로 내부 사용자 이름은 UUID 속성에서 생성됩니다. 이를 통해서 사용자 이름이 유일하며 문자를 변환할 필요가 없도록 합니다. 내부 사용자 이름에는 다음 글자만 사용할 수 있습니다: [a-zA-Z0-9_.@-] 다른 모든 글자는 ASCII에 해당하는 글자로 대체되거나 생략됩니다. 충돌이 발생할 경우 숫자가 추가로 붙거나 증가합니다. 내부 사용자 이름은 사용자를 내부에서 식별하는 데에도 사용되며, 사용자 홈 폴더의 기본 이름입니다. 모든 *DAV 서비스 등에 사용되는 URL의 일부이기도 합니다. 이 설정을 사용하면 기본 행동을 사용자 정의할 수 있으며, 비워 두면 기본값을 사용합니다. 변경 사항은 새로 매핑 및 추가된 LDAP 사용자에게만 적용됩니다.", "Internal Username Attribute:" : "내부 사용자 이름 속성:", "Override UUID detection" : "UUID 확인 재정의", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "기본적으로 UUID 속성은 자동적으로 감지됩니다. UUID 속성은 LDAP 사용자와 그룹을 정확히 식별하는 데 사용됩니다. 지정하지 않은 경우 내부 사용자 이름은 UUID를 기반으로 생성됩니다. 이 설정을 다시 정의하고 임의의 속성을 지정할 수 있습니다. 사용자와 그룹 모두에게 속성을 적용할 수 있고 중복된 값이 없는지 확인하십시오. 비워 두면 기본 설정을 사용합니다. 새로 추가되거나 매핑된 LDAP 사용자와 그룹에만 적용됩니다.", diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json index 370221ddcff..23dab6f2b93 100644 --- a/apps/user_ldap/l10n/ko.json +++ b/apps/user_ldap/l10n/ko.json @@ -10,8 +10,15 @@ "No data specified" : "데이터가 지정되지 않음", " Could not set configuration %s" : " 설정 %s을(를) 지정할 수 없음", "Action does not exist" : "동작이 존재하지 않음", + "LDAP user and group backend" : "LDAP 사용자 및 그룹 백엔드", + "Renewing …" : "갱신 중 …", + "Very weak password" : "매우 약한 암호", + "Weak password" : "약한 암호", + "So-so password" : "그저 그런 암호", + "Good password" : "좋은 암호", + "Strong password" : "매우 좋은 암호", "The Base DN appears to be wrong" : "기본 DN이 올바르지 않습니다", - "Testing configuration…" : "설정 시험 중...", + "Testing configuration…" : "설정 시험 중…", "Configuration incorrect" : "설정 올바르지 않음", "Configuration incomplete" : "설정 불완전함", "Configuration OK" : "설정 올바름", @@ -33,16 +40,24 @@ "Anonymous bind is not allowed. Please provide a User DN and Password." : "익명 연결은 허용되지 않습니다. 사용자 DN과 암호를 입력하십시오.", "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP 작업 오류입니다. 익명 연결이 비활성화 되었을 수 있습니다.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "저장할 수 없습니다. 데이터베이스 상태를 확인하십시오. 계속하기 전에 새로 고치십시오.", - "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "모드를 전환하면 자동 LDAP 쿼리를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?", + "Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?" : "모드를 전환하면 자동 LDAP 질의를 활성화합니다. LDAP 크기에 따라서 시간이 걸릴 수도 있습니다. 모드를 전환하시겠습니까?", "Mode switch" : "모드 전환", "Select attributes" : "속성 선택", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command line validation): <br/>" : "사용자를 찾을 수 없습니다. 로그인 속성과 사용자 이름을 확인하십시오. 적용되는 필터(명령행에 붙여넣어 검증 가능):<br/>", "User found and settings verified." : "사용자를 찾았고 설정을 확인했습니다.", + "Settings verified, but more than one user found. Only the first will be able to login. Consider a more narrow filter." : "설정을 확인했지만 사용자가 한 명 이상 있습니다. 첫 번째 사용자만 로그인할 수 있습니다. 더 구체적인 필터를 지정하십시오.", "An unspecified error occurred. Please check the settings and the log." : "알 수 없는 오류가 발생했습니다. 설정과 로그를 확인하십시오.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "검색 필터가 잘못되었습니다. 열고 닫는 괄호 쌍이 맞지 않을 수도 있습니다. 확인 후 수정하십시오.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP/AD 연결 오류가 발생했습니다. 호스트, 포트, 인증 정보를 확인하십시오.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "\"%uid\" 자리 비움자가 없습니다. LDAP/AD에 조회할 때 로그인 이름으로 대체됩니다.", "Please provide a login name to test against" : "테스트할 로그인 사용자 이름을 입력하십시오", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "LDAP/AD 서버에서 memberOf를 지원하지 않아서 그룹 상자를 비활성화합니다.", + "Password change rejected. Hint: " : "암호 변경이 거부되었습니다. 힌트:", + "Please login with the new password" : "새 암호로 로그인하십시오", + "Your password will expire tomorrow." : "내 암호가 내일 만료됩니다.", + "Your password will expire today." : "내 암호가 오늘 만료됩니다.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["내 암호가 %n일 후 만료됩니다."], + "LDAP / AD integration" : "LDAP/AD 통합", "_%s group found_::_%s groups found_" : ["그룹 %s개 찾음"], "_%s user found_::_%s users found_" : ["사용자 %s명 찾음"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "사용자 표시 이름을 결정할 수 없습니다. 고급 LDAP 설정에서 직접 입력하십시오.", @@ -56,11 +71,13 @@ "Search groups" : "그룹 검색", "Available groups" : "사용 가능한 그룹", "Selected groups" : "선택한 그룹", - "Edit LDAP Query" : "LDAP 쿼리 편집", + "Edit LDAP Query" : "LDAP 질의 편집", "LDAP Filter:" : "LDAP 필터:", "The filter specifies which LDAP groups shall have access to the %s instance." : "이 필터는 %s에 접근할 수 있는 LDAP 그룹을 설정합니다.", + "Verify settings and count the groups" : "설정을 확인하고 그룹 개수 세기", "When logging in, %s will find the user based on the following attributes:" : "로그인할 때 %s에서 다음 속성을 기반으로 사용자를 찾습니다:", "LDAP / AD Username:" : "LDAP/AD 사용자 이름:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "LDAP/AD 사용자 이름으로 로그인하는 것을 허용합니다. uid 및 sAMAccountName 중 하나이며 자동으로 감지합니다.", "LDAP / AD Email Address:" : "LDAP/AD 이메일 주소:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "이메일 속성으로 로그인을 허용합니다. Mail 및 mailPrimaryAddress를 허용합니다.", "Other Attributes:" : "기타 속성:", @@ -69,9 +86,11 @@ "Verify settings" : "설정 검사", "1. Server" : "1. 서버", "%s. Server:" : "%s. 서버:", + "Add a new configuration" : "새 설정 추가", "Copy current configuration into new directory binding" : "현재 설정을 새 디렉터리 바인딩으로 복사", "Delete the current configuration" : "현재 설정 삭제", "Host" : "호스트", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "SSL이 필요한 경우가 아니라면 프로토콜을 입력하지 않아도 됩니다. SSL이 필요한 경우 ldaps:// 주소를 입력하십시오", "Port" : "포트", "Detect Port" : "포트 감지", "User DN" : "사용자 DN", @@ -84,12 +103,22 @@ "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 필터 입력(대형 사이트에 추천)", + "Listing and searching for users is constrained by these criteria:" : "다음 조건으로 사용자 조회 및 검색 제한:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "일반적인 객체 클래스는 organizationalPerson, person, user, inetOrgPerson입니다. 어떤 객체 클래스를 사용해야 할 지 모르겠으면 디렉터리 서비스 관리자에게 연락하십시오.", "The filter specifies which LDAP users shall have access to the %s instance." : "이 필터는 %s에 접근할 수 있는 LDAP 사용자를 설정합니다.", "Verify settings and count users" : "설정을 확인하고 사용자 수 계산", "Saving" : "저장 중", "Back" : "뒤로", "Continue" : "계속", + "Please renew your password." : "암호를 갱신하십시오.", + "An internal error occurred." : "내부 오류가 발생했습니다.", + "Please try again or contact your administrator." : "다시 시도하거나 관리자에게 연락하십시오.", + "Current password" : "현재 암호", + "New password" : "새 암호", + "Renew password" : "암호 갱신", + "Wrong password. Reset it?" : "암호가 잘못되었습니다. 초기화하시겠습니까?", + "Wrong password." : "암호가 잘못되었습니다.", + "Cancel" : "취소", "LDAP" : "LDAP", "Server" : "서버", "Users" : "사용자", @@ -132,13 +161,22 @@ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "이 설정을 사용하면 그룹 안의 그룹을 지원합니다.(그룹 구성원 속성이 DN을 포함하는 경우에만 사용 가능)", "Paging chunksize" : "페이지 청크 크기", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "사용자와 그룹 목록 가져오기와 같은 다량의 결과를 반환하는 페이지를 지정한 LDAP 검색에 사용할 청크 크기입니다.(0으로 설정하면 이러한 검색을 할 때 페이지를 사용하지 않습니다.)", + "Enable LDAP password changes per user" : "사용자별 LDAP 암호 변경 허용", + "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "LDAP 사용자가 암호를 변경하고 수퍼 관리자 및 그룹 관리자가 LDAP 사용자의 암호를 변경할 수 있도록 허용합니다. LDAP 서버의 접근 제어가 올바르게 설정되어 있어야 작동합니다. LDAP 서버에 평문으로 암호가 전송되기 때문에 전송 계층 암호화가 설정되어 있어야 하며 LDAP 서버에 암호 해시가 설정되어 있어야 합니다.", + "(New password is sent as plain text to LDAP)" : "(새 암호가 LDAP 서버에 평문으로 전송됨)", + "Default password policy DN" : "기본 암호 정책 DN", + "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "암호 만료 처리에 사용할 기본 암호 정책 DN입니다. 사용자별 LDAP 암호 변경이 활성화되어 있어야 하며 OpenLDAP에서만 동작합니다. 암호 만료 처리를 사용하지 않으려면 비워 두십시오.", "Special Attributes" : "특수 속성", "Quota Field" : "할당량 필드", + "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "사용자의 기본 할당량을 사용하려면 비워 두십시오. 할당량 설정이 필요하면 LDAP/AD 속성을 지정하십시오.", "Quota Default" : "기본 할당량", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "할당량 필드에 할당량이 설정되지 않은 LDAP 사용자를 위한 기본 할당량입니다.", "Email Field" : "이메일 필드", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "LDAP 속성에서 사용자의 이메일을 설정합니다. 기본 행동을 사용하려면 비워 두십시오.", "User Home Folder Naming Rule" : "사용자 홈 폴더 이름 규칙", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "사용자 이름을 사용하려면 비워 두십시오(기본값). 기타 경우 LDAP/AD 속성을 지정하십시오.", "Internal Username" : "내부 사용자 이름", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." : "기본적으로 내부 사용자 이름은 UUID 속성에서 생성됩니다. 이를 통해서 사용자 이름이 유일하며 문자를 변환할 필요가 없도록 합니다. 내부 사용자 이름에는 다음 글자만 사용할 수 있습니다: [a-zA-Z0-9_.@-] 다른 모든 글자는 ASCII에 해당하는 글자로 대체되거나 생략됩니다. 충돌이 발생할 경우 숫자가 추가로 붙거나 증가합니다. 내부 사용자 이름은 사용자를 내부에서 식별하는 데에도 사용되며, 사용자 홈 폴더의 기본 이름입니다. 모든 *DAV 서비스 등에 사용되는 URL의 일부이기도 합니다. 이 설정을 사용하면 기본 행동을 사용자 정의할 수 있으며, 비워 두면 기본값을 사용합니다. 변경 사항은 새로 매핑 및 추가된 LDAP 사용자에게만 적용됩니다.", "Internal Username Attribute:" : "내부 사용자 이름 속성:", "Override UUID detection" : "UUID 확인 재정의", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "기본적으로 UUID 속성은 자동적으로 감지됩니다. UUID 속성은 LDAP 사용자와 그룹을 정확히 식별하는 데 사용됩니다. 지정하지 않은 경우 내부 사용자 이름은 UUID를 기반으로 생성됩니다. 이 설정을 다시 정의하고 임의의 속성을 지정할 수 있습니다. 사용자와 그룹 모두에게 속성을 적용할 수 있고 중복된 값이 없는지 확인하십시오. 비워 두면 기본 설정을 사용합니다. 새로 추가되거나 매핑된 LDAP 사용자와 그룹에만 적용됩니다.", diff --git a/apps/user_ldap/l10n/nb.js b/apps/user_ldap/l10n/nb.js index 06921ce04e0..30f67da3568 100644 --- a/apps/user_ldap/l10n/nb.js +++ b/apps/user_ldap/l10n/nb.js @@ -12,6 +12,7 @@ OC.L10N.register( "No data specified" : "Ingen data spesifisert", " Could not set configuration %s" : "Klarte ikke å utføre oppsett %s", "Action does not exist" : "Handlingen finnes ikke", + "LDAP user and group backend" : "LDAP bruker- og gruppe -bakende", "Renewing …" : "Fornyer…", "Very weak password" : "Veldig svakt passord", "Weak password" : "Svakt passord", @@ -29,7 +30,7 @@ OC.L10N.register( "Please specify the port, it could not be auto-detected." : "Spesifiser porten. Den kunne ikke påvises automatisk.", "Base DN could not be auto-detected, please revise credentials, host and port." : "Base-DN kunne ikke påvises automatisk. Se igjennom pålogginsdetaljer, vertsnavn og portnummer.", "Could not detect Base DN, please enter it manually." : "Klarte ikke å påvise base-DN. Det må skrives inn manuelt.", - "{nthServer}. Server" : "{nthServer}. tjener", + "{nthServer}. Server" : "{nthServer}. Tjener", "No object found in the given Base DN. Please revise." : "Intet objekt funnet i angitt base-DN. Revider oppsettet.", "More than 1,000 directory entries available." : "Mer enn 1.000 katalogoppføringer tilgjengelig.", " entries available within the provided Base DN" : "oppføringer tilgjengelig innenfor angitt base-DN", @@ -54,6 +55,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Gruppeboksen ble deaktivert fordi LDAP- / AD-tjeneren ikke støtter memberOf.", "Password change rejected. Hint: " : "Passordendring avslått. Hint:", "Please login with the new password" : "Logg inn med det nye passordet", + "Your password will expire tomorrow." : "Passordet ditt utløper i morgen.", + "Your password will expire today." : "Passordet ditt utløper i dag.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Passordet ditt utløper om %n dag.","Passordet ditt utløper om %n dager."], "LDAP / AD integration" : "LDAP / AD integrasjon", "_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"], "_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"], @@ -121,7 +125,7 @@ OC.L10N.register( "Expert" : "Ekspert", "Advanced" : "Avansert", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Advarsel:</b> Appene user_ldap og user_webdavauth er ikke kompatible med hverandre. Uventet oppførsel kan forekomme. Be systemadministratoren om å deaktivere en av dem.", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advarsel:</b> PHP LDAP-modulen er ikke installert og serveren vil ikke virke. Be systemadministratoren installere den.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advarsel:</b> PHP LDAP-modulen er ikke installert og tjeneren vil ikke virke. Be systemadministratoren installere den.", "Connection Settings" : "Innstillinger for tilkobling", "Configuration Active" : "Oppsett aktivt", "When unchecked, this configuration will be skipped." : "Overser oppsettet når ikke avhuket.", diff --git a/apps/user_ldap/l10n/nb.json b/apps/user_ldap/l10n/nb.json index 2520aa42bff..dccc6f3e8b0 100644 --- a/apps/user_ldap/l10n/nb.json +++ b/apps/user_ldap/l10n/nb.json @@ -10,6 +10,7 @@ "No data specified" : "Ingen data spesifisert", " Could not set configuration %s" : "Klarte ikke å utføre oppsett %s", "Action does not exist" : "Handlingen finnes ikke", + "LDAP user and group backend" : "LDAP bruker- og gruppe -bakende", "Renewing …" : "Fornyer…", "Very weak password" : "Veldig svakt passord", "Weak password" : "Svakt passord", @@ -27,7 +28,7 @@ "Please specify the port, it could not be auto-detected." : "Spesifiser porten. Den kunne ikke påvises automatisk.", "Base DN could not be auto-detected, please revise credentials, host and port." : "Base-DN kunne ikke påvises automatisk. Se igjennom pålogginsdetaljer, vertsnavn og portnummer.", "Could not detect Base DN, please enter it manually." : "Klarte ikke å påvise base-DN. Det må skrives inn manuelt.", - "{nthServer}. Server" : "{nthServer}. tjener", + "{nthServer}. Server" : "{nthServer}. Tjener", "No object found in the given Base DN. Please revise." : "Intet objekt funnet i angitt base-DN. Revider oppsettet.", "More than 1,000 directory entries available." : "Mer enn 1.000 katalogoppføringer tilgjengelig.", " entries available within the provided Base DN" : "oppføringer tilgjengelig innenfor angitt base-DN", @@ -52,6 +53,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Gruppeboksen ble deaktivert fordi LDAP- / AD-tjeneren ikke støtter memberOf.", "Password change rejected. Hint: " : "Passordendring avslått. Hint:", "Please login with the new password" : "Logg inn med det nye passordet", + "Your password will expire tomorrow." : "Passordet ditt utløper i morgen.", + "Your password will expire today." : "Passordet ditt utløper i dag.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Passordet ditt utløper om %n dag.","Passordet ditt utløper om %n dager."], "LDAP / AD integration" : "LDAP / AD integrasjon", "_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"], "_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"], @@ -119,7 +123,7 @@ "Expert" : "Ekspert", "Advanced" : "Avansert", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Advarsel:</b> Appene user_ldap og user_webdavauth er ikke kompatible med hverandre. Uventet oppførsel kan forekomme. Be systemadministratoren om å deaktivere en av dem.", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advarsel:</b> PHP LDAP-modulen er ikke installert og serveren vil ikke virke. Be systemadministratoren installere den.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Advarsel:</b> PHP LDAP-modulen er ikke installert og tjeneren vil ikke virke. Be systemadministratoren installere den.", "Connection Settings" : "Innstillinger for tilkobling", "Configuration Active" : "Oppsett aktivt", "When unchecked, this configuration will be skipped." : "Overser oppsettet når ikke avhuket.", diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js index 612067d9718..9b4cecadb8b 100644 --- a/apps/user_ldap/l10n/nl.js +++ b/apps/user_ldap/l10n/nl.js @@ -56,6 +56,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "De groepsbox was uitgeschakeld, omdat de LDAP / AD server het attribuut memberOf niet ondersteunt.", "Password change rejected. Hint: " : "Wachtwoordwijziging geweigerd. Hint:", "Please login with the new password" : "Login met je nieuwe wachtwoord", + "Your password will expire tomorrow." : "Je wachtwoord vervalt morgen.", + "Your password will expire today." : "Je wachtwoord vervalt vandaag.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Je wachtwoord verloopt binnen %n dag.","Je wachtwoord verloopt binnen %n dagen."], "LDAP / AD integration" : "LDAP / AD integratie", "_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"], "_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"], diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json index 0b69b45fabe..7e0ea433ca1 100644 --- a/apps/user_ldap/l10n/nl.json +++ b/apps/user_ldap/l10n/nl.json @@ -54,6 +54,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "De groepsbox was uitgeschakeld, omdat de LDAP / AD server het attribuut memberOf niet ondersteunt.", "Password change rejected. Hint: " : "Wachtwoordwijziging geweigerd. Hint:", "Please login with the new password" : "Login met je nieuwe wachtwoord", + "Your password will expire tomorrow." : "Je wachtwoord vervalt morgen.", + "Your password will expire today." : "Je wachtwoord vervalt vandaag.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Je wachtwoord verloopt binnen %n dag.","Je wachtwoord verloopt binnen %n dagen."], "LDAP / AD integration" : "LDAP / AD integratie", "_%s group found_::_%s groups found_" : ["%s groep gevonden","%s groepen gevonden"], "_%s user found_::_%s users found_" : ["%s gebruiker gevonden","%s gebruikers gevonden"], diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js index 4b4bc4a94bc..624216e5775 100644 --- a/apps/user_ldap/l10n/pl.js +++ b/apps/user_ldap/l10n/pl.js @@ -12,6 +12,12 @@ OC.L10N.register( "No data specified" : "Nie określono danych", " Could not set configuration %s" : "Nie można ustawić konfiguracji %s", "Action does not exist" : "Akcja nie istnieje", + "Renewing …" : "Odnawianie ...", + "Very weak password" : "Bardzo słabe hasło", + "Weak password" : "Słabe hasło", + "So-so password" : "Mało skomplikowane hasło", + "Good password" : "Dobre hasło", + "Strong password" : "Silne hasło", "The Base DN appears to be wrong" : "Base DN wygląda na błedne", "Testing configuration…" : "Testowanie konfiguracji...", "Configuration incorrect" : "Konfiguracja niepoprawna", @@ -47,6 +53,10 @@ OC.L10N.register( "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:", + "Please login with the new password" : "Proszę się zalogować z nowym hasłem", + "Your password will expire tomorrow." : "Twoje hasło wygasa jutro.", + "Your password will expire today." : "Twoje hasło wygasa dziś.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Twoje hasło wygaśnie w ciągu %n dnia.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni."], "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"], "_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników","%s znalezionych użytkowników"], @@ -74,9 +84,11 @@ OC.L10N.register( "Verify settings" : "Weryfikuj ustawienia", "1. Server" : "1. Serwer", "%s. Server:" : "%s. Serwer:", + "Add a new configuration" : "Dodaj nową konfigurację", "Copy current configuration into new directory binding" : "Kopiuje aktualną konfigurację do nowej lokalizacji", "Delete the current configuration" : "Usuwa aktualną konfigurację", "Host" : "Host", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Protokół może zostać pominięty chyba, że wymagany jest protokół SSL. Jeśli tak, zacznij od ldaps://", "Port" : "Port", "Detect Port" : "Wykryj port", "User DN" : "Użytkownik DN", @@ -96,6 +108,15 @@ OC.L10N.register( "Saving" : "Zapisuję", "Back" : "Wróć", "Continue" : "Kontynuuj ", + "Please renew your password." : "Proszę odnowić hasło", + "An internal error occurred." : "Wystąpił wewnętrzny błąd.", + "Please try again or contact your administrator." : "Spróbuj ponownie lub skontaktuj się z administratorem.", + "Current password" : "Bieżące hasło", + "New password" : "Nowe hasło", + "Renew password" : "Odnów hasło", + "Wrong password. Reset it?" : "Nieprawidłowe hasło. Czy chcesz je zresetować?", + "Wrong password." : "Nieprawidłowe hasło", + "Cancel" : "Anuluj", "LDAP" : "LDAP", "Server" : "Serwer", "Users" : "Użytkownicy", @@ -141,6 +162,7 @@ OC.L10N.register( "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)", + "Default password policy DN" : "Domyślna polityka haseł DN", "Special Attributes" : "Specjalne atrybuty", "Quota Field" : "Pole limitu przestrzeni", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Zostaw puste dla domyślnego limitu przestrzeni dla użytkowników lub określ atrybut LDAP/AD.", diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json index 159b1441666..05e542f4d71 100644 --- a/apps/user_ldap/l10n/pl.json +++ b/apps/user_ldap/l10n/pl.json @@ -10,6 +10,12 @@ "No data specified" : "Nie określono danych", " Could not set configuration %s" : "Nie można ustawić konfiguracji %s", "Action does not exist" : "Akcja nie istnieje", + "Renewing …" : "Odnawianie ...", + "Very weak password" : "Bardzo słabe hasło", + "Weak password" : "Słabe hasło", + "So-so password" : "Mało skomplikowane hasło", + "Good password" : "Dobre hasło", + "Strong password" : "Silne hasło", "The Base DN appears to be wrong" : "Base DN wygląda na błedne", "Testing configuration…" : "Testowanie konfiguracji...", "Configuration incorrect" : "Konfiguracja niepoprawna", @@ -45,6 +51,10 @@ "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:", + "Please login with the new password" : "Proszę się zalogować z nowym hasłem", + "Your password will expire tomorrow." : "Twoje hasło wygasa jutro.", + "Your password will expire today." : "Twoje hasło wygasa dziś.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Twoje hasło wygaśnie w ciągu %n dnia.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni.","Twoje hasło wygaśnie w ciągu %n dni."], "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"], "_%s user found_::_%s users found_" : ["%s znaleziony użytkownik","%s znalezionych użytkowników","%s znalezionych użytkowników","%s znalezionych użytkowników"], @@ -72,9 +82,11 @@ "Verify settings" : "Weryfikuj ustawienia", "1. Server" : "1. Serwer", "%s. Server:" : "%s. Serwer:", + "Add a new configuration" : "Dodaj nową konfigurację", "Copy current configuration into new directory binding" : "Kopiuje aktualną konfigurację do nowej lokalizacji", "Delete the current configuration" : "Usuwa aktualną konfigurację", "Host" : "Host", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Protokół może zostać pominięty chyba, że wymagany jest protokół SSL. Jeśli tak, zacznij od ldaps://", "Port" : "Port", "Detect Port" : "Wykryj port", "User DN" : "Użytkownik DN", @@ -94,6 +106,15 @@ "Saving" : "Zapisuję", "Back" : "Wróć", "Continue" : "Kontynuuj ", + "Please renew your password." : "Proszę odnowić hasło", + "An internal error occurred." : "Wystąpił wewnętrzny błąd.", + "Please try again or contact your administrator." : "Spróbuj ponownie lub skontaktuj się z administratorem.", + "Current password" : "Bieżące hasło", + "New password" : "Nowe hasło", + "Renew password" : "Odnów hasło", + "Wrong password. Reset it?" : "Nieprawidłowe hasło. Czy chcesz je zresetować?", + "Wrong password." : "Nieprawidłowe hasło", + "Cancel" : "Anuluj", "LDAP" : "LDAP", "Server" : "Serwer", "Users" : "Użytkownicy", @@ -139,6 +160,7 @@ "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)", + "Default password policy DN" : "Domyślna polityka haseł DN", "Special Attributes" : "Specjalne atrybuty", "Quota Field" : "Pole limitu przestrzeni", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Zostaw puste dla domyślnego limitu przestrzeni dla użytkowników lub określ atrybut LDAP/AD.", diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js index da601d77b39..a70709df9d1 100644 --- a/apps/user_ldap/l10n/pt_BR.js +++ b/apps/user_ldap/l10n/pt_BR.js @@ -12,7 +12,7 @@ OC.L10N.register( "No data specified" : "Nenhum dado especificado", " Could not set configuration %s" : "Não foi possível definir a configuração %s", "Action does not exist" : "A ação não existe", - "LDAP user and group backend" : "Backend LDAP de usuário e grupo", + "LDAP user and group backend" : "Plataforma de serviço LDAP de usuário e grupo", "Renewing …" : "Renovando...", "Very weak password" : "Senha muito fraca", "Weak password" : "Senha fraca", @@ -56,6 +56,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "A caixa do grupo foi desativada pois o servidor LDAP / AD não suporta memberOf.", "Password change rejected. Hint: " : "Troca de senha rejeitada. Dica:", "Please login with the new password" : "Logue-se com a nova senha", + "Your password will expire tomorrow." : "Sua senha vai expirar amanhã.", + "Your password will expire today." : "Sua senha vai expirar hoje.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Sua senha vai expirar dentro de%n dia.","Sua senha vai expirar dentro de%ndias."], "LDAP / AD integration" : "Integração LDAP / AD", "_%s group found_::_%s groups found_" : ["grupo% s encontrado","grupos% s encontrado"], "_%s user found_::_%s users found_" : ["usuário %s encontrado","%s usuários encontrados"], @@ -77,8 +80,8 @@ OC.L10N.register( "When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:", "LDAP / AD Username:" : "Nome do usuário LDAP / AD:", "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Permite login com nome de usuário LDAP / AD, o qual é ou uid ou sAMAccountName e será detectado.", - "LDAP / AD Email Address:" : "Endereço de email LDAP / AD:", - "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite o login com um atributo de email. Email e mailPrimaryAddress serão permitidos.", + "LDAP / AD Email Address:" : "Endereço de e-mail LDAP / AD:", + "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite o login com um atributo de e-mail. E-mail e mailPrimaryAddress serão permitidos.", "Other Attributes:" : "Outros Atributos:", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a ser aplicado, quando o login for feito. %% UID substitui o nome do usuário na ação de login. Exemplo: \"uid=%% UID\"", "Test Loginname" : "Testar Loginname", @@ -126,7 +129,7 @@ OC.L10N.register( "Expert" : "Especialista", "Advanced" : "Avançado", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Aviso:</b> Os aplicativos user_ldap e user_webdavauth são incompatíveis e pode haver um comportamento inesperado. Por favor, peça ao administrador do sistema para desabilitar um deles.", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Aviso:</b> O módulo PHP LDAP não está instalado e o backend não funcionará. Por favor, peça ao administrador do sistema para instalá-lo.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Aviso:</b> O módulo PHP LDAP não está instalado e a plataforma de serviço não funcionará. Por favor, peça ao administrador do sistema para instalá-lo.", "Connection Settings" : "Configurações de conexão", "Configuration Active" : "Configuração em uso", "When unchecked, this configuration will be skipped." : "Quando desmarcada, esta configuração será ignorada.", @@ -170,8 +173,8 @@ OC.L10N.register( "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para a cota padrão do usuário. Caso contrário, especifique um atributo LDAP/AD", "Quota Default" : "Cota Padrão", "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Substituir a cota padrão para usuários LDAP que não têm um conjunto de cotas no Campo Cota.", - "Email Field" : "Campo de email", - "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o email do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", + "Email Field" : "Campo de e-mail", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o e-mail do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", "User Home Folder Naming Rule" : "Regra de Nome da Pasta Pessoal do Usuário", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.", "Internal Username" : "Nome de usuário interno", diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json index f4026252ff7..0e523b59143 100644 --- a/apps/user_ldap/l10n/pt_BR.json +++ b/apps/user_ldap/l10n/pt_BR.json @@ -10,7 +10,7 @@ "No data specified" : "Nenhum dado especificado", " Could not set configuration %s" : "Não foi possível definir a configuração %s", "Action does not exist" : "A ação não existe", - "LDAP user and group backend" : "Backend LDAP de usuário e grupo", + "LDAP user and group backend" : "Plataforma de serviço LDAP de usuário e grupo", "Renewing …" : "Renovando...", "Very weak password" : "Senha muito fraca", "Weak password" : "Senha fraca", @@ -54,6 +54,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "A caixa do grupo foi desativada pois o servidor LDAP / AD não suporta memberOf.", "Password change rejected. Hint: " : "Troca de senha rejeitada. Dica:", "Please login with the new password" : "Logue-se com a nova senha", + "Your password will expire tomorrow." : "Sua senha vai expirar amanhã.", + "Your password will expire today." : "Sua senha vai expirar hoje.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Sua senha vai expirar dentro de%n dia.","Sua senha vai expirar dentro de%ndias."], "LDAP / AD integration" : "Integração LDAP / AD", "_%s group found_::_%s groups found_" : ["grupo% s encontrado","grupos% s encontrado"], "_%s user found_::_%s users found_" : ["usuário %s encontrado","%s usuários encontrados"], @@ -75,8 +78,8 @@ "When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:", "LDAP / AD Username:" : "Nome do usuário LDAP / AD:", "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Permite login com nome de usuário LDAP / AD, o qual é ou uid ou sAMAccountName e será detectado.", - "LDAP / AD Email Address:" : "Endereço de email LDAP / AD:", - "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite o login com um atributo de email. Email e mailPrimaryAddress serão permitidos.", + "LDAP / AD Email Address:" : "Endereço de e-mail LDAP / AD:", + "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite o login com um atributo de e-mail. E-mail e mailPrimaryAddress serão permitidos.", "Other Attributes:" : "Outros Atributos:", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a ser aplicado, quando o login for feito. %% UID substitui o nome do usuário na ação de login. Exemplo: \"uid=%% UID\"", "Test Loginname" : "Testar Loginname", @@ -124,7 +127,7 @@ "Expert" : "Especialista", "Advanced" : "Avançado", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>Aviso:</b> Os aplicativos user_ldap e user_webdavauth são incompatíveis e pode haver um comportamento inesperado. Por favor, peça ao administrador do sistema para desabilitar um deles.", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Aviso:</b> O módulo PHP LDAP não está instalado e o backend não funcionará. Por favor, peça ao administrador do sistema para instalá-lo.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Aviso:</b> O módulo PHP LDAP não está instalado e a plataforma de serviço não funcionará. Por favor, peça ao administrador do sistema para instalá-lo.", "Connection Settings" : "Configurações de conexão", "Configuration Active" : "Configuração em uso", "When unchecked, this configuration will be skipped." : "Quando desmarcada, esta configuração será ignorada.", @@ -168,8 +171,8 @@ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para a cota padrão do usuário. Caso contrário, especifique um atributo LDAP/AD", "Quota Default" : "Cota Padrão", "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Substituir a cota padrão para usuários LDAP que não têm um conjunto de cotas no Campo Cota.", - "Email Field" : "Campo de email", - "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o email do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", + "Email Field" : "Campo de e-mail", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o e-mail do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", "User Home Folder Naming Rule" : "Regra de Nome da Pasta Pessoal do Usuário", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.", "Internal Username" : "Nome de usuário interno", diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js index 036f78ea9b3..ff5702c3634 100644 --- a/apps/user_ldap/l10n/ru.js +++ b/apps/user_ldap/l10n/ru.js @@ -56,6 +56,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Настройка групп была отключена, так как сервер LDAP / AD не поддерживает memberOf.", "Password change rejected. Hint: " : "Смена пароля отклонена. Подсказка:", "Please login with the new password" : "Войдите в систему со своим новым паролем", + "Your password will expire tomorrow." : "Завтра истекает срок действия пароля.", + "Your password will expire today." : "Сегодня истекает срок действия пароля.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Срок действия пароля истекает через %n день.","Срок действия пароля истекает через %n дня.","Срок действия пароля истекает через %n дней.","Срок действия пароля истекает через %n день."], "LDAP / AD integration" : "Интеграция LDAP / AD", "_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"], "_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"], diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json index 0b61ca441cd..448a36cb396 100644 --- a/apps/user_ldap/l10n/ru.json +++ b/apps/user_ldap/l10n/ru.json @@ -54,6 +54,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Настройка групп была отключена, так как сервер LDAP / AD не поддерживает memberOf.", "Password change rejected. Hint: " : "Смена пароля отклонена. Подсказка:", "Please login with the new password" : "Войдите в систему со своим новым паролем", + "Your password will expire tomorrow." : "Завтра истекает срок действия пароля.", + "Your password will expire today." : "Сегодня истекает срок действия пароля.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Срок действия пароля истекает через %n день.","Срок действия пароля истекает через %n дня.","Срок действия пароля истекает через %n дней.","Срок действия пароля истекает через %n день."], "LDAP / AD integration" : "Интеграция LDAP / AD", "_%s group found_::_%s groups found_" : ["%s группа найдена","%s группы найдены","%s групп найдено","%s групп найдено"], "_%s user found_::_%s users found_" : ["%s пользователь найден","%s пользователя найдено","%s пользователей найдено","%s пользователей найдено"], diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js index dda76f5dd27..20f125f50cb 100644 --- a/apps/user_ldap/l10n/sq.js +++ b/apps/user_ldap/l10n/sq.js @@ -12,6 +12,7 @@ OC.L10N.register( "No data specified" : "S’u treguan të dhëna", " Could not set configuration %s" : "S’vuri dot në punë formësimin %s", "Action does not exist" : "Veprimi s’ekziston", + "Very weak password" : "Fjalëkalim shumë i dobët", "The Base DN appears to be wrong" : "DN-ja Bazë duket se është e gabuar", "Testing configuration…" : "Po provohet formësimi…", "Configuration incorrect" : "Formësim i pasaktë", diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json index 44c0fac0c9a..5f95db90f51 100644 --- a/apps/user_ldap/l10n/sq.json +++ b/apps/user_ldap/l10n/sq.json @@ -10,6 +10,7 @@ "No data specified" : "S’u treguan të dhëna", " Could not set configuration %s" : "S’vuri dot në punë formësimin %s", "Action does not exist" : "Veprimi s’ekziston", + "Very weak password" : "Fjalëkalim shumë i dobët", "The Base DN appears to be wrong" : "DN-ja Bazë duket se është e gabuar", "Testing configuration…" : "Po provohet formësimi…", "Configuration incorrect" : "Formësim i pasaktë", diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js index 6686bfd7f14..842500e18bd 100644 --- a/apps/user_ldap/l10n/tr.js +++ b/apps/user_ldap/l10n/tr.js @@ -56,6 +56,9 @@ OC.L10N.register( "The group box was disabled, because the LDAP / AD server does not support memberOf." : "LDAP / AD sunucusu memberOf parametresini desteklemediğinden grup kutusu devre dışı.", "Password change rejected. Hint: " : "Parola değişimi reddedildi. İpucu:", "Please login with the new password" : "Lütfen yeni parolanız ile oturum açın", + "Your password will expire tomorrow." : "Parolanızın süresi yarın dolacak.", + "Your password will expire today." : "Parolanızın süresi bugün dolacak.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Parolanızın süresi %n gün içinde dolacak.","Parolanızın süresi %n gün içinde dolacak."], "LDAP / AD integration" : "LDAP / AD bütünleştirmesi", "_%s group found_::_%s groups found_" : ["%s grup bulundu","%s grup bulundu"], "_%s user found_::_%s users found_" : ["%s kullanıcı bulundu","%s kullanıcı bulundu"], diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json index 691794be037..94bd9b6ccef 100644 --- a/apps/user_ldap/l10n/tr.json +++ b/apps/user_ldap/l10n/tr.json @@ -54,6 +54,9 @@ "The group box was disabled, because the LDAP / AD server does not support memberOf." : "LDAP / AD sunucusu memberOf parametresini desteklemediğinden grup kutusu devre dışı.", "Password change rejected. Hint: " : "Parola değişimi reddedildi. İpucu:", "Please login with the new password" : "Lütfen yeni parolanız ile oturum açın", + "Your password will expire tomorrow." : "Parolanızın süresi yarın dolacak.", + "Your password will expire today." : "Parolanızın süresi bugün dolacak.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Parolanızın süresi %n gün içinde dolacak.","Parolanızın süresi %n gün içinde dolacak."], "LDAP / AD integration" : "LDAP / AD bütünleştirmesi", "_%s group found_::_%s groups found_" : ["%s grup bulundu","%s grup bulundu"], "_%s user found_::_%s users found_" : ["%s kullanıcı bulundu","%s kullanıcı bulundu"], diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js index b45ac7a3662..70ace5ad71c 100644 --- a/apps/user_ldap/l10n/zh_CN.js +++ b/apps/user_ldap/l10n/zh_CN.js @@ -12,6 +12,10 @@ OC.L10N.register( "No data specified" : "未指定数据", " Could not set configuration %s" : " 无法设定配置文件 %s", "Action does not exist" : "操作不存在", + "Weak password" : "弱密码", + "So-so password" : "一般的密码", + "Good password" : "不错的密码", + "Strong password" : "很好的密码", "The Base DN appears to be wrong" : "Base DN似乎错了", "Testing configuration…" : "测试配置...", "Configuration incorrect" : "配置错误", @@ -47,6 +51,9 @@ OC.L10N.register( "Please provide a login name to test against" : "请提供登录名以测试", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。", "Password change rejected. Hint: " : "密码更改出错。提示:", + "Please login with the new password" : "请使用新密码登录", + "Your password will expire tomorrow." : "您的密码将在明天过期", + "Your password will expire today." : "您的明码将在今天过期", "LDAP / AD integration" : "LDAP / AD 整合", "_%s group found_::_%s groups found_" : ["发现 %s 个群组"], "_%s user found_::_%s users found_" : ["发现 %s 个用户"], @@ -74,6 +81,7 @@ OC.L10N.register( "Verify settings" : "验证设置", "1. Server" : "1.服务器", "%s. Server:" : "%s.服务器", + "Add a new configuration" : "增加一个新的配置", "Copy current configuration into new directory binding" : "当前配置复制到新目录", "Delete the current configuration" : "删除当前配置", "Host" : "主机", @@ -96,6 +104,14 @@ OC.L10N.register( "Saving" : "保存中", "Back" : "返回", "Continue" : "继续", + "An internal error occurred." : "发生了一个内部错误。", + "Please try again or contact your administrator." : "请重试,或联系您的管理员。", + "Current password" : "当前密码", + "New password" : "新密码", + "Renew password" : "更新密码", + "Wrong password. Reset it?" : "密码错误。是否重置?", + "Wrong password." : "密码错误。", + "Cancel" : "取消!", "LDAP" : "LDAP", "Server" : "服务器", "Users" : "用户", diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json index 1f78778fe8b..77dfd92f31a 100644 --- a/apps/user_ldap/l10n/zh_CN.json +++ b/apps/user_ldap/l10n/zh_CN.json @@ -10,6 +10,10 @@ "No data specified" : "未指定数据", " Could not set configuration %s" : " 无法设定配置文件 %s", "Action does not exist" : "操作不存在", + "Weak password" : "弱密码", + "So-so password" : "一般的密码", + "Good password" : "不错的密码", + "Strong password" : "很好的密码", "The Base DN appears to be wrong" : "Base DN似乎错了", "Testing configuration…" : "测试配置...", "Configuration incorrect" : "配置错误", @@ -45,6 +49,9 @@ "Please provide a login name to test against" : "请提供登录名以测试", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。", "Password change rejected. Hint: " : "密码更改出错。提示:", + "Please login with the new password" : "请使用新密码登录", + "Your password will expire tomorrow." : "您的密码将在明天过期", + "Your password will expire today." : "您的明码将在今天过期", "LDAP / AD integration" : "LDAP / AD 整合", "_%s group found_::_%s groups found_" : ["发现 %s 个群组"], "_%s user found_::_%s users found_" : ["发现 %s 个用户"], @@ -72,6 +79,7 @@ "Verify settings" : "验证设置", "1. Server" : "1.服务器", "%s. Server:" : "%s.服务器", + "Add a new configuration" : "增加一个新的配置", "Copy current configuration into new directory binding" : "当前配置复制到新目录", "Delete the current configuration" : "删除当前配置", "Host" : "主机", @@ -94,6 +102,14 @@ "Saving" : "保存中", "Back" : "返回", "Continue" : "继续", + "An internal error occurred." : "发生了一个内部错误。", + "Please try again or contact your administrator." : "请重试,或联系您的管理员。", + "Current password" : "当前密码", + "New password" : "新密码", + "Renew password" : "更新密码", + "Wrong password. Reset it?" : "密码错误。是否重置?", + "Wrong password." : "密码错误。", + "Cancel" : "取消!", "LDAP" : "LDAP", "Server" : "服务器", "Users" : "用户", diff --git a/apps/workflowengine/l10n/ca.js b/apps/workflowengine/l10n/ca.js new file mode 100644 index 00000000000..c8de2819b34 --- /dev/null +++ b/apps/workflowengine/l10n/ca.js @@ -0,0 +1,73 @@ +OC.L10N.register( + "workflowengine", + { + "Saved" : "Desat", + "Saving failed:" : "Error al desar", + "File MIME type" : "Tipus MIME d\\'arxiu", + "is" : "és", + "is not" : "no és", + "matches" : "coincidències", + "does not match" : "No hi ha coincidències", + "Example: {placeholder}" : "Exemple: {placeholder}", + "File size (upload)" : "Mida d\\'arxiu (pujar)", + "less" : "menys", + "less or equals" : "menor o igual", + "greater or equals" : "major o igual", + "greater" : "superior", + "File system tag" : "Etiqueta del sistema de fitxers", + "is tagged with" : "està estiquetat amb", + "is not tagged with" : "no està etiquetat amb", + "Select tag…" : "Selecciona etiqueta...", + "Request remote address" : "Demanar adreça remota", + "matches IPv4" : "coincidències IPv4", + "does not match IPv4" : "No hi ha coincidencies IPv4", + "matches IPv6" : "Coincidències IPv6", + "does not match IPv6" : "No hi ha coincidències IPv6", + "Request time" : "Temps d'espera", + "between" : "entre", + "not between" : "no entre", + "Start" : "Comença", + "End" : "Finalitza", + "Select timezone…" : "Selecciona zona horaria", + "Request URL" : "URL de la petició", + "Predefined URLs" : "URLs predefinits", + "Files WebDAV" : "Arxius WebDAV", + "Request user agent" : "Agent d\\'usuari de la petició", + "Sync clients" : "Sincronitzar clients", + "Android client" : "Client android", + "iOS client" : "Client iOS", + "Desktop client" : "Client d'escriptori", + "User group membership" : "Pertinença a grup d'usuaris", + "is member of" : "és membre de", + "is not member of" : "no és membre de", + "The given operator is invalid" : "L\\'operador donat no és vàlid", + "The given regular expression is invalid" : "L\\'expresió regular donada no és vàlida", + "The given file size is invalid" : "El tamany de fitxer donat no és vàlid", + "The given tag id is invalid" : "L\\'Id d'etiqueta donat no és vàlid", + "The given IP range is invalid" : "El rang d\\'IPs donat no és vàlid", + "The given IP range is not valid for IPv4" : "El rang d\\'IP donat no és vàlid per IPv4", + "The given IP range is not valid for IPv6" : "El rang d\\'IP donat no és vàlid per IPv6", + "The given time span is invalid" : "El rang de temps donat no és vàlid", + "The given start time is invalid" : "El temps d\\'inici donat no és vàlid", + "The given end time is invalid" : "El temps de finalització donat no és vàlid", + "The given group does not exist" : "El grup donat no existeix", + "Check %s is invalid or does not exist" : "Comprovació %s no és vàlida o no existeix", + "Operation #%s does not exist" : "L\\'operació #%s no existeix", + "Operation %s does not exist" : "L\\'operació %s no existeix", + "Operation %s is invalid" : "L\\'operació %s no és vàlida", + "Check %s does not exist" : "Comprovació %s no existeix", + "Check %s is invalid" : "Comprovació %s no és vàlid", + "Check #%s does not exist" : "Comprovació #%s no existeix", + "Workflow" : "Flux de treball", + "Open documentation" : "Obrir documentació", + "Add rule group" : "Afegeix una regla de grup", + "Short rule description" : "Descripció breu de regla", + "Add rule" : "Afegir regla", + "Reset" : "Resetejar", + "Save" : "Desa", + "Saving…" : "Desant...", + "Loading…" : "Carregant...", + "Successfully saved" : "S\\'ha desat correctament", + "File mime type" : "Tipus mime de l\\'arxiu" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/workflowengine/l10n/ca.json b/apps/workflowengine/l10n/ca.json new file mode 100644 index 00000000000..d142823c0bb --- /dev/null +++ b/apps/workflowengine/l10n/ca.json @@ -0,0 +1,71 @@ +{ "translations": { + "Saved" : "Desat", + "Saving failed:" : "Error al desar", + "File MIME type" : "Tipus MIME d\\'arxiu", + "is" : "és", + "is not" : "no és", + "matches" : "coincidències", + "does not match" : "No hi ha coincidències", + "Example: {placeholder}" : "Exemple: {placeholder}", + "File size (upload)" : "Mida d\\'arxiu (pujar)", + "less" : "menys", + "less or equals" : "menor o igual", + "greater or equals" : "major o igual", + "greater" : "superior", + "File system tag" : "Etiqueta del sistema de fitxers", + "is tagged with" : "està estiquetat amb", + "is not tagged with" : "no està etiquetat amb", + "Select tag…" : "Selecciona etiqueta...", + "Request remote address" : "Demanar adreça remota", + "matches IPv4" : "coincidències IPv4", + "does not match IPv4" : "No hi ha coincidencies IPv4", + "matches IPv6" : "Coincidències IPv6", + "does not match IPv6" : "No hi ha coincidències IPv6", + "Request time" : "Temps d'espera", + "between" : "entre", + "not between" : "no entre", + "Start" : "Comença", + "End" : "Finalitza", + "Select timezone…" : "Selecciona zona horaria", + "Request URL" : "URL de la petició", + "Predefined URLs" : "URLs predefinits", + "Files WebDAV" : "Arxius WebDAV", + "Request user agent" : "Agent d\\'usuari de la petició", + "Sync clients" : "Sincronitzar clients", + "Android client" : "Client android", + "iOS client" : "Client iOS", + "Desktop client" : "Client d'escriptori", + "User group membership" : "Pertinença a grup d'usuaris", + "is member of" : "és membre de", + "is not member of" : "no és membre de", + "The given operator is invalid" : "L\\'operador donat no és vàlid", + "The given regular expression is invalid" : "L\\'expresió regular donada no és vàlida", + "The given file size is invalid" : "El tamany de fitxer donat no és vàlid", + "The given tag id is invalid" : "L\\'Id d'etiqueta donat no és vàlid", + "The given IP range is invalid" : "El rang d\\'IPs donat no és vàlid", + "The given IP range is not valid for IPv4" : "El rang d\\'IP donat no és vàlid per IPv4", + "The given IP range is not valid for IPv6" : "El rang d\\'IP donat no és vàlid per IPv6", + "The given time span is invalid" : "El rang de temps donat no és vàlid", + "The given start time is invalid" : "El temps d\\'inici donat no és vàlid", + "The given end time is invalid" : "El temps de finalització donat no és vàlid", + "The given group does not exist" : "El grup donat no existeix", + "Check %s is invalid or does not exist" : "Comprovació %s no és vàlida o no existeix", + "Operation #%s does not exist" : "L\\'operació #%s no existeix", + "Operation %s does not exist" : "L\\'operació %s no existeix", + "Operation %s is invalid" : "L\\'operació %s no és vàlida", + "Check %s does not exist" : "Comprovació %s no existeix", + "Check %s is invalid" : "Comprovació %s no és vàlid", + "Check #%s does not exist" : "Comprovació #%s no existeix", + "Workflow" : "Flux de treball", + "Open documentation" : "Obrir documentació", + "Add rule group" : "Afegeix una regla de grup", + "Short rule description" : "Descripció breu de regla", + "Add rule" : "Afegir regla", + "Reset" : "Resetejar", + "Save" : "Desa", + "Saving…" : "Desant...", + "Loading…" : "Carregant...", + "Successfully saved" : "S\\'ha desat correctament", + "File mime type" : "Tipus mime de l\\'arxiu" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/workflowengine/l10n/cs.js b/apps/workflowengine/l10n/cs.js index feb91f37cbc..50cf2affb0b 100644 --- a/apps/workflowengine/l10n/cs.js +++ b/apps/workflowengine/l10n/cs.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Uloženo", "Saving failed:" : "Ukládání selhalo:", + "File MIME type" : "MIME typ souboru", "is" : "je", "is not" : "není", "matches" : "odpovídá", diff --git a/apps/workflowengine/l10n/cs.json b/apps/workflowengine/l10n/cs.json index 4715e0ebdbb..82ba8a80639 100644 --- a/apps/workflowengine/l10n/cs.json +++ b/apps/workflowengine/l10n/cs.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Uloženo", "Saving failed:" : "Ukládání selhalo:", + "File MIME type" : "MIME typ souboru", "is" : "je", "is not" : "není", "matches" : "odpovídá", diff --git a/apps/workflowengine/l10n/de.js b/apps/workflowengine/l10n/de.js index bd0c130b3d6..4b10c1be220 100644 --- a/apps/workflowengine/l10n/de.js +++ b/apps/workflowengine/l10n/de.js @@ -59,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Check %s ist ungültig", "Check #%s does not exist" : "Check #%s existiert nicht", "Workflow" : "Workflow", + "Files workflow engine" : "Datei-Workflow-Engine", "Open documentation" : "Dokumentation öffnen", "Add rule group" : "Regelgruppe hinzufügen", "Short rule description" : "Kurze Regelbeschreibung", diff --git a/apps/workflowengine/l10n/de.json b/apps/workflowengine/l10n/de.json index c3bc4f34adc..7d02bcadf2f 100644 --- a/apps/workflowengine/l10n/de.json +++ b/apps/workflowengine/l10n/de.json @@ -57,6 +57,7 @@ "Check %s is invalid" : "Check %s ist ungültig", "Check #%s does not exist" : "Check #%s existiert nicht", "Workflow" : "Workflow", + "Files workflow engine" : "Datei-Workflow-Engine", "Open documentation" : "Dokumentation öffnen", "Add rule group" : "Regelgruppe hinzufügen", "Short rule description" : "Kurze Regelbeschreibung", diff --git a/apps/workflowengine/l10n/de_DE.js b/apps/workflowengine/l10n/de_DE.js index d7e748859c7..d1efcd1d099 100644 --- a/apps/workflowengine/l10n/de_DE.js +++ b/apps/workflowengine/l10n/de_DE.js @@ -59,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Prüfe ob %s ungültig ist", "Check #%s does not exist" : "Prüfe ob #%s nicht existiert", "Workflow" : "Workflow", + "Files workflow engine" : "Datei-Workflow-Engine", "Open documentation" : "Dokumentation öffnen", "Add rule group" : "Regelgruppe hinzufügen", "Short rule description" : "Kurze Regelbeschreibung", diff --git a/apps/workflowengine/l10n/de_DE.json b/apps/workflowengine/l10n/de_DE.json index 7e2dc7a28a7..578f07dd23d 100644 --- a/apps/workflowengine/l10n/de_DE.json +++ b/apps/workflowengine/l10n/de_DE.json @@ -57,6 +57,7 @@ "Check %s is invalid" : "Prüfe ob %s ungültig ist", "Check #%s does not exist" : "Prüfe ob #%s nicht existiert", "Workflow" : "Workflow", + "Files workflow engine" : "Datei-Workflow-Engine", "Open documentation" : "Dokumentation öffnen", "Add rule group" : "Regelgruppe hinzufügen", "Short rule description" : "Kurze Regelbeschreibung", diff --git a/apps/workflowengine/l10n/es_MX.js b/apps/workflowengine/l10n/es_MX.js index 373275c6b7c..9f4a1d0aca4 100644 --- a/apps/workflowengine/l10n/es_MX.js +++ b/apps/workflowengine/l10n/es_MX.js @@ -59,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "La validación %s no es inválida", "Check #%s does not exist" : "La validación #%s no existe", "Workflow" : "Flujo de trabajo", + "Files workflow engine" : "Motor de flujo de trabajo de archivos", "Open documentation" : "Abrir documentación", "Add rule group" : "Agregar regla de grupo", "Short rule description" : "Descripción corta de regla", diff --git a/apps/workflowengine/l10n/es_MX.json b/apps/workflowengine/l10n/es_MX.json index b18acc97396..31457dc754c 100644 --- a/apps/workflowengine/l10n/es_MX.json +++ b/apps/workflowengine/l10n/es_MX.json @@ -57,6 +57,7 @@ "Check %s is invalid" : "La validación %s no es inválida", "Check #%s does not exist" : "La validación #%s no existe", "Workflow" : "Flujo de trabajo", + "Files workflow engine" : "Motor de flujo de trabajo de archivos", "Open documentation" : "Abrir documentación", "Add rule group" : "Agregar regla de grupo", "Short rule description" : "Descripción corta de regla", diff --git a/apps/workflowengine/l10n/fa.js b/apps/workflowengine/l10n/fa.js new file mode 100644 index 00000000000..7ffe079982e --- /dev/null +++ b/apps/workflowengine/l10n/fa.js @@ -0,0 +1,73 @@ +OC.L10N.register( + "workflowengine", + { + "Saved" : "ذخیره شده ", + "Saving failed:" : "ذخیره فایل با خطا مواجه شد.", + "File MIME type" : "فایل از نوع MIME", + "is" : "هست ", + "is not" : "نیست", + "matches" : "مطابق است", + "does not match" : "مطابق نیست", + "Example: {placeholder}" : "برای مثال {جای قرار دادن }", + "File size (upload)" : "حجم فایل (بارگزاری شده )", + "less" : "کمتر", + "less or equals" : "کمتر یا مساوی ", + "greater or equals" : "بزرگتر یا مساوی", + "greater" : "بزرگتر", + "File system tag" : "برچسب فایل های سیستمی ", + "is tagged with" : "برچسب خورده با ", + "is not tagged with" : "برچسب نخورده با ", + "Select tag…" : "انتخاب برچسب", + "Request remote address" : "درخواست آدرس ریموت", + "matches IPv4" : "مطابق با آی پی ورژن 4", + "does not match IPv4" : "مطابق نیست با آی پی ورژن 4", + "matches IPv6" : "مطابق با آی پی ورژن 6 ", + "does not match IPv6" : "مطابق نیست با آی پی ورژن 6 ", + "Request time" : "زمان درخواست ", + "between" : "بین ", + "not between" : "نیست بین", + "Start" : "شروع", + "End" : "پایان ", + "Select timezone…" : "انتخاب منطقه زمانی ", + "Request URL" : "درخواست URL", + "Predefined URLs" : "URL از پیش تعریف شده ", + "Files WebDAV" : "فایل های WebDAV", + "Request user agent" : "درخواست سفیر کاربر", + "Sync clients" : "دستگاه های همگام ", + "Android client" : "دستگاه های اندروید ", + "iOS client" : "دستگاه های IOS", + "Desktop client" : "دستگاه دسکتاپ", + "User group membership" : "عضویت کاربر در گروه", + "is member of" : "عضو است در ", + "is not member of" : "عضو نیست در ", + "The given operator is invalid" : "اپراتور گرفته شده بی اعتبار است ", + "The given regular expression is invalid" : "عبارت منظم گرفته شده معتبر نیست ", + "The given file size is invalid" : "حجم فایل معتبر نیست", + "The given tag id is invalid" : "آی دی برچسب معتبر نیست ", + "The given IP range is invalid" : "رنج آی پی گرفته شده معتبر نیست", + "The given IP range is not valid for IPv4" : "رنج آی پی گرفته شده برای آی پی ورژن 4 معتبر نیست", + "The given IP range is not valid for IPv6" : "رنج آی پی گرفته شده برای آی پی ورژن 6 معتبر نیست", + "The given time span is invalid" : "طول تاریخ گرفته شده معتبر نیست ", + "The given start time is invalid" : "تاریخ شروع معتبر نیست", + "The given end time is invalid" : "تاریخ پایان معتبر نیست ", + "The given group does not exist" : "گروه گرفته شده معتبر نیست", + "Check %s is invalid or does not exist" : "%s یا وجود ندارد یا معتبر نیست", + "Operation #%s does not exist" : "عمل %s وجود ندارد", + "Operation %s does not exist" : "عمل %s وجود ندارد ", + "Operation %s is invalid" : "عمل %s معتبر نیست", + "Check %s does not exist" : "%s را چک کنید وجود ندارد", + "Check %s is invalid" : "%s را چک کنید معتبر نیست", + "Check #%s does not exist" : "%s را چک کنید وجود ندارد ", + "Workflow" : "جریان کاری", + "Open documentation" : "مستندات باز", + "Add rule group" : "اضافه کردن قوانین گروه", + "Short rule description" : "توضیحات مختصر درباره قوانین ", + "Add rule" : "اضافه کردن قوانین ", + "Reset" : "ریست", + "Save" : "ذخیره", + "Saving…" : "در حال ذخیره", + "Loading…" : "در حال بار گزاری", + "Successfully saved" : "با موفقیت ذخیره شد ", + "File mime type" : "نوع فایل " +}, +"nplurals=1; plural=0;"); diff --git a/apps/workflowengine/l10n/fa.json b/apps/workflowengine/l10n/fa.json new file mode 100644 index 00000000000..4d5a50082ad --- /dev/null +++ b/apps/workflowengine/l10n/fa.json @@ -0,0 +1,71 @@ +{ "translations": { + "Saved" : "ذخیره شده ", + "Saving failed:" : "ذخیره فایل با خطا مواجه شد.", + "File MIME type" : "فایل از نوع MIME", + "is" : "هست ", + "is not" : "نیست", + "matches" : "مطابق است", + "does not match" : "مطابق نیست", + "Example: {placeholder}" : "برای مثال {جای قرار دادن }", + "File size (upload)" : "حجم فایل (بارگزاری شده )", + "less" : "کمتر", + "less or equals" : "کمتر یا مساوی ", + "greater or equals" : "بزرگتر یا مساوی", + "greater" : "بزرگتر", + "File system tag" : "برچسب فایل های سیستمی ", + "is tagged with" : "برچسب خورده با ", + "is not tagged with" : "برچسب نخورده با ", + "Select tag…" : "انتخاب برچسب", + "Request remote address" : "درخواست آدرس ریموت", + "matches IPv4" : "مطابق با آی پی ورژن 4", + "does not match IPv4" : "مطابق نیست با آی پی ورژن 4", + "matches IPv6" : "مطابق با آی پی ورژن 6 ", + "does not match IPv6" : "مطابق نیست با آی پی ورژن 6 ", + "Request time" : "زمان درخواست ", + "between" : "بین ", + "not between" : "نیست بین", + "Start" : "شروع", + "End" : "پایان ", + "Select timezone…" : "انتخاب منطقه زمانی ", + "Request URL" : "درخواست URL", + "Predefined URLs" : "URL از پیش تعریف شده ", + "Files WebDAV" : "فایل های WebDAV", + "Request user agent" : "درخواست سفیر کاربر", + "Sync clients" : "دستگاه های همگام ", + "Android client" : "دستگاه های اندروید ", + "iOS client" : "دستگاه های IOS", + "Desktop client" : "دستگاه دسکتاپ", + "User group membership" : "عضویت کاربر در گروه", + "is member of" : "عضو است در ", + "is not member of" : "عضو نیست در ", + "The given operator is invalid" : "اپراتور گرفته شده بی اعتبار است ", + "The given regular expression is invalid" : "عبارت منظم گرفته شده معتبر نیست ", + "The given file size is invalid" : "حجم فایل معتبر نیست", + "The given tag id is invalid" : "آی دی برچسب معتبر نیست ", + "The given IP range is invalid" : "رنج آی پی گرفته شده معتبر نیست", + "The given IP range is not valid for IPv4" : "رنج آی پی گرفته شده برای آی پی ورژن 4 معتبر نیست", + "The given IP range is not valid for IPv6" : "رنج آی پی گرفته شده برای آی پی ورژن 6 معتبر نیست", + "The given time span is invalid" : "طول تاریخ گرفته شده معتبر نیست ", + "The given start time is invalid" : "تاریخ شروع معتبر نیست", + "The given end time is invalid" : "تاریخ پایان معتبر نیست ", + "The given group does not exist" : "گروه گرفته شده معتبر نیست", + "Check %s is invalid or does not exist" : "%s یا وجود ندارد یا معتبر نیست", + "Operation #%s does not exist" : "عمل %s وجود ندارد", + "Operation %s does not exist" : "عمل %s وجود ندارد ", + "Operation %s is invalid" : "عمل %s معتبر نیست", + "Check %s does not exist" : "%s را چک کنید وجود ندارد", + "Check %s is invalid" : "%s را چک کنید معتبر نیست", + "Check #%s does not exist" : "%s را چک کنید وجود ندارد ", + "Workflow" : "جریان کاری", + "Open documentation" : "مستندات باز", + "Add rule group" : "اضافه کردن قوانین گروه", + "Short rule description" : "توضیحات مختصر درباره قوانین ", + "Add rule" : "اضافه کردن قوانین ", + "Reset" : "ریست", + "Save" : "ذخیره", + "Saving…" : "در حال ذخیره", + "Loading…" : "در حال بار گزاری", + "Successfully saved" : "با موفقیت ذخیره شد ", + "File mime type" : "نوع فایل " +},"pluralForm" :"nplurals=1; plural=0;" +}
\ No newline at end of file diff --git a/apps/workflowengine/l10n/fi.js b/apps/workflowengine/l10n/fi.js new file mode 100644 index 00000000000..9514aef4e9b --- /dev/null +++ b/apps/workflowengine/l10n/fi.js @@ -0,0 +1,66 @@ +OC.L10N.register( + "workflowengine", + { + "Saved" : "Tallennettu", + "Saving failed:" : "Tallennus epäonnistui:", + "File MIME type" : "Tiedosto MIME tyyppi", + "is" : "on", + "is not" : "ei ole", + "matches" : "täsmää", + "does not match" : "ei täsmää", + "Example: {placeholder}" : "Esimerkki: {placeholder}", + "File size (upload)" : "Tiedostokoko (lähetys)", + "less" : "pienempi", + "less or equals" : "pienempi tai yhtä suuri kuin", + "greater or equals" : "suurempi tai yhtä suuri kuin", + "greater" : "suurempi", + "File system tag" : "Järjestelmätunniste", + "is tagged with" : "on merkitty tunnisteella", + "is not tagged with" : "ei ole merkitty tunnisteella", + "Select tag…" : "Valitse tunniste…", + "Request remote address" : "Pyynnön etäosoite", + "matches IPv4" : "täsmää IPv4-osoitteeseen", + "does not match IPv4" : "ei täsmää IPv4-osoitteeseen", + "matches IPv6" : "täsmää IPv6-osoitteeseen", + "does not match IPv6" : "ei täsmää IPv6-osoitteeseen", + "Request time" : "Pyynnön aika", + "between" : "välillä", + "not between" : "ei välillä", + "Start" : "Alku", + "End" : "Loppu", + "Select timezone…" : "Valitse aikavyöhyke...", + "Request URL" : "Pyynnön URL-osoite", + "Predefined URLs" : "Ennalta määritellyt URL osoitteet", + "Files WebDAV" : "Tiedostot WebDAV", + "Request user agent" : "Pyyntö user agent", + "Sync clients" : "Synkronointisovellukset", + "Android client" : "Android-sovellus", + "iOS client" : "iOS-sovellus", + "Desktop client" : "Työpöytäsovellus", + "User group membership" : "Käyttäjäryhmä jäsenyys", + "is member of" : "on jäsen", + "is not member of" : "ei ole jäsen", + "The given operator is invalid" : "Annettu operaattori on virheellinen", + "The given file size is invalid" : "Annettu tiedoston koko on virheellinen", + "The given tag id is invalid" : "Annettu tag id on virheellinen", + "The given IP range is invalid" : "Annetut IP arvot ovat virheelliset", + "The given IP range is not valid for IPv4" : "Annetut IP arvot eivät käy IPv4 osoitteisiin", + "The given IP range is not valid for IPv6" : "Annetut IP arvot eivät käy IPv6 osoitteisiin", + "The given time span is invalid" : "Annettu aikaväli on virheellinen", + "The given start time is invalid" : "Annettu aloitusaika on virheellinen", + "The given end time is invalid" : "Annettu päättymisaika on virheellinen", + "The given group does not exist" : "Annettua ryhmää ei ole", + "Workflow" : "Työnkulku", + "Files workflow engine" : "Tiedostojen hallintatyökalu", + "Open documentation" : "Avaa dokumentaatio", + "Add rule group" : "Lisää sääntöryhmä", + "Short rule description" : "Lyhyt sääntökuvaus", + "Add rule" : "Lisää sääntö", + "Reset" : "Palauta", + "Save" : "Tallenna", + "Saving…" : "Tallennetaan...", + "Loading…" : "Ladataan…", + "Successfully saved" : "Tallennettu onnistuneesti", + "File mime type" : "Tiedoston mediatyyppi" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/workflowengine/l10n/fi.json b/apps/workflowengine/l10n/fi.json new file mode 100644 index 00000000000..21f090a9bb1 --- /dev/null +++ b/apps/workflowengine/l10n/fi.json @@ -0,0 +1,64 @@ +{ "translations": { + "Saved" : "Tallennettu", + "Saving failed:" : "Tallennus epäonnistui:", + "File MIME type" : "Tiedosto MIME tyyppi", + "is" : "on", + "is not" : "ei ole", + "matches" : "täsmää", + "does not match" : "ei täsmää", + "Example: {placeholder}" : "Esimerkki: {placeholder}", + "File size (upload)" : "Tiedostokoko (lähetys)", + "less" : "pienempi", + "less or equals" : "pienempi tai yhtä suuri kuin", + "greater or equals" : "suurempi tai yhtä suuri kuin", + "greater" : "suurempi", + "File system tag" : "Järjestelmätunniste", + "is tagged with" : "on merkitty tunnisteella", + "is not tagged with" : "ei ole merkitty tunnisteella", + "Select tag…" : "Valitse tunniste…", + "Request remote address" : "Pyynnön etäosoite", + "matches IPv4" : "täsmää IPv4-osoitteeseen", + "does not match IPv4" : "ei täsmää IPv4-osoitteeseen", + "matches IPv6" : "täsmää IPv6-osoitteeseen", + "does not match IPv6" : "ei täsmää IPv6-osoitteeseen", + "Request time" : "Pyynnön aika", + "between" : "välillä", + "not between" : "ei välillä", + "Start" : "Alku", + "End" : "Loppu", + "Select timezone…" : "Valitse aikavyöhyke...", + "Request URL" : "Pyynnön URL-osoite", + "Predefined URLs" : "Ennalta määritellyt URL osoitteet", + "Files WebDAV" : "Tiedostot WebDAV", + "Request user agent" : "Pyyntö user agent", + "Sync clients" : "Synkronointisovellukset", + "Android client" : "Android-sovellus", + "iOS client" : "iOS-sovellus", + "Desktop client" : "Työpöytäsovellus", + "User group membership" : "Käyttäjäryhmä jäsenyys", + "is member of" : "on jäsen", + "is not member of" : "ei ole jäsen", + "The given operator is invalid" : "Annettu operaattori on virheellinen", + "The given file size is invalid" : "Annettu tiedoston koko on virheellinen", + "The given tag id is invalid" : "Annettu tag id on virheellinen", + "The given IP range is invalid" : "Annetut IP arvot ovat virheelliset", + "The given IP range is not valid for IPv4" : "Annetut IP arvot eivät käy IPv4 osoitteisiin", + "The given IP range is not valid for IPv6" : "Annetut IP arvot eivät käy IPv6 osoitteisiin", + "The given time span is invalid" : "Annettu aikaväli on virheellinen", + "The given start time is invalid" : "Annettu aloitusaika on virheellinen", + "The given end time is invalid" : "Annettu päättymisaika on virheellinen", + "The given group does not exist" : "Annettua ryhmää ei ole", + "Workflow" : "Työnkulku", + "Files workflow engine" : "Tiedostojen hallintatyökalu", + "Open documentation" : "Avaa dokumentaatio", + "Add rule group" : "Lisää sääntöryhmä", + "Short rule description" : "Lyhyt sääntökuvaus", + "Add rule" : "Lisää sääntö", + "Reset" : "Palauta", + "Save" : "Tallenna", + "Saving…" : "Tallennetaan...", + "Loading…" : "Ladataan…", + "Successfully saved" : "Tallennettu onnistuneesti", + "File mime type" : "Tiedoston mediatyyppi" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/workflowengine/l10n/fr.js b/apps/workflowengine/l10n/fr.js index afe164def4f..b922204617f 100644 --- a/apps/workflowengine/l10n/fr.js +++ b/apps/workflowengine/l10n/fr.js @@ -26,7 +26,7 @@ OC.L10N.register( "Request time" : "Temps de requête", "between" : "entre", "not between" : "en dehors de", - "Start" : "Commencer", + "Start" : "Démarrer", "End" : "Fin", "Select timezone…" : "Sélectionner le fuseau horaire...", "Request URL" : "Demande d'URL", @@ -59,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Vérifiez si %s est invalide", "Check #%s does not exist" : "Vérifiez si #%s n'existe pas", "Workflow" : "Flux d'activités", + "Files workflow engine" : "Moteur du flux de travail des fichiers", "Open documentation" : "Voir la documentation", "Add rule group" : "Ajouter une règle de groupe", "Short rule description" : "Trier par description de règle", diff --git a/apps/workflowengine/l10n/fr.json b/apps/workflowengine/l10n/fr.json index 7cee1e0107a..4299d4d218c 100644 --- a/apps/workflowengine/l10n/fr.json +++ b/apps/workflowengine/l10n/fr.json @@ -24,7 +24,7 @@ "Request time" : "Temps de requête", "between" : "entre", "not between" : "en dehors de", - "Start" : "Commencer", + "Start" : "Démarrer", "End" : "Fin", "Select timezone…" : "Sélectionner le fuseau horaire...", "Request URL" : "Demande d'URL", @@ -57,6 +57,7 @@ "Check %s is invalid" : "Vérifiez si %s est invalide", "Check #%s does not exist" : "Vérifiez si #%s n'existe pas", "Workflow" : "Flux d'activités", + "Files workflow engine" : "Moteur du flux de travail des fichiers", "Open documentation" : "Voir la documentation", "Add rule group" : "Ajouter une règle de groupe", "Short rule description" : "Trier par description de règle", diff --git a/apps/workflowengine/l10n/is.js b/apps/workflowengine/l10n/is.js index bd58e51965c..88ad2c0bcbe 100644 --- a/apps/workflowengine/l10n/is.js +++ b/apps/workflowengine/l10n/is.js @@ -59,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Athugunin %s er ógild", "Check #%s does not exist" : "Athugunin #%s er ekki til", "Workflow" : "Vinnuferli", + "Files workflow engine" : "Verkferlavél skráa", "Open documentation" : "Opna hjálparskjöl", "Add rule group" : "Bæta við regluhópi", "Short rule description" : "Stutt lýsing á reglu", diff --git a/apps/workflowengine/l10n/is.json b/apps/workflowengine/l10n/is.json index 3dd3ee9304b..fb57a003f24 100644 --- a/apps/workflowengine/l10n/is.json +++ b/apps/workflowengine/l10n/is.json @@ -57,6 +57,7 @@ "Check %s is invalid" : "Athugunin %s er ógild", "Check #%s does not exist" : "Athugunin #%s er ekki til", "Workflow" : "Vinnuferli", + "Files workflow engine" : "Verkferlavél skráa", "Open documentation" : "Opna hjálparskjöl", "Add rule group" : "Bæta við regluhópi", "Short rule description" : "Stutt lýsing á reglu", diff --git a/apps/workflowengine/l10n/ja.js b/apps/workflowengine/l10n/ja.js index e5c53ffc109..90f7cf1b932 100644 --- a/apps/workflowengine/l10n/ja.js +++ b/apps/workflowengine/l10n/ja.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "保存されました", "Saving failed:" : "保存に失敗しました:", + "File MIME type" : "ファイルMIMEタイプ", "is" : "は", "is not" : "は異なる", "matches" : "合致", diff --git a/apps/workflowengine/l10n/ja.json b/apps/workflowengine/l10n/ja.json index e04fe1f85dd..7c90834dcee 100644 --- a/apps/workflowengine/l10n/ja.json +++ b/apps/workflowengine/l10n/ja.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "保存されました", "Saving failed:" : "保存に失敗しました:", + "File MIME type" : "ファイルMIMEタイプ", "is" : "は", "is not" : "は異なる", "matches" : "合致", diff --git a/apps/workflowengine/l10n/ko.js b/apps/workflowengine/l10n/ko.js new file mode 100644 index 00000000000..ab51b421bc2 --- /dev/null +++ b/apps/workflowengine/l10n/ko.js @@ -0,0 +1,73 @@ +OC.L10N.register( + "workflowengine", + { + "Saved" : "저장됨", + "Saving failed:" : "저장 실패:", + "File MIME type" : "파일 MIME 형식", + "is" : "맞음", + "is not" : "아님", + "matches" : "일치함", + "does not match" : "일치하지 않음", + "Example: {placeholder}" : "예: {placeholder}", + "File size (upload)" : "파일 크기(업로드)", + "less" : "작음", + "less or equals" : "작거나 같음", + "greater or equals" : "크거나 같음", + "greater" : "큼", + "File system tag" : "파일 시스템 태그", + "is tagged with" : "다음으로 태그됨", + "is not tagged with" : "다음으로 태그되지 않음", + "Select tag…" : "태그 선택…", + "Request remote address" : "요청의 원격 주소", + "matches IPv4" : "IPv4와 일치함", + "does not match IPv4" : "IPv4와 일치하지 않음", + "matches IPv6" : "IPv6과 일치함", + "does not match IPv6" : "IPv6과 일치하지 않음", + "Request time" : "요청 시간", + "between" : "사이", + "not between" : "사이에 없음", + "Start" : "시작", + "End" : "끝", + "Select timezone…" : "시간대 선택…", + "Request URL" : "요청 URL", + "Predefined URLs" : "사전 정의된 URL", + "Files WebDAV" : "파일 WebDAV", + "Request user agent" : "요청 사용자 에이전트", + "Sync clients" : "동기화 클라이언트", + "Android client" : "Android 클라이언트", + "iOS client" : "iOS 클라이언트", + "Desktop client" : "데스크톱 클라이언트", + "User group membership" : "사용자 그룹 구성원", + "is member of" : "구성원임", + "is not member of" : "구성원이 아님", + "The given operator is invalid" : "지정한 연산자가 잘못됨", + "The given regular expression is invalid" : "지정한 정규 표현식이 잘못됨", + "The given file size is invalid" : "지정한 파일 크기가 잘못됨", + "The given tag id is invalid" : "지정한 태그 ID가 잘못됨", + "The given IP range is invalid" : "지정한 IP 범위가 잘못됨", + "The given IP range is not valid for IPv4" : "지정한 IP 범위가 올바른 IPv4가 아님", + "The given IP range is not valid for IPv6" : "지정한 IP 범위가 올바른 IPv6이 아님", + "The given time span is invalid" : "지정한 시간 간격이 올바르지 않음", + "The given start time is invalid" : "지정한 시작 시간이 올바르지 않음", + "The given end time is invalid" : "지정한 끝 시간이 올바르지 않음", + "The given group does not exist" : "지정한 그룹이 존재히지 않음", + "Check %s is invalid or does not exist" : "검사 %s이(가) 올바르지 않거나 존재하지 않음", + "Operation #%s does not exist" : "작업 #%s이(가) 존재하지 않음", + "Operation %s does not exist" : "작업 %s이(가) 존재하지 않음", + "Operation %s is invalid" : "작업 %s이(가) 잘못됨", + "Check %s does not exist" : "검사 %s이(가) 존재하지 않음", + "Check %s is invalid" : "검사 %s이(가) 잘못됨", + "Check #%s does not exist" : "검사 #%s이(가) 존재하지 않음", + "Workflow" : "작업 흐름", + "Open documentation" : "문서 열기", + "Add rule group" : "규칙 그룹 추가", + "Short rule description" : "짧은 규칙 설명", + "Add rule" : "규칙 추가", + "Reset" : "초기화", + "Save" : "저장", + "Saving…" : "저장 중…", + "Loading…" : "불러오는 중…", + "Successfully saved" : "성공적으로 저장됨", + "File mime type" : "파일 MIME 형식" +}, +"nplurals=1; plural=0;"); diff --git a/apps/workflowengine/l10n/ko.json b/apps/workflowengine/l10n/ko.json new file mode 100644 index 00000000000..f23a10c0690 --- /dev/null +++ b/apps/workflowengine/l10n/ko.json @@ -0,0 +1,71 @@ +{ "translations": { + "Saved" : "저장됨", + "Saving failed:" : "저장 실패:", + "File MIME type" : "파일 MIME 형식", + "is" : "맞음", + "is not" : "아님", + "matches" : "일치함", + "does not match" : "일치하지 않음", + "Example: {placeholder}" : "예: {placeholder}", + "File size (upload)" : "파일 크기(업로드)", + "less" : "작음", + "less or equals" : "작거나 같음", + "greater or equals" : "크거나 같음", + "greater" : "큼", + "File system tag" : "파일 시스템 태그", + "is tagged with" : "다음으로 태그됨", + "is not tagged with" : "다음으로 태그되지 않음", + "Select tag…" : "태그 선택…", + "Request remote address" : "요청의 원격 주소", + "matches IPv4" : "IPv4와 일치함", + "does not match IPv4" : "IPv4와 일치하지 않음", + "matches IPv6" : "IPv6과 일치함", + "does not match IPv6" : "IPv6과 일치하지 않음", + "Request time" : "요청 시간", + "between" : "사이", + "not between" : "사이에 없음", + "Start" : "시작", + "End" : "끝", + "Select timezone…" : "시간대 선택…", + "Request URL" : "요청 URL", + "Predefined URLs" : "사전 정의된 URL", + "Files WebDAV" : "파일 WebDAV", + "Request user agent" : "요청 사용자 에이전트", + "Sync clients" : "동기화 클라이언트", + "Android client" : "Android 클라이언트", + "iOS client" : "iOS 클라이언트", + "Desktop client" : "데스크톱 클라이언트", + "User group membership" : "사용자 그룹 구성원", + "is member of" : "구성원임", + "is not member of" : "구성원이 아님", + "The given operator is invalid" : "지정한 연산자가 잘못됨", + "The given regular expression is invalid" : "지정한 정규 표현식이 잘못됨", + "The given file size is invalid" : "지정한 파일 크기가 잘못됨", + "The given tag id is invalid" : "지정한 태그 ID가 잘못됨", + "The given IP range is invalid" : "지정한 IP 범위가 잘못됨", + "The given IP range is not valid for IPv4" : "지정한 IP 범위가 올바른 IPv4가 아님", + "The given IP range is not valid for IPv6" : "지정한 IP 범위가 올바른 IPv6이 아님", + "The given time span is invalid" : "지정한 시간 간격이 올바르지 않음", + "The given start time is invalid" : "지정한 시작 시간이 올바르지 않음", + "The given end time is invalid" : "지정한 끝 시간이 올바르지 않음", + "The given group does not exist" : "지정한 그룹이 존재히지 않음", + "Check %s is invalid or does not exist" : "검사 %s이(가) 올바르지 않거나 존재하지 않음", + "Operation #%s does not exist" : "작업 #%s이(가) 존재하지 않음", + "Operation %s does not exist" : "작업 %s이(가) 존재하지 않음", + "Operation %s is invalid" : "작업 %s이(가) 잘못됨", + "Check %s does not exist" : "검사 %s이(가) 존재하지 않음", + "Check %s is invalid" : "검사 %s이(가) 잘못됨", + "Check #%s does not exist" : "검사 #%s이(가) 존재하지 않음", + "Workflow" : "작업 흐름", + "Open documentation" : "문서 열기", + "Add rule group" : "규칙 그룹 추가", + "Short rule description" : "짧은 규칙 설명", + "Add rule" : "규칙 추가", + "Reset" : "초기화", + "Save" : "저장", + "Saving…" : "저장 중…", + "Loading…" : "불러오는 중…", + "Successfully saved" : "성공적으로 저장됨", + "File mime type" : "파일 MIME 형식" +},"pluralForm" :"nplurals=1; plural=0;" +}
\ No newline at end of file diff --git a/apps/workflowengine/l10n/pl.js b/apps/workflowengine/l10n/pl.js index 69ee7a89a1d..d268df7a0b7 100644 --- a/apps/workflowengine/l10n/pl.js +++ b/apps/workflowengine/l10n/pl.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Zapisano", "Saving failed:" : "Zapis się nie udał:", + "File MIME type" : "Typy plików MIME", "is" : "jest", "is not" : "nie jest", "matches" : "pasuje", diff --git a/apps/workflowengine/l10n/pl.json b/apps/workflowengine/l10n/pl.json index 3b913fd5306..61160d783cb 100644 --- a/apps/workflowengine/l10n/pl.json +++ b/apps/workflowengine/l10n/pl.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Zapisano", "Saving failed:" : "Zapis się nie udał:", + "File MIME type" : "Typy plików MIME", "is" : "jest", "is not" : "nie jest", "matches" : "pasuje", diff --git a/apps/workflowengine/l10n/pt_BR.js b/apps/workflowengine/l10n/pt_BR.js index fe6daf49378..7445aab3c7f 100644 --- a/apps/workflowengine/l10n/pt_BR.js +++ b/apps/workflowengine/l10n/pt_BR.js @@ -59,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Verifique se %s é inválido", "Check #%s does not exist" : "Verifique se %s não existe", "Workflow" : "Fluxo de trabalho", + "Files workflow engine" : "Arquivos do mecanismo de fluxo de trabalho", "Open documentation" : "Abrir documentação", "Add rule group" : "Adicionar grupo de regra", "Short rule description" : "Descrição curta da regra", diff --git a/apps/workflowengine/l10n/pt_BR.json b/apps/workflowengine/l10n/pt_BR.json index d94235bff97..1219c360e66 100644 --- a/apps/workflowengine/l10n/pt_BR.json +++ b/apps/workflowengine/l10n/pt_BR.json @@ -57,6 +57,7 @@ "Check %s is invalid" : "Verifique se %s é inválido", "Check #%s does not exist" : "Verifique se %s não existe", "Workflow" : "Fluxo de trabalho", + "Files workflow engine" : "Arquivos do mecanismo de fluxo de trabalho", "Open documentation" : "Abrir documentação", "Add rule group" : "Adicionar grupo de regra", "Short rule description" : "Descrição curta da regra", diff --git a/apps/workflowengine/l10n/ru.js b/apps/workflowengine/l10n/ru.js index 25d07fa4a7b..e76bbd7ec20 100644 --- a/apps/workflowengine/l10n/ru.js +++ b/apps/workflowengine/l10n/ru.js @@ -59,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "Проверка %s неверна", "Check #%s does not exist" : "Проверка #%s не существует", "Workflow" : "Рабочий процесс", + "Files workflow engine" : "Механизм обработки файлов", "Open documentation" : "Открыть документацию", "Add rule group" : "Добавить группу правил", "Short rule description" : "Краткое описание правила", diff --git a/apps/workflowengine/l10n/ru.json b/apps/workflowengine/l10n/ru.json index 9c77d5d21c4..cdbd55d60c8 100644 --- a/apps/workflowengine/l10n/ru.json +++ b/apps/workflowengine/l10n/ru.json @@ -57,6 +57,7 @@ "Check %s is invalid" : "Проверка %s неверна", "Check #%s does not exist" : "Проверка #%s не существует", "Workflow" : "Рабочий процесс", + "Files workflow engine" : "Механизм обработки файлов", "Open documentation" : "Открыть документацию", "Add rule group" : "Добавить группу правил", "Short rule description" : "Краткое описание правила", diff --git a/apps/workflowengine/l10n/sq.js b/apps/workflowengine/l10n/sq.js index 4ef217915c9..f92a1a6de77 100644 --- a/apps/workflowengine/l10n/sq.js +++ b/apps/workflowengine/l10n/sq.js @@ -1,6 +1,7 @@ OC.L10N.register( "workflowengine", { + "Saved" : "E ruajtur", "Saving failed:" : "Ruajtja dështoi:", "is" : "është", "is not" : "nuk është", diff --git a/apps/workflowengine/l10n/sq.json b/apps/workflowengine/l10n/sq.json index 1ad0c38e102..25c90519457 100644 --- a/apps/workflowengine/l10n/sq.json +++ b/apps/workflowengine/l10n/sq.json @@ -1,4 +1,5 @@ { "translations": { + "Saved" : "E ruajtur", "Saving failed:" : "Ruajtja dështoi:", "is" : "është", "is not" : "nuk është", diff --git a/apps/workflowengine/l10n/tr.js b/apps/workflowengine/l10n/tr.js index 64e4a272951..a34634cbf61 100644 --- a/apps/workflowengine/l10n/tr.js +++ b/apps/workflowengine/l10n/tr.js @@ -59,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "%s denetimi geçersiz", "Check #%s does not exist" : "#%s denetimi bulunamadı", "Workflow" : "İş akışı", + "Files workflow engine" : "Dosya iş akışı motoru", "Open documentation" : "Belgeleri aç", "Add rule group" : "Kural grubu ekle", "Short rule description" : "Kısa kural açıklaması", diff --git a/apps/workflowengine/l10n/tr.json b/apps/workflowengine/l10n/tr.json index f6921e7b625..84d1f2a9c91 100644 --- a/apps/workflowengine/l10n/tr.json +++ b/apps/workflowengine/l10n/tr.json @@ -57,6 +57,7 @@ "Check %s is invalid" : "%s denetimi geçersiz", "Check #%s does not exist" : "#%s denetimi bulunamadı", "Workflow" : "İş akışı", + "Files workflow engine" : "Dosya iş akışı motoru", "Open documentation" : "Belgeleri aç", "Add rule group" : "Kural grubu ekle", "Short rule description" : "Kısa kural açıklaması", diff --git a/apps/workflowengine/l10n/zh_CN.js b/apps/workflowengine/l10n/zh_CN.js index c9d6a0f1611..4d8806d6f5a 100644 --- a/apps/workflowengine/l10n/zh_CN.js +++ b/apps/workflowengine/l10n/zh_CN.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "已保存", "Saving failed:" : "保存失败:", + "File MIME type" : "文件MIME类型", "is" : "是", "is not" : "不是", "matches" : "匹配", @@ -57,6 +59,7 @@ OC.L10N.register( "Check %s is invalid" : "检查%s是不可用", "Check #%s does not exist" : "检查#%s是不存在", "Workflow" : "数据流", + "Files workflow engine" : "文件工作流引擎", "Open documentation" : "打开文档", "Add rule group" : "添加规则组", "Short rule description" : "短规则说明", diff --git a/apps/workflowengine/l10n/zh_CN.json b/apps/workflowengine/l10n/zh_CN.json index 3e488a1cd7b..1696b35d8f9 100644 --- a/apps/workflowengine/l10n/zh_CN.json +++ b/apps/workflowengine/l10n/zh_CN.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "已保存", "Saving failed:" : "保存失败:", + "File MIME type" : "文件MIME类型", "is" : "是", "is not" : "不是", "matches" : "匹配", @@ -55,6 +57,7 @@ "Check %s is invalid" : "检查%s是不可用", "Check #%s does not exist" : "检查#%s是不存在", "Workflow" : "数据流", + "Files workflow engine" : "文件工作流引擎", "Open documentation" : "打开文档", "Add rule group" : "添加规则组", "Short rule description" : "短规则说明", diff --git a/apps/workflowengine/templates/admin.php b/apps/workflowengine/templates/admin.php index 500300f93b3..4f4dab4043f 100644 --- a/apps/workflowengine/templates/admin.php +++ b/apps/workflowengine/templates/admin.php @@ -24,7 +24,6 @@ ?> <div id="<?php p($_['appid']); ?>" class="section workflowengine"> <h2 class="inlineblock"><?php p($_['heading']); ?></h2> - <?php if (!empty($_['docs'])): ?> <a target="_blank" rel="noreferrer" class="icon-info svg" title="<?php p($l->t('Open documentation'));?>" @@ -32,6 +31,10 @@ </a> <?php endif; ?> + <?php if (!empty($_['settings-hint'])): ?> + <p class="settings-hint"><?php p($_['settings-hint']); ?></p> + <?php endif; ?> + <?php if (!empty($_['description'])): ?> <p><?php p($_['description']); ?></p> <?php endif; ?> |