diff options
Diffstat (limited to 'apps')
1095 files changed, 11391 insertions, 7960 deletions
diff --git a/apps/admin_audit/composer/composer/installed.php b/apps/admin_audit/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/admin_audit/composer/composer/installed.php +++ b/apps/admin_audit/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/cloud_federation_api/composer/composer/installed.php b/apps/cloud_federation_api/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/cloud_federation_api/composer/composer/installed.php +++ b/apps/cloud_federation_api/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/comments/composer/composer/installed.php b/apps/comments/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/comments/composer/composer/installed.php +++ b/apps/comments/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/comments/l10n/de.js b/apps/comments/l10n/de.js index 86ebd63263c..153bf2971ab 100644 --- a/apps/comments/l10n/de.js +++ b/apps/comments/l10n/de.js @@ -11,7 +11,7 @@ OC.L10N.register( "{author} commented on {file}" : "{author} hat {file} kommentiert", "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien", "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt", - "{user} mentioned you in a comment on \"{file}\"" : "{user} hat Dich in einem Kommentar zu \"{file}\" erwähnt", + "{user} mentioned you in a comment on \"{file}\"" : "{user} hat dich in einem Kommentar zu \"{file}\" erwähnt", "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien", "Edit comment" : "Kommentar bearbeiten", "Delete comment" : "Kommentar löschen", @@ -29,6 +29,6 @@ OC.L10N.register( "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten", "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten", "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt", - "{user} mentioned you in a comment on “{file}”" : "{user} hat Dich in einem Kommentar zu “{file}” erwähnt" + "{user} mentioned you in a comment on “{file}”" : "{user} hat dich in einem Kommentar zu “{file}” erwähnt" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/de.json b/apps/comments/l10n/de.json index 4c1c8731146..6abcf231f46 100644 --- a/apps/comments/l10n/de.json +++ b/apps/comments/l10n/de.json @@ -9,7 +9,7 @@ "{author} commented on {file}" : "{author} hat {file} kommentiert", "<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien", "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt", - "{user} mentioned you in a comment on \"{file}\"" : "{user} hat Dich in einem Kommentar zu \"{file}\" erwähnt", + "{user} mentioned you in a comment on \"{file}\"" : "{user} hat dich in einem Kommentar zu \"{file}\" erwähnt", "Files app plugin to add comments to files" : "Ein Plugin für die Dateien-App zum Kommentieren von Dateien", "Edit comment" : "Kommentar bearbeiten", "Delete comment" : "Kommentar löschen", @@ -27,6 +27,6 @@ "An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten", "An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten", "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du wurdest in einem Kommentar auf \"{file}\" von einem bereits gelöschten Benutzer erwähnt", - "{user} mentioned you in a comment on “{file}”" : "{user} hat Dich in einem Kommentar zu “{file}” erwähnt" + "{user} mentioned you in a comment on “{file}”" : "{user} hat dich in einem Kommentar zu “{file}” erwähnt" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/es_SV.js b/apps/comments/l10n/es_SV.js index 9bcf9a69607..e21efedfd34 100644 --- a/apps/comments/l10n/es_SV.js +++ b/apps/comments/l10n/es_SV.js @@ -19,4 +19,4 @@ OC.L10N.register( "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/comments/l10n/es_SV.json b/apps/comments/l10n/es_SV.json index 5b49f8377e2..f4f0dad3cf1 100644 --- a/apps/comments/l10n/es_SV.json +++ b/apps/comments/l10n/es_SV.json @@ -16,5 +16,5 @@ "Comment" : "Comentario", "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Te mencionaron en \"{file}\", en un comentario de un usuario que ya ha sido borrado", "{user} mentioned you in a comment on “{file}”" : "{user} te mencionó en un comentario en “{file}”" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/comments/l10n/nb.js b/apps/comments/l10n/nb.js index a2511dc0a86..c43da655029 100644 --- a/apps/comments/l10n/nb.js +++ b/apps/comments/l10n/nb.js @@ -13,11 +13,15 @@ OC.L10N.register( "Files app plugin to add comments to files" : "Tillegg for å legge til kommentarer til filer", "Edit comment" : "Rediger kommentar", "Delete comment" : "Slett kommentar", + "Cancel edit" : "Avbryt endring", + "Post comment" : "Send kommentar", "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!", + "No more messages" : "Ingen flere meldinger", "Retry" : "Prøv igjen", "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"], "_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{uleste} nye kommentarer"], "Comment" : "Kommentar", + "Comment deleted" : "Kommentar slettet", "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"{file}\", i en kommentar av en bruker som siden har blitt slettet", "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”" }, diff --git a/apps/comments/l10n/nb.json b/apps/comments/l10n/nb.json index e219d860521..cc8a43dfa25 100644 --- a/apps/comments/l10n/nb.json +++ b/apps/comments/l10n/nb.json @@ -11,11 +11,15 @@ "Files app plugin to add comments to files" : "Tillegg for å legge til kommentarer til filer", "Edit comment" : "Rediger kommentar", "Delete comment" : "Slett kommentar", + "Cancel edit" : "Avbryt endring", + "Post comment" : "Send kommentar", "No comments yet, start the conversation!" : "Ingen kommentarer enda, start diskusjonen!", + "No more messages" : "Ingen flere meldinger", "Retry" : "Prøv igjen", "_%n unread comment_::_%n unread comments_" : ["%n ulest kommentar","%n uleste kommentarer"], "_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{uleste} nye kommentarer"], "Comment" : "Kommentar", + "Comment deleted" : "Kommentar slettet", "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Du ble nevnte på \"{file}\", i en kommentar av en bruker som siden har blitt slettet", "{user} mentioned you in a comment on “{file}”" : "{user} nevnte deg i en kommentar på “{file}”" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/comments/lib/Activity/Provider.php b/apps/comments/lib/Activity/Provider.php index 715be29e2ed..c6e55326580 100644 --- a/apps/comments/lib/Activity/Provider.php +++ b/apps/comments/lib/Activity/Provider.php @@ -43,8 +43,6 @@ class Provider implements IProvider { protected ICommentsManager $commentsManager; protected IUserManager $userManager; protected IManager $activityManager; - /** @var string[] */ - protected array $displayNames = []; public function __construct(IFactory $languageFactory, IURLGenerator $url, ICommentsManager $commentsManager, IUserManager $userManager, IManager $activityManager) { $this->languageFactory = $languageFactory; @@ -213,22 +211,10 @@ class Provider implements IProvider { } protected function generateUserParameter(string $uid): array { - if (!isset($this->displayNames[$uid])) { - $this->displayNames[$uid] = $this->getDisplayName($uid); - } - return [ 'type' => 'user', 'id' => $uid, - 'name' => $this->displayNames[$uid], + 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } - - protected function getDisplayName(string $uid): string { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } - return $uid; - } } diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php index 7c6a40133ee..4ddb7295bfe 100644 --- a/apps/comments/lib/Notification/Notifier.php +++ b/apps/comments/lib/Notification/Notifier.php @@ -100,9 +100,9 @@ class Notifier implements INotifier { $displayName = $comment->getActorId(); $isDeletedActor = $comment->getActorType() === ICommentsManager::DELETED_USER; if ($comment->getActorType() === 'users') { - $commenter = $this->userManager->get($comment->getActorId()); - if ($commenter instanceof IUser) { - $displayName = $commenter->getDisplayName(); + $commenter = $this->userManager->getDisplayName($comment->getActorId()); + if ($commenter !== null) { + $displayName = $commenter; } } @@ -171,8 +171,8 @@ class Notifier implements INotifier { $mentions = $comment->getMentions(); foreach ($mentions as $mention) { if ($mention['type'] === 'user') { - $user = $this->userManager->get($mention['id']); - if (!$user instanceof IUser) { + $userDisplayName = $this->userManager->getDisplayName($mention['id']); + if ($userDisplayName === null) { continue; } } diff --git a/apps/comments/src/components/Comment.vue b/apps/comments/src/components/Comment.vue index f22754ea201..41284e50ca9 100644 --- a/apps/comments/src/components/Comment.vue +++ b/apps/comments/src/components/Comment.vue @@ -26,7 +26,7 @@ <!-- Comment header toolbar --> <div class="comment__header"> <!-- Author --> - <Avatar class="comment__avatar" + <NcAvatar class="comment__avatar" :display-name="actorDisplayName" :user="actorId" :size="32" /> @@ -34,27 +34,27 @@ <!-- Comment actions, show if we have a message id and current user is author --> - <Actions v-if="isOwnComment && id && !loading" class="comment__actions"> + <NcActions v-if="isOwnComment && id && !loading" class="comment__actions"> <template v-if="!editing"> - <ActionButton :close-after-click="true" + <NcActionButton :close-after-click="true" icon="icon-rename" @click="onEdit"> {{ t('comments', 'Edit comment') }} - </ActionButton> - <ActionSeparator /> - <ActionButton :close-after-click="true" + </NcActionButton> + <NcActionSeparator /> + <NcActionButton :close-after-click="true" icon="icon-delete" @click="onDeleteWithUndo"> {{ t('comments', 'Delete comment') }} - </ActionButton> + </NcActionButton> </template> - <ActionButton v-else + <NcActionButton v-else icon="icon-close" @click="onEditCancel"> {{ t('comments', 'Cancel edit') }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> <!-- Show loading if we're editing or deleting, not on new ones --> <div v-if="id && loading" class="comment_loading icon-loading-small" /> @@ -65,19 +65,23 @@ <!-- Message editor --> <div v-if="editor || editing" class="comment__editor "> - <RichContenteditable ref="editor" + <NcRichContenteditable ref="editor" :auto-complete="autoComplete" :contenteditable="!loading" :value="localMessage" @update:value="updateLocalMessage" @submit="onSubmit" /> - <input v-tooltip="t('comments', 'Post comment')" - :class="loading ? 'icon-loading-small' :'icon-confirm'" - class="comment__submit" - type="submit" + <NcButton class="comment__submit" + type="tertiary-no-background" + native-type="submit" + :aria-label="t('comments', 'Post comment')" :disabled="isEmptyMessage" - value="" @click="onSubmit"> + <template #icon> + <span v-if="loading" class="icon-loading-small" /> + <ArrowRight v-else :size="20" /> + </template> + </NcButton> </div> <!-- Message content --> @@ -95,12 +99,14 @@ import { getCurrentUser } from '@nextcloud/auth' import moment from '@nextcloud/moment' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import Actions from '@nextcloud/vue/dist/Components/Actions' -import ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator' -import Avatar from '@nextcloud/vue/dist/Components/Avatar' -import RichContenteditable from '@nextcloud/vue/dist/Components/RichContenteditable' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator' +import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' +import NcRichContenteditable from '@nextcloud/vue/dist/Components/NcRichContenteditable' import RichEditorMixin from '@nextcloud/vue/dist/Mixins/richEditor' +import ArrowRight from 'vue-material-design-icons/ArrowRight' import Moment from './Moment' import CommentMixin from '../mixins/CommentMixin' @@ -109,12 +115,14 @@ export default { name: 'Comment', components: { - ActionButton, - Actions, - ActionSeparator, - Avatar, + NcActionButton, + NcActions, + NcActionSeparator, + ArrowRight, + NcAvatar, + NcButton, Moment, - RichContenteditable, + NcRichContenteditable, }, mixins: [RichEditorMixin, CommentMixin], @@ -285,27 +293,11 @@ $comment-padding: 10px; } &__submit { - position: absolute; + position: absolute !important; right: 0; bottom: 0; - width: 44px; - height: 44px; // Align with input border margin: 1px; - cursor: pointer; - opacity: .7; - border: none; - background-color: transparent !important; - - &:disabled { - cursor: not-allowed; - opacity: .5; - } - - &:focus, - &:hover { - opacity: 1; - } } &__message { diff --git a/apps/comments/src/views/Comments.vue b/apps/comments/src/views/Comments.vue index c101c2c5c39..ce887d6977c 100644 --- a/apps/comments/src/views/Comments.vue +++ b/apps/comments/src/views/Comments.vue @@ -31,9 +31,9 @@ @new="onNewComment" /> <template v-if="!isFirstLoading"> - <EmptyContent v-if="!hasComments && done" icon="icon-comment"> + <NcEmptyContent v-if="!hasComments && done" icon="icon-comment"> {{ t('comments', 'No comments yet, start the conversation!') }} - </EmptyContent> + </NcEmptyContent> <!-- Comments --> <Comment v-for="comment in comments" @@ -55,14 +55,14 @@ </div> <!-- Error message --> - <EmptyContent v-else-if="error" class="comments__error" icon="icon-error"> + <NcEmptyContent v-else-if="error" class="comments__error" icon="icon-error"> {{ error }} <template #desc> <button icon="icon-history" @click="getComments"> {{ t('comments', 'Retry') }} </button> </template> - </EmptyContent> + </NcEmptyContent> </template> </div> </template> @@ -75,7 +75,7 @@ import axios from '@nextcloud/axios' import VTooltip from 'v-tooltip' import Vue from 'vue' -import EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent' +import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' import Comment from '../components/Comment' import getComments, { DEFAULT_LIMIT } from '../services/GetComments' @@ -89,7 +89,7 @@ export default { components: { // Avatar, Comment, - EmptyContent, + NcEmptyContent, }, data() { diff --git a/apps/comments/tests/Unit/Notification/NotifierTest.php b/apps/comments/tests/Unit/Notification/NotifierTest.php index 330530f0000..ecd22ffd9e3 100644 --- a/apps/comments/tests/Unit/Notification/NotifierTest.php +++ b/apps/comments/tests/Unit/Notification/NotifierTest.php @@ -39,27 +39,28 @@ use OCP\IUser; use OCP\IUserManager; use OCP\L10N\IFactory; use OCP\Notification\INotification; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class NotifierTest extends TestCase { /** @var Notifier */ protected $notifier; - /** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IFactory|MockObject */ protected $l10nFactory; - /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IL10N|MockObject */ protected $l; - /** @var IRootFolder|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IRootFolder|MockObject */ protected $folder; - /** @var ICommentsManager|\PHPUnit\Framework\MockObject\MockObject */ + /** @var ICommentsManager|MockObject */ protected $commentsManager; - /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IURLGenerator|MockObject */ protected $url; - /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IUserManager|MockObject */ protected $userManager; - /** @var INotification|\PHPUnit\Framework\MockObject\MockObject */ + /** @var INotification|MockObject */ protected $notification; - /** @var IComment|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IComment|MockObject */ protected $comment; /** @var string */ protected $lc = 'tlh_KX'; @@ -97,15 +98,7 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; $message = '@Huraga mentioned you in a comment on "Gre\'thor.odp"'; - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($displayName); - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $you */ - $you = $this->createMock(IUser::class); - - /** @var Node|\PHPUnit\Framework\MockObject\MockObject $node */ + /** @var Node|MockObject $node */ $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) @@ -213,10 +206,10 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->exactly(2)) - ->method('get') + ->method('getDisplayName') ->willReturnMap([ - ['huraga', $user], - ['you', $you], + ['huraga', $displayName], + ['you', 'You'], ]); $this->notifier->prepare($this->notification, $this->lc); @@ -226,10 +219,7 @@ class NotifierTest extends TestCase { $fileName = 'Gre\'thor.odp'; $message = 'You were mentioned on "Gre\'thor.odp", in a comment by a user that has since been deleted'; - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $you */ - $you = $this->createMock(IUser::class); - - /** @var Node|\PHPUnit\Framework\MockObject\MockObject $node */ + /** @var Node|MockObject $node */ $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) @@ -334,9 +324,11 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->once()) - ->method('get') - ->with('you') - ->willReturn($you); + ->method('getDisplayName') + ->willReturnMap([ + ['huraga', null], + ['you', 'You'], + ]); $this->notifier->prepare($this->notification, $this->lc); } @@ -373,7 +365,7 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->never()) - ->method('get'); + ->method('getDisplayName'); $this->notifier->prepare($this->notification, $this->lc); } @@ -411,7 +403,7 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->never()) - ->method('get'); + ->method('getDisplayName'); $this->notifier->prepare($this->notification, $this->lc); } @@ -422,12 +414,6 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($displayName); - $this->folder ->expects($this->never()) ->method('getById'); @@ -472,9 +458,9 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->once()) - ->method('get') + ->method('getDisplayName') ->with('huraga') - ->willReturn($user); + ->willReturn($displayName); $this->notifier->prepare($this->notification, $this->lc); } @@ -485,12 +471,6 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($displayName); - $this->folder ->expects($this->never()) ->method('getById'); @@ -536,9 +516,9 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->once()) - ->method('get') + ->method('getDisplayName') ->with('huraga') - ->willReturn($user); + ->willReturn($displayName); $this->notifier->prepare($this->notification, $this->lc); } @@ -549,12 +529,6 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; - /** @var IUser|\PHPUnit\Framework\MockObject\MockObject $user */ - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($displayName); - $userFolder = $this->createMock(Folder::class); $this->folder->expects($this->once()) ->method('getUserFolder') @@ -609,9 +583,9 @@ class NotifierTest extends TestCase { $this->userManager ->expects($this->once()) - ->method('get') + ->method('getDisplayName') ->with('huraga') - ->willReturn($user); + ->willReturn($displayName); $this->notifier->prepare($this->notification, $this->lc); } diff --git a/apps/comments/tests/js/filespluginSpec.js b/apps/comments/tests/js/filespluginSpec.js index a2f9750f9fc..4230a77874d 100644 --- a/apps/comments/tests/js/filespluginSpec.js +++ b/apps/comments/tests/js/filespluginSpec.js @@ -26,17 +26,17 @@ describe('OCA.Comments.FilesPlugin tests', function() { var testFiles; beforeEach(function() { - var $content = $('<div id="content"></div>'); + var $content = $('<div id="app-content"></div>'); $('#testArea').append($content); // dummy file list var $div = $( '<div>' + - '<table id="filestable">' + + '<table class="files-filestable">' + '<thead></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '</table>' + '</div>'); - $('#content').append($div); + $('#app-content').append($div); fileList = new OCA.Files.FileList($div); OCA.Comments.FilesPlugin.attach(fileList); diff --git a/apps/contactsinteraction/composer/composer/installed.php b/apps/contactsinteraction/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/contactsinteraction/composer/composer/installed.php +++ b/apps/contactsinteraction/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/dashboard/l10n/ar.js b/apps/dashboard/l10n/ar.js index 3ab0fd1dca6..3e5b3df2de1 100644 --- a/apps/dashboard/l10n/ar.js +++ b/apps/dashboard/l10n/ar.js @@ -22,9 +22,9 @@ OC.L10N.register( "Hello" : "مرحبا", "Hello, {name}" : "مرحبا، {name} ", "Pick from Files" : "اختر من الملفات", - "Default images" : "الصور الإفتراضية", "Plain background" : "خلفية سادة", "Insert from {productName}" : "اضف من {productName}", - "Show something" : "أظهر شي ما" + "Show something" : "أظهر شي ما", + "Default images" : "الصور الإفتراضية" }, "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/dashboard/l10n/ar.json b/apps/dashboard/l10n/ar.json index 65588c75cae..3ee82304e08 100644 --- a/apps/dashboard/l10n/ar.json +++ b/apps/dashboard/l10n/ar.json @@ -20,9 +20,9 @@ "Hello" : "مرحبا", "Hello, {name}" : "مرحبا، {name} ", "Pick from Files" : "اختر من الملفات", - "Default images" : "الصور الإفتراضية", "Plain background" : "خلفية سادة", "Insert from {productName}" : "اضف من {productName}", - "Show something" : "أظهر شي ما" + "Show something" : "أظهر شي ما", + "Default images" : "الصور الإفتراضية" },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/bg.js b/apps/dashboard/l10n/bg.js index c2a301c5480..077b96010c2 100644 --- a/apps/dashboard/l10n/bg.js +++ b/apps/dashboard/l10n/bg.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Здравейте", "Hello, {name}" : "Здравейте, {name}", "Pick from Files" : "Избери от Файловете", - "Default images" : "Изображения по подразбиране", "Plain background" : "Обикновен фон", "Insert from {productName}" : "Вмъкване от {productName}", - "Show something" : "Покажи нещо" + "Show something" : "Покажи нещо", + "Default images" : "Изображения по подразбиране" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/bg.json b/apps/dashboard/l10n/bg.json index ef278e9e99b..7225daa180c 100644 --- a/apps/dashboard/l10n/bg.json +++ b/apps/dashboard/l10n/bg.json @@ -22,9 +22,9 @@ "Hello" : "Здравейте", "Hello, {name}" : "Здравейте, {name}", "Pick from Files" : "Избери от Файловете", - "Default images" : "Изображения по подразбиране", "Plain background" : "Обикновен фон", "Insert from {productName}" : "Вмъкване от {productName}", - "Show something" : "Покажи нещо" + "Show something" : "Покажи нещо", + "Default images" : "Изображения по подразбиране" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/ca.js b/apps/dashboard/l10n/ca.js index a7fd27ce198..562dbc76dc9 100644 --- a/apps/dashboard/l10n/ca.js +++ b/apps/dashboard/l10n/ca.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Hola", "Hello, {name}" : "Hola {name}", "Pick from Files" : "Trieu dels fitxers", - "Default images" : "Imatges predeterminades", "Plain background" : "Fons senzill", "Insert from {productName}" : "Insereix des de {productName}", - "Show something" : "Mostra alguna cosa" + "Show something" : "Mostra alguna cosa", + "Default images" : "Imatges predeterminades" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/ca.json b/apps/dashboard/l10n/ca.json index 09971eb006e..d22ebb65321 100644 --- a/apps/dashboard/l10n/ca.json +++ b/apps/dashboard/l10n/ca.json @@ -22,9 +22,9 @@ "Hello" : "Hola", "Hello, {name}" : "Hola {name}", "Pick from Files" : "Trieu dels fitxers", - "Default images" : "Imatges predeterminades", "Plain background" : "Fons senzill", "Insert from {productName}" : "Insereix des de {productName}", - "Show something" : "Mostra alguna cosa" + "Show something" : "Mostra alguna cosa", + "Default images" : "Imatges predeterminades" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/cs.js b/apps/dashboard/l10n/cs.js index 09612dbc0a0..495fa460395 100644 --- a/apps/dashboard/l10n/cs.js +++ b/apps/dashboard/l10n/cs.js @@ -3,15 +3,15 @@ OC.L10N.register( { "Dashboard" : "Nástěnka", "Dashboard app" : "Aplikace Nástěnka", - "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Začněte svůj den informovaní\n\nNextcloud Přehled je Váš úvodní bod dne, který vám podává přehled nadcházejících schůzek, neodkladných e-mailů, zpráv v chatu,\npříchozích požadavcích, nejnovějších tweetů a mnoho dalšího! Uživatelé si mohou přidávat ovládací prvky, které chtějí a měnit pozadí dle své libosti.", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Začněte svůj den informovaní\n\nNextcloud Nástěnka je váš úvodní bod dne, který vám podává přehled\nnadcházejících schůzek, neodkladných e-mailů, zpráv v chatech, příchozích\npožadavků, nejnovějších tweetů a mnoha dalšího! Uživatelé si\nmohou přidávat ovládací prvky, které chtějí a měnit pozadí dle své libosti.", "Customize" : "Přizpůsobit si", "Edit widgets" : "Upravit ovládací prvky", - "Get more widgets from the App Store" : "Získejte další ovládací prvky z katalogu aplikací", + "Get more widgets from the App Store" : "Získat další ovládací prvky z katalogu aplikací", "Change background image" : "Změnit obrázek na pozadí", "Weather service" : "Služba předpovědi počasí", - "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Z důvodu ochrany vašeho soukromí, jsou údaje o počasí pro vás vyžádány vámi využívaným Nextcloud serverem, takže služba, poskytující tato data, neobdrží žádné osobní údaje.", - "Weather data from Met.no" : "Data o počasí z Met.no", - "geocoding with Nominatim" : "geokódování s Nominatim", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Vaše soukromí je chráněno tím, že komunikaci se službou předpovědi počasí zprostředkovává vámi využívaný Nextcloud server. Díky tomu služba, která tyto údaje poskytuje, neobdrží z vašeho počítače žádné osobní údaje.", + "Weather data from Met.no" : "Údaje o počasí z Met.no", + "geocoding with Nominatim" : "z popisu polohy na souřadnice převáděno službou Nominatim", "elevation data from OpenTopoData" : "data o nadmořských výškách z OpenTopoData", "Weather" : "Počasí", "Status" : "Stav", @@ -21,12 +21,13 @@ OC.L10N.register( "Good afternoon, {name}" : "Dobré odpoledne, {name}", "Good evening" : "Dobrý večer", "Good evening, {name}" : "Dobrý večer, {name}", - "Hello" : "Zdravíme", - "Hello, {name}" : "Zdravíme, {name}", - "Pick from Files" : "Vyberte ze souborů", - "Default images" : "Výchozí obrázky", + "Hello" : "Dobrý den", + "Hello, {name}" : "Dobrý den, {name}", + "Pick from Files" : "Vybrat ze souborů", + "Default image" : "Výchozí obrázek", "Plain background" : "Jednolité pozadí", "Insert from {productName}" : "Vložit z {productName}", - "Show something" : "Zobrazit něco" + "Show something" : "Zobrazit něco", + "Default images" : "Výchozí obrázek" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/dashboard/l10n/cs.json b/apps/dashboard/l10n/cs.json index 9733310d030..5c7300a9b71 100644 --- a/apps/dashboard/l10n/cs.json +++ b/apps/dashboard/l10n/cs.json @@ -1,15 +1,15 @@ { "translations": { "Dashboard" : "Nástěnka", "Dashboard app" : "Aplikace Nástěnka", - "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Začněte svůj den informovaní\n\nNextcloud Přehled je Váš úvodní bod dne, který vám podává přehled nadcházejících schůzek, neodkladných e-mailů, zpráv v chatu,\npříchozích požadavcích, nejnovějších tweetů a mnoho dalšího! Uživatelé si mohou přidávat ovládací prvky, které chtějí a měnit pozadí dle své libosti.", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Začněte svůj den informovaní\n\nNextcloud Nástěnka je váš úvodní bod dne, který vám podává přehled\nnadcházejících schůzek, neodkladných e-mailů, zpráv v chatech, příchozích\npožadavků, nejnovějších tweetů a mnoha dalšího! Uživatelé si\nmohou přidávat ovládací prvky, které chtějí a měnit pozadí dle své libosti.", "Customize" : "Přizpůsobit si", "Edit widgets" : "Upravit ovládací prvky", - "Get more widgets from the App Store" : "Získejte další ovládací prvky z katalogu aplikací", + "Get more widgets from the App Store" : "Získat další ovládací prvky z katalogu aplikací", "Change background image" : "Změnit obrázek na pozadí", "Weather service" : "Služba předpovědi počasí", - "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Z důvodu ochrany vašeho soukromí, jsou údaje o počasí pro vás vyžádány vámi využívaným Nextcloud serverem, takže služba, poskytující tato data, neobdrží žádné osobní údaje.", - "Weather data from Met.no" : "Data o počasí z Met.no", - "geocoding with Nominatim" : "geokódování s Nominatim", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Vaše soukromí je chráněno tím, že komunikaci se službou předpovědi počasí zprostředkovává vámi využívaný Nextcloud server. Díky tomu služba, která tyto údaje poskytuje, neobdrží z vašeho počítače žádné osobní údaje.", + "Weather data from Met.no" : "Údaje o počasí z Met.no", + "geocoding with Nominatim" : "z popisu polohy na souřadnice převáděno službou Nominatim", "elevation data from OpenTopoData" : "data o nadmořských výškách z OpenTopoData", "Weather" : "Počasí", "Status" : "Stav", @@ -19,12 +19,13 @@ "Good afternoon, {name}" : "Dobré odpoledne, {name}", "Good evening" : "Dobrý večer", "Good evening, {name}" : "Dobrý večer, {name}", - "Hello" : "Zdravíme", - "Hello, {name}" : "Zdravíme, {name}", - "Pick from Files" : "Vyberte ze souborů", - "Default images" : "Výchozí obrázky", + "Hello" : "Dobrý den", + "Hello, {name}" : "Dobrý den, {name}", + "Pick from Files" : "Vybrat ze souborů", + "Default image" : "Výchozí obrázek", "Plain background" : "Jednolité pozadí", "Insert from {productName}" : "Vložit z {productName}", - "Show something" : "Zobrazit něco" + "Show something" : "Zobrazit něco", + "Default images" : "Výchozí obrázek" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/da.js b/apps/dashboard/l10n/da.js index a06004ea9ab..8fe93eec83c 100644 --- a/apps/dashboard/l10n/da.js +++ b/apps/dashboard/l10n/da.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Dashboard" : "Dashboard", "Dashboard app" : "Dashboard app", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Start din dag informeret\n\nNextcloud Dashboard er dit udgangspunkt på dagen og giver dig en\noversigt over dine kommende aftaler, hastemails, chatbeskeder,\nindgående billetter, seneste tweets og meget mere! Brugere kan tilføje widgets\nde kan lide og ændre baggrunden efter deres smag.", "Customize" : "Tilpas", "Edit widgets" : "Redigér widgets", "Get more widgets from the App Store" : "Få flere widgets fra App Store", @@ -23,9 +24,10 @@ OC.L10N.register( "Hello" : "Hej", "Hello, {name}" : "Hej {name}", "Pick from Files" : "Vælg fra Filer", - "Default images" : "Standardbilleder", + "Default image" : "Standardbillede", "Plain background" : "Standard baggrund", "Insert from {productName}" : "Indsæt fra {productName}", - "Show something" : "Vis noget" + "Show something" : "Vis noget", + "Default images" : "Standardbilleder" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/da.json b/apps/dashboard/l10n/da.json index 90458ad211f..906ad1580ea 100644 --- a/apps/dashboard/l10n/da.json +++ b/apps/dashboard/l10n/da.json @@ -1,6 +1,7 @@ { "translations": { "Dashboard" : "Dashboard", "Dashboard app" : "Dashboard app", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Start din dag informeret\n\nNextcloud Dashboard er dit udgangspunkt på dagen og giver dig en\noversigt over dine kommende aftaler, hastemails, chatbeskeder,\nindgående billetter, seneste tweets og meget mere! Brugere kan tilføje widgets\nde kan lide og ændre baggrunden efter deres smag.", "Customize" : "Tilpas", "Edit widgets" : "Redigér widgets", "Get more widgets from the App Store" : "Få flere widgets fra App Store", @@ -21,9 +22,10 @@ "Hello" : "Hej", "Hello, {name}" : "Hej {name}", "Pick from Files" : "Vælg fra Filer", - "Default images" : "Standardbilleder", + "Default image" : "Standardbillede", "Plain background" : "Standard baggrund", "Insert from {productName}" : "Indsæt fra {productName}", - "Show something" : "Vis noget" + "Show something" : "Vis noget", + "Default images" : "Standardbilleder" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/de.js b/apps/dashboard/l10n/de.js index 7c1e0aa88f5..eb074991b77 100644 --- a/apps/dashboard/l10n/de.js +++ b/apps/dashboard/l10n/de.js @@ -3,13 +3,13 @@ OC.L10N.register( { "Dashboard" : "Dashboard", "Dashboard app" : "Dashboard-App", - "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Starte informiert in den Tag\n\nDas Nextcloud-Dashboard ist Dein Ausgangspunkt für den Tag und gibt Dir\neinen Überblick über Deine anstehenden Termine, dringende E-Mails, Chatnachrichten, eingehende Tickets, neuste Tweets und vieles mehr! Benutzer können die Widgets hinzufügen, die sie mögen und den Hintergrund nach ihren Wünschen angepassen.", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Starte informiert in den Tag\n\nDas Nextcloud-Dashboard ist dein Ausgangspunkt für den Tag und gibt Dir\neinen Überblick über deine anstehenden Termine, dringende E-Mails, Chatnachrichten, eingehende Tickets, neuste Tweets und vieles mehr! Benutzer können die Widgets hinzufügen, die sie mögen und den Hintergrund nach ihren Wünschen angepassen.", "Customize" : "Anpassen", "Edit widgets" : "Widgets bearbeiten", - "Get more widgets from the App Store" : "Hole Dir weitere Widgets aus dem App-Store", + "Get more widgets from the App Store" : "Hole dir weitere Widgets aus dem App-Store", "Change background image" : "Hintergrundbild ändern", "Weather service" : "Wetterdienst", - "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zu Deinem Datenschutz werden die Wetterdaten von Deinen Nextcloud-Server für Dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zu deinem Datenschutz werden die Wetterdaten von deinen Nextcloud-Server für dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.", "Weather data from Met.no" : "Wetterdaten von Met.no", "geocoding with Nominatim" : "Geokodierung mit Nominatim", "elevation data from OpenTopoData" : "Höhendaten von OpenTopoData", @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Hallo", "Hello, {name}" : "Hallo, {name}", "Pick from Files" : "Aus Dateien auswählen", - "Default images" : "Standardbilder", "Plain background" : "Einfacher Hintergrund", "Insert from {productName}" : "Von {productName} einfügen", - "Show something" : "Zeige etwas an" + "Show something" : "Zeige etwas an", + "Default images" : "Standardbilder" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/de.json b/apps/dashboard/l10n/de.json index e2da604b3b1..ff303d8d1b4 100644 --- a/apps/dashboard/l10n/de.json +++ b/apps/dashboard/l10n/de.json @@ -1,13 +1,13 @@ { "translations": { "Dashboard" : "Dashboard", "Dashboard app" : "Dashboard-App", - "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Starte informiert in den Tag\n\nDas Nextcloud-Dashboard ist Dein Ausgangspunkt für den Tag und gibt Dir\neinen Überblick über Deine anstehenden Termine, dringende E-Mails, Chatnachrichten, eingehende Tickets, neuste Tweets und vieles mehr! Benutzer können die Widgets hinzufügen, die sie mögen und den Hintergrund nach ihren Wünschen angepassen.", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Starte informiert in den Tag\n\nDas Nextcloud-Dashboard ist dein Ausgangspunkt für den Tag und gibt Dir\neinen Überblick über deine anstehenden Termine, dringende E-Mails, Chatnachrichten, eingehende Tickets, neuste Tweets und vieles mehr! Benutzer können die Widgets hinzufügen, die sie mögen und den Hintergrund nach ihren Wünschen angepassen.", "Customize" : "Anpassen", "Edit widgets" : "Widgets bearbeiten", - "Get more widgets from the App Store" : "Hole Dir weitere Widgets aus dem App-Store", + "Get more widgets from the App Store" : "Hole dir weitere Widgets aus dem App-Store", "Change background image" : "Hintergrundbild ändern", "Weather service" : "Wetterdienst", - "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zu Deinem Datenschutz werden die Wetterdaten von Deinen Nextcloud-Server für Dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zu deinem Datenschutz werden die Wetterdaten von deinen Nextcloud-Server für dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.", "Weather data from Met.no" : "Wetterdaten von Met.no", "geocoding with Nominatim" : "Geokodierung mit Nominatim", "elevation data from OpenTopoData" : "Höhendaten von OpenTopoData", @@ -22,9 +22,9 @@ "Hello" : "Hallo", "Hello, {name}" : "Hallo, {name}", "Pick from Files" : "Aus Dateien auswählen", - "Default images" : "Standardbilder", "Plain background" : "Einfacher Hintergrund", "Insert from {productName}" : "Von {productName} einfügen", - "Show something" : "Zeige etwas an" + "Show something" : "Zeige etwas an", + "Default images" : "Standardbilder" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/de_DE.js b/apps/dashboard/l10n/de_DE.js index ee9d9f72289..9d866a2e5ef 100644 --- a/apps/dashboard/l10n/de_DE.js +++ b/apps/dashboard/l10n/de_DE.js @@ -24,9 +24,10 @@ OC.L10N.register( "Hello" : "Hallo", "Hello, {name}" : "Hallo, {name}", "Pick from Files" : "Aus Dateien auswählen", - "Default images" : "Standardbilder", + "Default image" : "Standardbild", "Plain background" : "Einfacher Hintergrund", "Insert from {productName}" : "Von {productName} einfügen", - "Show something" : "Etwas anzeigen" + "Show something" : "Etwas anzeigen", + "Default images" : "Standardbild" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/de_DE.json b/apps/dashboard/l10n/de_DE.json index 9f901398ba7..37d81b81b31 100644 --- a/apps/dashboard/l10n/de_DE.json +++ b/apps/dashboard/l10n/de_DE.json @@ -22,9 +22,10 @@ "Hello" : "Hallo", "Hello, {name}" : "Hallo, {name}", "Pick from Files" : "Aus Dateien auswählen", - "Default images" : "Standardbilder", + "Default image" : "Standardbild", "Plain background" : "Einfacher Hintergrund", "Insert from {productName}" : "Von {productName} einfügen", - "Show something" : "Etwas anzeigen" + "Show something" : "Etwas anzeigen", + "Default images" : "Standardbild" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/el.js b/apps/dashboard/l10n/el.js index 99d0e2c57bd..61a1f5718ae 100644 --- a/apps/dashboard/l10n/el.js +++ b/apps/dashboard/l10n/el.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Γειά", "Hello, {name}" : "Γειά, {name}", "Pick from Files" : "Επιλέξτε από αρχεία", - "Default images" : "Προεπιλεγμένες εικόνες", "Plain background" : "Απλό παρασκήνιο", "Insert from {productName}" : "Εισαγωγή από {productName}", - "Show something" : "Δείξε οτιδήποτε" + "Show something" : "Δείξε οτιδήποτε", + "Default images" : "Προεπιλεγμένες εικόνες" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/el.json b/apps/dashboard/l10n/el.json index b9dac1c638d..4ba92f11776 100644 --- a/apps/dashboard/l10n/el.json +++ b/apps/dashboard/l10n/el.json @@ -22,9 +22,9 @@ "Hello" : "Γειά", "Hello, {name}" : "Γειά, {name}", "Pick from Files" : "Επιλέξτε από αρχεία", - "Default images" : "Προεπιλεγμένες εικόνες", "Plain background" : "Απλό παρασκήνιο", "Insert from {productName}" : "Εισαγωγή από {productName}", - "Show something" : "Δείξε οτιδήποτε" + "Show something" : "Δείξε οτιδήποτε", + "Default images" : "Προεπιλεγμένες εικόνες" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/es.js b/apps/dashboard/l10n/es.js index 4ac8098b636..3361f1bea9e 100644 --- a/apps/dashboard/l10n/es.js +++ b/apps/dashboard/l10n/es.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Hola", "Hello, {name}" : "Hola, {name}", "Pick from Files" : "Elegir de Archivos", - "Default images" : "Imágenes predeterminadas", "Plain background" : "Fondo liso", "Insert from {productName}" : "Insertar desde {productName}", - "Show something" : "Mostrar algo" + "Show something" : "Mostrar algo", + "Default images" : "Imágenes predeterminadas" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dashboard/l10n/es.json b/apps/dashboard/l10n/es.json index 36305f3d88b..7a555b7e9f5 100644 --- a/apps/dashboard/l10n/es.json +++ b/apps/dashboard/l10n/es.json @@ -22,9 +22,9 @@ "Hello" : "Hola", "Hello, {name}" : "Hola, {name}", "Pick from Files" : "Elegir de Archivos", - "Default images" : "Imágenes predeterminadas", "Plain background" : "Fondo liso", "Insert from {productName}" : "Insertar desde {productName}", - "Show something" : "Mostrar algo" + "Show something" : "Mostrar algo", + "Default images" : "Imágenes predeterminadas" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/eu.js b/apps/dashboard/l10n/eu.js index 8987e09a60c..10234bc3aea 100644 --- a/apps/dashboard/l10n/eu.js +++ b/apps/dashboard/l10n/eu.js @@ -24,9 +24,10 @@ OC.L10N.register( "Hello" : "Kaixo", "Hello, {name}" : "Kaixo, {name}", "Pick from Files" : "Hautatu fitxategietatik", - "Default images" : "Irudi lehenetsiak", + "Default image" : "Irudi lehenetsia", "Plain background" : "Atzeko plano arrunta", "Insert from {productName}" : "Txertatu hemendik: {productName}", - "Show something" : "Erakutsi zerbait" + "Show something" : "Erakutsi zerbait", + "Default images" : "Irudi lehenetsiak" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/eu.json b/apps/dashboard/l10n/eu.json index 2b81c3a2333..99ecc64748e 100644 --- a/apps/dashboard/l10n/eu.json +++ b/apps/dashboard/l10n/eu.json @@ -22,9 +22,10 @@ "Hello" : "Kaixo", "Hello, {name}" : "Kaixo, {name}", "Pick from Files" : "Hautatu fitxategietatik", - "Default images" : "Irudi lehenetsiak", + "Default image" : "Irudi lehenetsia", "Plain background" : "Atzeko plano arrunta", "Insert from {productName}" : "Txertatu hemendik: {productName}", - "Show something" : "Erakutsi zerbait" + "Show something" : "Erakutsi zerbait", + "Default images" : "Irudi lehenetsiak" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/fa.js b/apps/dashboard/l10n/fa.js index c38a42a3a89..fefea4b1207 100644 --- a/apps/dashboard/l10n/fa.js +++ b/apps/dashboard/l10n/fa.js @@ -9,6 +9,7 @@ OC.L10N.register( "Change background image" : "تغییر تصویر زمینه", "Weather service" : "سامانه هواشناسی", "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "برای حفظ حریم خصوصی شما، داده های آب و هوا توسط سرور نکستکلود شما از طرف شما درخواست می شود، بنابراین سرویس آب و هوا هیچ اطلاعات شخصی دریافت نمی کند.", + "Weather data from Met.no" : "اطلاعات هواشناسی از Met.no", "Weather" : "آب و هوا", "Status" : "وضعیت", "Good morning" : "صبح بخیر", @@ -19,10 +20,11 @@ OC.L10N.register( "Good evening, {name}" : "{name} عصرتان بخیر", "Hello" : "سلام", "Hello, {name}" : "سلام {name}", - "Pick from Files" : "از اسناد انتخاب کنید", - "Default images" : "تصاویر پیشفرض", + "Pick from Files" : "انتخاب از میان پروندهها", + "Default image" : "تصویر پیشفرض", "Plain background" : "تصویر زمینه ساده", "Insert from {productName}" : "درج از {productName}", - "Show something" : "نمایش چیزی" + "Show something" : "نمایش چیزی", + "Default images" : "تصاویر پیشفرض" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/dashboard/l10n/fa.json b/apps/dashboard/l10n/fa.json index 4a5f0793119..874a20b4697 100644 --- a/apps/dashboard/l10n/fa.json +++ b/apps/dashboard/l10n/fa.json @@ -7,6 +7,7 @@ "Change background image" : "تغییر تصویر زمینه", "Weather service" : "سامانه هواشناسی", "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "برای حفظ حریم خصوصی شما، داده های آب و هوا توسط سرور نکستکلود شما از طرف شما درخواست می شود، بنابراین سرویس آب و هوا هیچ اطلاعات شخصی دریافت نمی کند.", + "Weather data from Met.no" : "اطلاعات هواشناسی از Met.no", "Weather" : "آب و هوا", "Status" : "وضعیت", "Good morning" : "صبح بخیر", @@ -17,10 +18,11 @@ "Good evening, {name}" : "{name} عصرتان بخیر", "Hello" : "سلام", "Hello, {name}" : "سلام {name}", - "Pick from Files" : "از اسناد انتخاب کنید", - "Default images" : "تصاویر پیشفرض", + "Pick from Files" : "انتخاب از میان پروندهها", + "Default image" : "تصویر پیشفرض", "Plain background" : "تصویر زمینه ساده", "Insert from {productName}" : "درج از {productName}", - "Show something" : "نمایش چیزی" + "Show something" : "نمایش چیزی", + "Default images" : "تصاویر پیشفرض" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/fi.js b/apps/dashboard/l10n/fi.js index 35d2943cbff..6e02e5a2f9a 100644 --- a/apps/dashboard/l10n/fi.js +++ b/apps/dashboard/l10n/fi.js @@ -23,9 +23,10 @@ OC.L10N.register( "Hello" : "Hei", "Hello, {name}" : "Hei {name}", "Pick from Files" : "Valitse tiedostoista", - "Default images" : "Oletuskuvat", + "Default image" : "Oletuskuva", "Plain background" : "Yksinkertainen tausta", "Insert from {productName}" : "Aseta kohteesta {productName}", - "Show something" : "Näytä jotain" + "Show something" : "Näytä jotain", + "Default images" : "Oletuskuvat" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/fi.json b/apps/dashboard/l10n/fi.json index b78a983c280..822396adae5 100644 --- a/apps/dashboard/l10n/fi.json +++ b/apps/dashboard/l10n/fi.json @@ -21,9 +21,10 @@ "Hello" : "Hei", "Hello, {name}" : "Hei {name}", "Pick from Files" : "Valitse tiedostoista", - "Default images" : "Oletuskuvat", + "Default image" : "Oletuskuva", "Plain background" : "Yksinkertainen tausta", "Insert from {productName}" : "Aseta kohteesta {productName}", - "Show something" : "Näytä jotain" + "Show something" : "Näytä jotain", + "Default images" : "Oletuskuvat" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/fr.js b/apps/dashboard/l10n/fr.js index 7c23e6ff2dd..ab61bd16274 100644 --- a/apps/dashboard/l10n/fr.js +++ b/apps/dashboard/l10n/fr.js @@ -2,13 +2,13 @@ OC.L10N.register( "dashboard", { "Dashboard" : "Tableau de bord", - "Dashboard app" : "Application Tableau de bord", + "Dashboard app" : "App Tableau de bord", "Customize" : "Personnaliser", "Edit widgets" : "Modifier les widgets", - "Get more widgets from the App Store" : "Obtenez plus de widgets depuis le magasin d'applications", + "Get more widgets from the App Store" : "Obtenez plus de widgets depuis la Boutique d'applications", "Change background image" : "Modifier l’image d'arrière-plan", "Weather service" : "Service météo", - "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Pour votre vie privée, les données météorologiques sont demandées par votre serveur Nextcloud en votre nom afin que le service météo ne reçoive aucune information personnelle.", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Afin de protéger votre vie privée, les données météorologiques sont demandées par votre serveur Nextcloud à votre place afin que le service météo ne reçoive aucune information personnelle.", "Weather data from Met.no" : "Données météo fournies par Met.no", "geocoding with Nominatim" : "Géocodage avec Nominatim", "elevation data from OpenTopoData" : "Données d'altitude provenant d'OpenTopoData", @@ -17,15 +17,16 @@ OC.L10N.register( "Good morning" : "Bonjour", "Good morning, {name}" : "Bonjour {name}", "Good afternoon" : "Bon après-midi", - "Good afternoon, {name}" : "Bon après-midi, {name}", + "Good afternoon, {name}" : "Bon après-midi {name}", "Good evening" : "Bonsoir", "Good evening, {name}" : "Bonsoir {name}", "Hello" : "Bonjour", "Hello, {name}" : "Bonjour {name}", - "Pick from Files" : "Sélectionnez parmi les fichiers", - "Default images" : "Images par défaut", - "Plain background" : "Fond uni", - "Insert from {productName}" : "Insérer depuis {productName}", - "Show something" : "Montrer quelque chose" + "Pick from Files" : "Mes images", + "Default image" : "Image par défaut", + "Plain background" : "Arrière-plan uni", + "Insert from {productName}" : "Sélectionnez une image de {productName}", + "Show something" : "Afficher quelque chose", + "Default images" : "Images par défaut" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dashboard/l10n/fr.json b/apps/dashboard/l10n/fr.json index 57b0fefe8bf..79c0e59775b 100644 --- a/apps/dashboard/l10n/fr.json +++ b/apps/dashboard/l10n/fr.json @@ -1,12 +1,12 @@ { "translations": { "Dashboard" : "Tableau de bord", - "Dashboard app" : "Application Tableau de bord", + "Dashboard app" : "App Tableau de bord", "Customize" : "Personnaliser", "Edit widgets" : "Modifier les widgets", - "Get more widgets from the App Store" : "Obtenez plus de widgets depuis le magasin d'applications", + "Get more widgets from the App Store" : "Obtenez plus de widgets depuis la Boutique d'applications", "Change background image" : "Modifier l’image d'arrière-plan", "Weather service" : "Service météo", - "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Pour votre vie privée, les données météorologiques sont demandées par votre serveur Nextcloud en votre nom afin que le service météo ne reçoive aucune information personnelle.", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Afin de protéger votre vie privée, les données météorologiques sont demandées par votre serveur Nextcloud à votre place afin que le service météo ne reçoive aucune information personnelle.", "Weather data from Met.no" : "Données météo fournies par Met.no", "geocoding with Nominatim" : "Géocodage avec Nominatim", "elevation data from OpenTopoData" : "Données d'altitude provenant d'OpenTopoData", @@ -15,15 +15,16 @@ "Good morning" : "Bonjour", "Good morning, {name}" : "Bonjour {name}", "Good afternoon" : "Bon après-midi", - "Good afternoon, {name}" : "Bon après-midi, {name}", + "Good afternoon, {name}" : "Bon après-midi {name}", "Good evening" : "Bonsoir", "Good evening, {name}" : "Bonsoir {name}", "Hello" : "Bonjour", "Hello, {name}" : "Bonjour {name}", - "Pick from Files" : "Sélectionnez parmi les fichiers", - "Default images" : "Images par défaut", - "Plain background" : "Fond uni", - "Insert from {productName}" : "Insérer depuis {productName}", - "Show something" : "Montrer quelque chose" + "Pick from Files" : "Mes images", + "Default image" : "Image par défaut", + "Plain background" : "Arrière-plan uni", + "Insert from {productName}" : "Sélectionnez une image de {productName}", + "Show something" : "Afficher quelque chose", + "Default images" : "Images par défaut" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/gl.js b/apps/dashboard/l10n/gl.js index 2ef1ab106fb..119926afe75 100644 --- a/apps/dashboard/l10n/gl.js +++ b/apps/dashboard/l10n/gl.js @@ -22,9 +22,9 @@ OC.L10N.register( "Hello" : "Hello", "Hello, {name}" : "Ola, {name}", "Pick from Files" : "Escolla entre os ficheiros", - "Default images" : "Imaxes predeterminadas", "Plain background" : "Fondo sinxelo", "Insert from {productName}" : "Inserir dende {productName}", - "Show something" : "Amosar algo" + "Show something" : "Amosar algo", + "Default images" : "Imaxes predeterminadas" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/gl.json b/apps/dashboard/l10n/gl.json index 52a4ad3c8bf..1f00e5b2c76 100644 --- a/apps/dashboard/l10n/gl.json +++ b/apps/dashboard/l10n/gl.json @@ -20,9 +20,9 @@ "Hello" : "Hello", "Hello, {name}" : "Ola, {name}", "Pick from Files" : "Escolla entre os ficheiros", - "Default images" : "Imaxes predeterminadas", "Plain background" : "Fondo sinxelo", "Insert from {productName}" : "Inserir dende {productName}", - "Show something" : "Amosar algo" + "Show something" : "Amosar algo", + "Default images" : "Imaxes predeterminadas" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/he.js b/apps/dashboard/l10n/he.js index 3228c73b6a6..74311d1deee 100644 --- a/apps/dashboard/l10n/he.js +++ b/apps/dashboard/l10n/he.js @@ -22,9 +22,9 @@ OC.L10N.register( "Hello" : "שלום", "Hello, {name}" : "שלום, {name}", "Pick from Files" : "בחירה מקבצים", - "Default images" : "תמונות ברירת מחדל", "Plain background" : "רקע רגיל", "Insert from {productName}" : "הכנס מ-{productName}", - "Show something" : "תראה משהו" + "Show something" : "תראה משהו", + "Default images" : "תמונות ברירת מחדל" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/dashboard/l10n/he.json b/apps/dashboard/l10n/he.json index e3e1a155a8a..7763b32fe05 100644 --- a/apps/dashboard/l10n/he.json +++ b/apps/dashboard/l10n/he.json @@ -20,9 +20,9 @@ "Hello" : "שלום", "Hello, {name}" : "שלום, {name}", "Pick from Files" : "בחירה מקבצים", - "Default images" : "תמונות ברירת מחדל", "Plain background" : "רקע רגיל", "Insert from {productName}" : "הכנס מ-{productName}", - "Show something" : "תראה משהו" + "Show something" : "תראה משהו", + "Default images" : "תמונות ברירת מחדל" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/hr.js b/apps/dashboard/l10n/hr.js index fb71c5a96ea..a5cad4f4a91 100644 --- a/apps/dashboard/l10n/hr.js +++ b/apps/dashboard/l10n/hr.js @@ -23,9 +23,9 @@ OC.L10N.register( "Hello" : "Pozdrav", "Hello, {name}" : "Pozdrav, {name}", "Pick from Files" : "Odaberi iz datoteka", - "Default images" : "Zadane slike", "Plain background" : "Obična pozadina", "Insert from {productName}" : "Umetni iz {productName}", - "Show something" : "Prikaži nešto" + "Show something" : "Prikaži nešto", + "Default images" : "Zadane slike" }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/apps/dashboard/l10n/hr.json b/apps/dashboard/l10n/hr.json index e14e45819e0..f557307c8c7 100644 --- a/apps/dashboard/l10n/hr.json +++ b/apps/dashboard/l10n/hr.json @@ -21,9 +21,9 @@ "Hello" : "Pozdrav", "Hello, {name}" : "Pozdrav, {name}", "Pick from Files" : "Odaberi iz datoteka", - "Default images" : "Zadane slike", "Plain background" : "Obična pozadina", "Insert from {productName}" : "Umetni iz {productName}", - "Show something" : "Prikaži nešto" + "Show something" : "Prikaži nešto", + "Default images" : "Zadane slike" },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/hu.js b/apps/dashboard/l10n/hu.js index a8b8ec3fa7b..24aa34ec11d 100644 --- a/apps/dashboard/l10n/hu.js +++ b/apps/dashboard/l10n/hu.js @@ -24,9 +24,10 @@ OC.L10N.register( "Hello" : "Üdv", "Hello, {name}" : "Üdv {name}!", "Pick from Files" : "Választás a fájlok közül", - "Default images" : "Alapértelmezett képek", + "Default image" : "Alapértelmezett kép", "Plain background" : "Egyszerű háttér", "Insert from {productName}" : "Beillesztés innen: {productName}-", - "Show something" : "Mutasson valamit" + "Show something" : "Mutasson valamit", + "Default images" : "Alapértelmezett képek" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/hu.json b/apps/dashboard/l10n/hu.json index 69bb37a387a..4d058f8c98e 100644 --- a/apps/dashboard/l10n/hu.json +++ b/apps/dashboard/l10n/hu.json @@ -22,9 +22,10 @@ "Hello" : "Üdv", "Hello, {name}" : "Üdv {name}!", "Pick from Files" : "Választás a fájlok közül", - "Default images" : "Alapértelmezett képek", + "Default image" : "Alapértelmezett kép", "Plain background" : "Egyszerű háttér", "Insert from {productName}" : "Beillesztés innen: {productName}-", - "Show something" : "Mutasson valamit" + "Show something" : "Mutasson valamit", + "Default images" : "Alapértelmezett képek" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/id.js b/apps/dashboard/l10n/id.js index 5eb912602b1..262c0afddbf 100644 --- a/apps/dashboard/l10n/id.js +++ b/apps/dashboard/l10n/id.js @@ -23,9 +23,9 @@ OC.L10N.register( "Hello" : "Halo", "Hello, {name}" : "Halo, {name}", "Pick from Files" : "Pilih dari File", - "Default images" : "Gambar bawaan", "Plain background" : "Latar belakang polos", "Insert from {productName}" : "Sisipkan dari {productName}", - "Show something" : "Tunjukkan sesuatu" + "Show something" : "Tunjukkan sesuatu", + "Default images" : "Gambar bawaan" }, "nplurals=1; plural=0;"); diff --git a/apps/dashboard/l10n/id.json b/apps/dashboard/l10n/id.json index fbc0292a504..726f857e460 100644 --- a/apps/dashboard/l10n/id.json +++ b/apps/dashboard/l10n/id.json @@ -21,9 +21,9 @@ "Hello" : "Halo", "Hello, {name}" : "Halo, {name}", "Pick from Files" : "Pilih dari File", - "Default images" : "Gambar bawaan", "Plain background" : "Latar belakang polos", "Insert from {productName}" : "Sisipkan dari {productName}", - "Show something" : "Tunjukkan sesuatu" + "Show something" : "Tunjukkan sesuatu", + "Default images" : "Gambar bawaan" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/it.js b/apps/dashboard/l10n/it.js index 0c82e43db8b..b8f7793a79a 100644 --- a/apps/dashboard/l10n/it.js +++ b/apps/dashboard/l10n/it.js @@ -23,9 +23,9 @@ OC.L10N.register( "Hello" : "Ciao", "Hello, {name}" : "Ciao {name}", "Pick from Files" : "Scegli da File", - "Default images" : "Immagini predefinite", "Plain background" : "Sfondo semplice", "Insert from {productName}" : "Inserisci da {productName}", - "Show something" : "Mostra qualcosa" + "Show something" : "Mostra qualcosa", + "Default images" : "Immagini predefinite" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dashboard/l10n/it.json b/apps/dashboard/l10n/it.json index c5643d5c987..926ab87507e 100644 --- a/apps/dashboard/l10n/it.json +++ b/apps/dashboard/l10n/it.json @@ -21,9 +21,9 @@ "Hello" : "Ciao", "Hello, {name}" : "Ciao {name}", "Pick from Files" : "Scegli da File", - "Default images" : "Immagini predefinite", "Plain background" : "Sfondo semplice", "Insert from {productName}" : "Inserisci da {productName}", - "Show something" : "Mostra qualcosa" + "Show something" : "Mostra qualcosa", + "Default images" : "Immagini predefinite" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/ja.js b/apps/dashboard/l10n/ja.js index 3fe490ab0bd..8bbc9fe9dba 100644 --- a/apps/dashboard/l10n/ja.js +++ b/apps/dashboard/l10n/ja.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "こんにちは", "Hello, {name}" : "こんにちは、{name} さん", "Pick from Files" : "ファイルから選択", - "Default images" : "デフォルトの画像", "Plain background" : "シンプルな背景", "Insert from {productName}" : "{productName} から挿入", - "Show something" : "何か表示されます" + "Show something" : "何か表示されます", + "Default images" : "デフォルトの画像" }, "nplurals=1; plural=0;"); diff --git a/apps/dashboard/l10n/ja.json b/apps/dashboard/l10n/ja.json index afe2f2c7996..4e932ff4654 100644 --- a/apps/dashboard/l10n/ja.json +++ b/apps/dashboard/l10n/ja.json @@ -22,9 +22,9 @@ "Hello" : "こんにちは", "Hello, {name}" : "こんにちは、{name} さん", "Pick from Files" : "ファイルから選択", - "Default images" : "デフォルトの画像", "Plain background" : "シンプルな背景", "Insert from {productName}" : "{productName} から挿入", - "Show something" : "何か表示されます" + "Show something" : "何か表示されます", + "Default images" : "デフォルトの画像" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/ka_GE.js b/apps/dashboard/l10n/ka_GE.js index 1392cd51c1c..cee7501dc0b 100644 --- a/apps/dashboard/l10n/ka_GE.js +++ b/apps/dashboard/l10n/ka_GE.js @@ -20,9 +20,9 @@ OC.L10N.register( "Hello" : "გამარჯობა", "Hello, {name}" : "გამარჯობა, {name}", "Pick from Files" : "აირჩიე ფაილებიდან", - "Default images" : "საწყისი სურათები", "Plain background" : "ცარიელი ფონი", "Insert from {productName}" : "შეავსეთ {productName}-დან", - "Show something" : "აჩვენე რამე" + "Show something" : "აჩვენე რამე", + "Default images" : "საწყისი სურათები" }, "nplurals=2; plural=(n!=1);"); diff --git a/apps/dashboard/l10n/ka_GE.json b/apps/dashboard/l10n/ka_GE.json index 4c6592d6fa7..cc942d201e5 100644 --- a/apps/dashboard/l10n/ka_GE.json +++ b/apps/dashboard/l10n/ka_GE.json @@ -18,9 +18,9 @@ "Hello" : "გამარჯობა", "Hello, {name}" : "გამარჯობა, {name}", "Pick from Files" : "აირჩიე ფაილებიდან", - "Default images" : "საწყისი სურათები", "Plain background" : "ცარიელი ფონი", "Insert from {productName}" : "შეავსეთ {productName}-დან", - "Show something" : "აჩვენე რამე" + "Show something" : "აჩვენე რამე", + "Default images" : "საწყისი სურათები" },"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/ko.js b/apps/dashboard/l10n/ko.js index ec88d767f5b..0958224e263 100644 --- a/apps/dashboard/l10n/ko.js +++ b/apps/dashboard/l10n/ko.js @@ -22,8 +22,8 @@ OC.L10N.register( "Hello" : "안녕하세요", "Hello, {name}" : "{name} 님, 안녕하세요", "Pick from Files" : "파일로부터 선택", - "Default images" : "기본 이미지", "Plain background" : "일반 배경", - "Insert from {productName}" : "{productName}로부터 삽입" + "Insert from {productName}" : "{productName}로부터 삽입", + "Default images" : "기본 이미지" }, "nplurals=1; plural=0;"); diff --git a/apps/dashboard/l10n/ko.json b/apps/dashboard/l10n/ko.json index 6bbd796ead4..79f44d191fb 100644 --- a/apps/dashboard/l10n/ko.json +++ b/apps/dashboard/l10n/ko.json @@ -20,8 +20,8 @@ "Hello" : "안녕하세요", "Hello, {name}" : "{name} 님, 안녕하세요", "Pick from Files" : "파일로부터 선택", - "Default images" : "기본 이미지", "Plain background" : "일반 배경", - "Insert from {productName}" : "{productName}로부터 삽입" + "Insert from {productName}" : "{productName}로부터 삽입", + "Default images" : "기본 이미지" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/lt_LT.js b/apps/dashboard/l10n/lt_LT.js index dc8d24bbde5..3313e553d68 100644 --- a/apps/dashboard/l10n/lt_LT.js +++ b/apps/dashboard/l10n/lt_LT.js @@ -23,9 +23,10 @@ OC.L10N.register( "Hello" : "Sveiki", "Hello, {name}" : "Sveiki, {name},", "Pick from Files" : "Pasirinkti iš Failų", - "Default images" : "Numatytieji paveikslai", + "Default image" : "Numatytasis paveikslas", "Plain background" : "Vientisas fonas", "Insert from {productName}" : "Įterpti iš {productName}", - "Show something" : "Ką nors rodyti" + "Show something" : "Ką nors rodyti", + "Default images" : "Numatytieji paveikslai" }, "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/dashboard/l10n/lt_LT.json b/apps/dashboard/l10n/lt_LT.json index 61fb9ac8a95..b46bb284c7b 100644 --- a/apps/dashboard/l10n/lt_LT.json +++ b/apps/dashboard/l10n/lt_LT.json @@ -21,9 +21,10 @@ "Hello" : "Sveiki", "Hello, {name}" : "Sveiki, {name},", "Pick from Files" : "Pasirinkti iš Failų", - "Default images" : "Numatytieji paveikslai", + "Default image" : "Numatytasis paveikslas", "Plain background" : "Vientisas fonas", "Insert from {productName}" : "Įterpti iš {productName}", - "Show something" : "Ką nors rodyti" + "Show something" : "Ką nors rodyti", + "Default images" : "Numatytieji paveikslai" },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/mk.js b/apps/dashboard/l10n/mk.js index ce58e9ae40b..5b6e6b0fddd 100644 --- a/apps/dashboard/l10n/mk.js +++ b/apps/dashboard/l10n/mk.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Dashboard" : "Табла", "Dashboard app" : "Табла", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Започнете го денот информирано\n\nКонтролната табла на Nextcloud е вашата почетна точка на денот, што\nви дава преглед на вашите претстојни состаноци, итни е-пошта, пораки\nза разговор, дојдовни билети, најнови твитови и многу повеќе!\nКорисниците можат да додадат виџети им се допаѓа и ја менуваат\nпозадината по нивен вкус.", "Customize" : "Прилагоди", "Edit widgets" : "Уреди графички контроли", "Get more widgets from the App Store" : "Преземи повеќе графички контроли од продавницата со апликации", @@ -23,9 +24,9 @@ OC.L10N.register( "Hello" : "Здраво", "Hello, {name}" : "Здраво, {name}", "Pick from Files" : "Избери од датотеките", - "Default images" : "Стандардни слики", "Plain background" : "Обична позадина", "Insert from {productName}" : "Вметнни од {productName}", - "Show something" : "Прикажи нешто" + "Show something" : "Прикажи нешто", + "Default images" : "Стандардни слики" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/dashboard/l10n/mk.json b/apps/dashboard/l10n/mk.json index 55c7254d1a1..5b3442e2efb 100644 --- a/apps/dashboard/l10n/mk.json +++ b/apps/dashboard/l10n/mk.json @@ -1,6 +1,7 @@ { "translations": { "Dashboard" : "Табла", "Dashboard app" : "Табла", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Започнете го денот информирано\n\nКонтролната табла на Nextcloud е вашата почетна точка на денот, што\nви дава преглед на вашите претстојни состаноци, итни е-пошта, пораки\nза разговор, дојдовни билети, најнови твитови и многу повеќе!\nКорисниците можат да додадат виџети им се допаѓа и ја менуваат\nпозадината по нивен вкус.", "Customize" : "Прилагоди", "Edit widgets" : "Уреди графички контроли", "Get more widgets from the App Store" : "Преземи повеќе графички контроли од продавницата со апликации", @@ -21,9 +22,9 @@ "Hello" : "Здраво", "Hello, {name}" : "Здраво, {name}", "Pick from Files" : "Избери од датотеките", - "Default images" : "Стандардни слики", "Plain background" : "Обична позадина", "Insert from {productName}" : "Вметнни од {productName}", - "Show something" : "Прикажи нешто" + "Show something" : "Прикажи нешто", + "Default images" : "Стандардни слики" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/nb.js b/apps/dashboard/l10n/nb.js new file mode 100644 index 00000000000..ee88e2f920a --- /dev/null +++ b/apps/dashboard/l10n/nb.js @@ -0,0 +1,32 @@ +OC.L10N.register( + "dashboard", + { + "Dashboard" : "Instrumentpanel", + "Dashboard app" : "Instrumentpanel app", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Start dagen din informert \n\nNextcloud skrivebordet er starte punktet ditt for dagen, gir deg kommende møter, viktig email, chat-meldinger\ninnkommende biletter, seneste tweets og mye mer! Brukere kan legge til widgeter\nde liker og forandre bakgrunnen etter deres smak.", + "Customize" : "Tilpass", + "Edit widgets" : "Rediger widgets", + "Get more widgets from the App Store" : "Få flere widgets fra App Store", + "Change background image" : "Endre bakgrunnsbilde", + "Weather service" : "Værmelding", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Av hensyn til personvernet ditt blir værdataene bedt om av Nextcloud-serveren din på dine vegne, slik at værtjenesten ikke mottar personlig informasjon.", + "Weather data from Met.no" : "Værmelding fra Met.no", + "geocoding with Nominatim" : "geokoding med Nominatim", + "elevation data from OpenTopoData" : "høydedata fra OpenTopoData", + "Weather" : "Vær", + "Status" : "Status", + "Good morning" : "God morgen", + "Good morning, {name}" : "God morgen, {name}", + "Good afternoon" : "God ettermiddag", + "Good afternoon, {name}" : "Good ettermiddag, {name}", + "Good evening" : "God kveld", + "Good evening, {name}" : "God kveld, {name}", + "Hello" : "Hallo", + "Hello, {name}" : "Hallo, {name}", + "Pick from Files" : "Velg fra Filer", + "Plain background" : "Ensfarget bakgrunn", + "Insert from {productName}" : "Sett inn fra {productName}", + "Show something" : "Vis noe", + "Default images" : "Standardbilde" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/nb.json b/apps/dashboard/l10n/nb.json new file mode 100644 index 00000000000..6253450198d --- /dev/null +++ b/apps/dashboard/l10n/nb.json @@ -0,0 +1,30 @@ +{ "translations": { + "Dashboard" : "Instrumentpanel", + "Dashboard app" : "Instrumentpanel app", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Start dagen din informert \n\nNextcloud skrivebordet er starte punktet ditt for dagen, gir deg kommende møter, viktig email, chat-meldinger\ninnkommende biletter, seneste tweets og mye mer! Brukere kan legge til widgeter\nde liker og forandre bakgrunnen etter deres smak.", + "Customize" : "Tilpass", + "Edit widgets" : "Rediger widgets", + "Get more widgets from the App Store" : "Få flere widgets fra App Store", + "Change background image" : "Endre bakgrunnsbilde", + "Weather service" : "Værmelding", + "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Av hensyn til personvernet ditt blir værdataene bedt om av Nextcloud-serveren din på dine vegne, slik at værtjenesten ikke mottar personlig informasjon.", + "Weather data from Met.no" : "Værmelding fra Met.no", + "geocoding with Nominatim" : "geokoding med Nominatim", + "elevation data from OpenTopoData" : "høydedata fra OpenTopoData", + "Weather" : "Vær", + "Status" : "Status", + "Good morning" : "God morgen", + "Good morning, {name}" : "God morgen, {name}", + "Good afternoon" : "God ettermiddag", + "Good afternoon, {name}" : "Good ettermiddag, {name}", + "Good evening" : "God kveld", + "Good evening, {name}" : "God kveld, {name}", + "Hello" : "Hallo", + "Hello, {name}" : "Hallo, {name}", + "Pick from Files" : "Velg fra Filer", + "Plain background" : "Ensfarget bakgrunn", + "Insert from {productName}" : "Sett inn fra {productName}", + "Show something" : "Vis noe", + "Default images" : "Standardbilde" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/dashboard/l10n/nl.js b/apps/dashboard/l10n/nl.js index a2712247071..06f1ce25225 100644 --- a/apps/dashboard/l10n/nl.js +++ b/apps/dashboard/l10n/nl.js @@ -23,9 +23,9 @@ OC.L10N.register( "Hello" : "Hallo", "Hello, {name}" : "Hallo, {name}", "Pick from Files" : "Kies uit Bestanden", - "Default images" : "Standaardafbeeldingen", "Plain background" : "Kale achtergrond", "Insert from {productName}" : "Invoegen vanuit {productName}", - "Show something" : "Toon iets" + "Show something" : "Toon iets", + "Default images" : "Standaardafbeeldingen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/nl.json b/apps/dashboard/l10n/nl.json index 7e76f68d926..7ecd5f0b3ac 100644 --- a/apps/dashboard/l10n/nl.json +++ b/apps/dashboard/l10n/nl.json @@ -21,9 +21,9 @@ "Hello" : "Hallo", "Hello, {name}" : "Hallo, {name}", "Pick from Files" : "Kies uit Bestanden", - "Default images" : "Standaardafbeeldingen", "Plain background" : "Kale achtergrond", "Insert from {productName}" : "Invoegen vanuit {productName}", - "Show something" : "Toon iets" + "Show something" : "Toon iets", + "Default images" : "Standaardafbeeldingen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/oc.js b/apps/dashboard/l10n/oc.js index 255961cf75c..5ad45768ecb 100644 --- a/apps/dashboard/l10n/oc.js +++ b/apps/dashboard/l10n/oc.js @@ -21,8 +21,8 @@ OC.L10N.register( "Good evening, {name}" : "Bonser, {name}", "Hello" : "Adieu", "Hello, {name}" : "Adieu, {name}", - "Default images" : "Imatges per defaut", "Plain background" : "Fons unit", - "Show something" : "Mostrar quicòm" + "Show something" : "Mostrar quicòm", + "Default images" : "Imatges per defaut" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/dashboard/l10n/oc.json b/apps/dashboard/l10n/oc.json index 9a62c204b23..c6077ab347c 100644 --- a/apps/dashboard/l10n/oc.json +++ b/apps/dashboard/l10n/oc.json @@ -19,8 +19,8 @@ "Good evening, {name}" : "Bonser, {name}", "Hello" : "Adieu", "Hello, {name}" : "Adieu, {name}", - "Default images" : "Imatges per defaut", "Plain background" : "Fons unit", - "Show something" : "Mostrar quicòm" + "Show something" : "Mostrar quicòm", + "Default images" : "Imatges per defaut" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/pl.js b/apps/dashboard/l10n/pl.js index 53595587df7..004554ae020 100644 --- a/apps/dashboard/l10n/pl.js +++ b/apps/dashboard/l10n/pl.js @@ -24,9 +24,10 @@ OC.L10N.register( "Hello" : "Witaj", "Hello, {name}" : "Witaj, {name}", "Pick from Files" : "Wybierz z Plików", - "Default images" : "Obrazy domyślne", + "Default image" : "Obraz domyślny", "Plain background" : "Zwykłe tło", "Insert from {productName}" : "Wstaw z {productName}", - "Show something" : "Pokaż coś" + "Show something" : "Pokaż coś", + "Default images" : "Obrazy domyślne" }, "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/dashboard/l10n/pl.json b/apps/dashboard/l10n/pl.json index 79280cd879b..d99b387efdc 100644 --- a/apps/dashboard/l10n/pl.json +++ b/apps/dashboard/l10n/pl.json @@ -22,9 +22,10 @@ "Hello" : "Witaj", "Hello, {name}" : "Witaj, {name}", "Pick from Files" : "Wybierz z Plików", - "Default images" : "Obrazy domyślne", + "Default image" : "Obraz domyślny", "Plain background" : "Zwykłe tło", "Insert from {productName}" : "Wstaw z {productName}", - "Show something" : "Pokaż coś" + "Show something" : "Pokaż coś", + "Default images" : "Obrazy domyślne" },"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/dashboard/l10n/pt_BR.js b/apps/dashboard/l10n/pt_BR.js index c947cba67cb..db4f2b99fad 100644 --- a/apps/dashboard/l10n/pt_BR.js +++ b/apps/dashboard/l10n/pt_BR.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Olá", "Hello, {name}" : "Olá, {name}", "Pick from Files" : "Escolher de Arquivos", - "Default images" : "Imagens padrão", "Plain background" : "Fundo simples", "Insert from {productName}" : "Inserir de {productName}", - "Show something" : "Mostrar alguma coisa" + "Show something" : "Mostrar alguma coisa", + "Default images" : "Imagens padrão" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dashboard/l10n/pt_BR.json b/apps/dashboard/l10n/pt_BR.json index 4d831cf4df0..d08ab288d85 100644 --- a/apps/dashboard/l10n/pt_BR.json +++ b/apps/dashboard/l10n/pt_BR.json @@ -22,9 +22,9 @@ "Hello" : "Olá", "Hello, {name}" : "Olá, {name}", "Pick from Files" : "Escolher de Arquivos", - "Default images" : "Imagens padrão", "Plain background" : "Fundo simples", "Insert from {productName}" : "Inserir de {productName}", - "Show something" : "Mostrar alguma coisa" + "Show something" : "Mostrar alguma coisa", + "Default images" : "Imagens padrão" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/pt_PT.js b/apps/dashboard/l10n/pt_PT.js index 6410058b610..a24cdf01104 100644 --- a/apps/dashboard/l10n/pt_PT.js +++ b/apps/dashboard/l10n/pt_PT.js @@ -22,9 +22,9 @@ OC.L10N.register( "Hello" : "Olá", "Hello, {name}" : "Olá, {name}", "Pick from Files" : "Escolha a partir dos Ficheiros", - "Default images" : "Imagens predefinidas", "Plain background" : "Fundo simples", "Insert from {productName}" : "Inserir de {productName}", - "Show something" : "Mostrar algo" + "Show something" : "Mostrar algo", + "Default images" : "Imagens predefinidas" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/dashboard/l10n/pt_PT.json b/apps/dashboard/l10n/pt_PT.json index f0a5aea4eca..226d1534203 100644 --- a/apps/dashboard/l10n/pt_PT.json +++ b/apps/dashboard/l10n/pt_PT.json @@ -20,9 +20,9 @@ "Hello" : "Olá", "Hello, {name}" : "Olá, {name}", "Pick from Files" : "Escolha a partir dos Ficheiros", - "Default images" : "Imagens predefinidas", "Plain background" : "Fundo simples", "Insert from {productName}" : "Inserir de {productName}", - "Show something" : "Mostrar algo" + "Show something" : "Mostrar algo", + "Default images" : "Imagens predefinidas" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/ro.js b/apps/dashboard/l10n/ro.js index c3716430422..c517c9f4793 100644 --- a/apps/dashboard/l10n/ro.js +++ b/apps/dashboard/l10n/ro.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Bună", "Hello, {name}" : "Bună, {name}", "Pick from Files" : "Alege din Fișiere", - "Default images" : "Imagini implicite", "Plain background" : "Fundal simplu", "Insert from {productName}" : "Introduce din {productName}", - "Show something" : "Arată ceva" + "Show something" : "Arată ceva", + "Default images" : "Imagini implicite" }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/dashboard/l10n/ro.json b/apps/dashboard/l10n/ro.json index 98ef3671d91..c6addb56d46 100644 --- a/apps/dashboard/l10n/ro.json +++ b/apps/dashboard/l10n/ro.json @@ -22,9 +22,9 @@ "Hello" : "Bună", "Hello, {name}" : "Bună, {name}", "Pick from Files" : "Alege din Fișiere", - "Default images" : "Imagini implicite", "Plain background" : "Fundal simplu", "Insert from {productName}" : "Introduce din {productName}", - "Show something" : "Arată ceva" + "Show something" : "Arată ceva", + "Default images" : "Imagini implicite" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/ru.js b/apps/dashboard/l10n/ru.js index 3735ceea873..602da918a5c 100644 --- a/apps/dashboard/l10n/ru.js +++ b/apps/dashboard/l10n/ru.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Здравствуйте", "Hello, {name}" : "Здравствуйте, {name}!", "Pick from Files" : "Выбрать из файлов", - "Default images" : "Изображения по умолчанию", "Plain background" : "Обычный фон", "Insert from {productName}" : "Вставить из {productName}", - "Show something" : "Показать" + "Show something" : "Показать", + "Default images" : "Изображения по умолчанию" }, "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/dashboard/l10n/ru.json b/apps/dashboard/l10n/ru.json index 38f93527cfa..d90b60888ac 100644 --- a/apps/dashboard/l10n/ru.json +++ b/apps/dashboard/l10n/ru.json @@ -22,9 +22,9 @@ "Hello" : "Здравствуйте", "Hello, {name}" : "Здравствуйте, {name}!", "Pick from Files" : "Выбрать из файлов", - "Default images" : "Изображения по умолчанию", "Plain background" : "Обычный фон", "Insert from {productName}" : "Вставить из {productName}", - "Show something" : "Показать" + "Show something" : "Показать", + "Default images" : "Изображения по умолчанию" },"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/dashboard/l10n/sc.js b/apps/dashboard/l10n/sc.js index 55329074a42..3bd840b88a1 100644 --- a/apps/dashboard/l10n/sc.js +++ b/apps/dashboard/l10n/sc.js @@ -23,9 +23,9 @@ OC.L10N.register( "Hello" : "Salude", "Hello, {name}" : "Salude, {name}", "Pick from Files" : "Sèbera dae archìvios", - "Default images" : "Imàgines predefinidas", "Plain background" : "Isfundu simpre", "Insert from {productName}" : "Inserta dae {productName}", - "Show something" : "Mustra calicuna cosa" + "Show something" : "Mustra calicuna cosa", + "Default images" : "Imàgines predefinidas" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/sc.json b/apps/dashboard/l10n/sc.json index e40b1dae991..82d12a8b664 100644 --- a/apps/dashboard/l10n/sc.json +++ b/apps/dashboard/l10n/sc.json @@ -21,9 +21,9 @@ "Hello" : "Salude", "Hello, {name}" : "Salude, {name}", "Pick from Files" : "Sèbera dae archìvios", - "Default images" : "Imàgines predefinidas", "Plain background" : "Isfundu simpre", "Insert from {productName}" : "Inserta dae {productName}", - "Show something" : "Mustra calicuna cosa" + "Show something" : "Mustra calicuna cosa", + "Default images" : "Imàgines predefinidas" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/sk.js b/apps/dashboard/l10n/sk.js index 204ad0c06ad..8b413f079ef 100644 --- a/apps/dashboard/l10n/sk.js +++ b/apps/dashboard/l10n/sk.js @@ -24,9 +24,9 @@ OC.L10N.register( "Hello" : "Ahoj", "Hello, {name}" : "Ahoj, {name}", "Pick from Files" : "Vybrať zo súborov", - "Default images" : "Predvolené obrázky", "Plain background" : "Obyčajné pozadie", "Insert from {productName}" : "Vložiť z {productName}", - "Show something" : "Ukáž niečo" + "Show something" : "Ukáž niečo", + "Default images" : "Predvolené obrázky" }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/dashboard/l10n/sk.json b/apps/dashboard/l10n/sk.json index 1763114c516..b8effa24bf0 100644 --- a/apps/dashboard/l10n/sk.json +++ b/apps/dashboard/l10n/sk.json @@ -22,9 +22,9 @@ "Hello" : "Ahoj", "Hello, {name}" : "Ahoj, {name}", "Pick from Files" : "Vybrať zo súborov", - "Default images" : "Predvolené obrázky", "Plain background" : "Obyčajné pozadie", "Insert from {productName}" : "Vložiť z {productName}", - "Show something" : "Ukáž niečo" + "Show something" : "Ukáž niečo", + "Default images" : "Predvolené obrázky" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/sl.js b/apps/dashboard/l10n/sl.js index 6fc3c88f16c..13e8c88b4f9 100644 --- a/apps/dashboard/l10n/sl.js +++ b/apps/dashboard/l10n/sl.js @@ -22,9 +22,9 @@ OC.L10N.register( "Hello" : "Pozdravljeni", "Hello, {name}" : "Pozdravljeni, {name}", "Pick from Files" : "Izbor iz datotek", - "Default images" : "Privzete slike", "Plain background" : "Enostavno ozadje", "Insert from {productName}" : "Vstavi iz {productName}", - "Show something" : "Pokaži karkoli" + "Show something" : "Pokaži karkoli", + "Default images" : "Privzete slike" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/dashboard/l10n/sl.json b/apps/dashboard/l10n/sl.json index 59af42f6408..f6cc62a791f 100644 --- a/apps/dashboard/l10n/sl.json +++ b/apps/dashboard/l10n/sl.json @@ -20,9 +20,9 @@ "Hello" : "Pozdravljeni", "Hello, {name}" : "Pozdravljeni, {name}", "Pick from Files" : "Izbor iz datotek", - "Default images" : "Privzete slike", "Plain background" : "Enostavno ozadje", "Insert from {productName}" : "Vstavi iz {productName}", - "Show something" : "Pokaži karkoli" + "Show something" : "Pokaži karkoli", + "Default images" : "Privzete slike" },"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/dashboard/l10n/sv.js b/apps/dashboard/l10n/sv.js index 757f5b22e4e..6981d09de53 100644 --- a/apps/dashboard/l10n/sv.js +++ b/apps/dashboard/l10n/sv.js @@ -23,9 +23,9 @@ OC.L10N.register( "Hello" : "Hej", "Hello, {name}" : "Hej, {name}", "Pick from Files" : "Välj från filer", - "Default images" : "Standardbilder", "Plain background" : "Enkel bakgrund", "Insert from {productName}" : "Infoga från {productName}", - "Show something" : "Visa någonting" + "Show something" : "Visa någonting", + "Default images" : "Standardbilder" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/dashboard/l10n/sv.json b/apps/dashboard/l10n/sv.json index 463c9887a25..88b1f9c6c7a 100644 --- a/apps/dashboard/l10n/sv.json +++ b/apps/dashboard/l10n/sv.json @@ -21,9 +21,9 @@ "Hello" : "Hej", "Hello, {name}" : "Hej, {name}", "Pick from Files" : "Välj från filer", - "Default images" : "Standardbilder", "Plain background" : "Enkel bakgrund", "Insert from {productName}" : "Infoga från {productName}", - "Show something" : "Visa någonting" + "Show something" : "Visa någonting", + "Default images" : "Standardbilder" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/th.js b/apps/dashboard/l10n/th.js index 8df932fd230..d2e9d7e6013 100644 --- a/apps/dashboard/l10n/th.js +++ b/apps/dashboard/l10n/th.js @@ -23,9 +23,9 @@ OC.L10N.register( "Hello" : "สวัสดี", "Hello, {name}" : "สวัสดี {name}", "Pick from Files" : "เลือกจากไฟล์", - "Default images" : "รูปภาพเริ่มต้น", "Plain background" : "พื้นหลังเปล่า", "Insert from {productName}" : "แทรกจาก {productName}", - "Show something" : "แสดงบางอย่าง" + "Show something" : "แสดงบางอย่าง", + "Default images" : "รูปภาพเริ่มต้น" }, "nplurals=1; plural=0;"); diff --git a/apps/dashboard/l10n/th.json b/apps/dashboard/l10n/th.json index d61df56f77e..a7303b1b011 100644 --- a/apps/dashboard/l10n/th.json +++ b/apps/dashboard/l10n/th.json @@ -21,9 +21,9 @@ "Hello" : "สวัสดี", "Hello, {name}" : "สวัสดี {name}", "Pick from Files" : "เลือกจากไฟล์", - "Default images" : "รูปภาพเริ่มต้น", "Plain background" : "พื้นหลังเปล่า", "Insert from {productName}" : "แทรกจาก {productName}", - "Show something" : "แสดงบางอย่าง" + "Show something" : "แสดงบางอย่าง", + "Default images" : "รูปภาพเริ่มต้น" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/tr.js b/apps/dashboard/l10n/tr.js index c4dc25dad4c..868e21f3be3 100644 --- a/apps/dashboard/l10n/tr.js +++ b/apps/dashboard/l10n/tr.js @@ -24,9 +24,10 @@ OC.L10N.register( "Hello" : "Merhaba", "Hello, {name}" : "Merhaba {name}", "Pick from Files" : "Dosyalardan seçin", - "Default images" : "Varsayılan görseller", + "Default image" : "Varsayılan görsel", "Plain background" : "Düz arka plan", "Insert from {productName}" : "{productName} üzerinden ekle", - "Show something" : "Bir şeyler görüntüle" + "Show something" : "Bir şeyler görüntüle", + "Default images" : "Varsayılan görseller" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/dashboard/l10n/tr.json b/apps/dashboard/l10n/tr.json index c53a63609bf..dd581c77384 100644 --- a/apps/dashboard/l10n/tr.json +++ b/apps/dashboard/l10n/tr.json @@ -22,9 +22,10 @@ "Hello" : "Merhaba", "Hello, {name}" : "Merhaba {name}", "Pick from Files" : "Dosyalardan seçin", - "Default images" : "Varsayılan görseller", + "Default image" : "Varsayılan görsel", "Plain background" : "Düz arka plan", "Insert from {productName}" : "{productName} üzerinden ekle", - "Show something" : "Bir şeyler görüntüle" + "Show something" : "Bir şeyler görüntüle", + "Default images" : "Varsayılan görseller" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/zh_CN.js b/apps/dashboard/l10n/zh_CN.js index b80315cf984..d208eb33d25 100644 --- a/apps/dashboard/l10n/zh_CN.js +++ b/apps/dashboard/l10n/zh_CN.js @@ -23,9 +23,9 @@ OC.L10N.register( "Hello" : "你好", "Hello, {name}" : "你好, {name}", "Pick from Files" : "从文件中挑选", - "Default images" : "默认图片", "Plain background" : "纯色背景", "Insert from {productName}" : "从 {productName} 插入", - "Show something" : "显示信息" + "Show something" : "显示信息", + "Default images" : "默认图片" }, "nplurals=1; plural=0;"); diff --git a/apps/dashboard/l10n/zh_CN.json b/apps/dashboard/l10n/zh_CN.json index 21474404d07..84c49c87e1e 100644 --- a/apps/dashboard/l10n/zh_CN.json +++ b/apps/dashboard/l10n/zh_CN.json @@ -21,9 +21,9 @@ "Hello" : "你好", "Hello, {name}" : "你好, {name}", "Pick from Files" : "从文件中挑选", - "Default images" : "默认图片", "Plain background" : "纯色背景", "Insert from {productName}" : "从 {productName} 插入", - "Show something" : "显示信息" + "Show something" : "显示信息", + "Default images" : "默认图片" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/zh_HK.js b/apps/dashboard/l10n/zh_HK.js index 9369ad746f7..5be60458c59 100644 --- a/apps/dashboard/l10n/zh_HK.js +++ b/apps/dashboard/l10n/zh_HK.js @@ -24,9 +24,10 @@ OC.L10N.register( "Hello" : "哈囉", "Hello, {name}" : "哈囉,{name}", "Pick from Files" : "從檔案選取", - "Default images" : "默認圖像", + "Default image" : "默認圖像", "Plain background" : "簡單背景", "Insert from {productName}" : "插入自 {productName}", - "Show something" : "顯示一些東西" + "Show something" : "顯示一些東西", + "Default images" : "默認圖像" }, "nplurals=1; plural=0;"); diff --git a/apps/dashboard/l10n/zh_HK.json b/apps/dashboard/l10n/zh_HK.json index df6bf1b3d8b..306f7fff1f4 100644 --- a/apps/dashboard/l10n/zh_HK.json +++ b/apps/dashboard/l10n/zh_HK.json @@ -22,9 +22,10 @@ "Hello" : "哈囉", "Hello, {name}" : "哈囉,{name}", "Pick from Files" : "從檔案選取", - "Default images" : "默認圖像", + "Default image" : "默認圖像", "Plain background" : "簡單背景", "Insert from {productName}" : "插入自 {productName}", - "Show something" : "顯示一些東西" + "Show something" : "顯示一些東西", + "Default images" : "默認圖像" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/zh_TW.js b/apps/dashboard/l10n/zh_TW.js index fc1d52625b1..07daf5fce48 100644 --- a/apps/dashboard/l10n/zh_TW.js +++ b/apps/dashboard/l10n/zh_TW.js @@ -24,9 +24,10 @@ OC.L10N.register( "Hello" : "嗨", "Hello, {name}" : "嗨,{name}", "Pick from Files" : "從檔案選取", - "Default images" : "預設圖片", + "Default image" : "預設影像", "Plain background" : "簡單背景", "Insert from {productName}" : "插入自 {productName}", - "Show something" : "顯示一些東西" + "Show something" : "顯示一些東西", + "Default images" : "預設圖片" }, "nplurals=1; plural=0;"); diff --git a/apps/dashboard/l10n/zh_TW.json b/apps/dashboard/l10n/zh_TW.json index 940d1c42857..eaeb0030f4c 100644 --- a/apps/dashboard/l10n/zh_TW.json +++ b/apps/dashboard/l10n/zh_TW.json @@ -22,9 +22,10 @@ "Hello" : "嗨", "Hello, {name}" : "嗨,{name}", "Pick from Files" : "從檔案選取", - "Default images" : "預設圖片", + "Default image" : "預設影像", "Plain background" : "簡單背景", "Insert from {productName}" : "插入自 {productName}", - "Show something" : "顯示一些東西" + "Show something" : "顯示一些東西", + "Default images" : "預設圖片" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dashboard/src/DashboardApp.vue b/apps/dashboard/src/DashboardApp.vue index c9e73d9d146..883da90c992 100644 --- a/apps/dashboard/src/DashboardApp.vue +++ b/apps/dashboard/src/DashboardApp.vue @@ -1,5 +1,5 @@ <template> - <div id="app-dashboard" :style="backgroundStyle"> + <div id="app-dashboard"> <h2>{{ greeting.text }}</h2> <ul class="statuses"> <div v-for="status in sortedRegisteredStatus" @@ -28,15 +28,15 @@ </Draggable> <div class="footer"> - <Button @click="showModal"> + <NcButton @click="showModal"> <template #icon> <Pencil :size="20" /> </template> {{ t('dashboard', 'Customize') }} - </Button> + </NcButton> </div> - <Modal v-if="modal" size="large" @close="closeModal"> + <NcModal v-if="modal" size="large" @close="closeModal"> <div class="modal__content"> <h3>{{ t('dashboard', 'Edit widgets') }}</h3> <ol class="panels"> @@ -88,7 +88,7 @@ <a href="https://www.opentopodata.org/#public-api" target="_blank" rel="noopener">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>. </p> </div> - </Modal> + </NcModal> </div> </template> @@ -97,9 +97,9 @@ import { generateUrl } from '@nextcloud/router' import { getCurrentUser } from '@nextcloud/auth' import { loadState } from '@nextcloud/initial-state' import axios from '@nextcloud/axios' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' import Draggable from 'vuedraggable' -import Modal from '@nextcloud/vue/dist/Components/Modal' +import NcModal from '@nextcloud/vue/dist/Components/NcModal' import Pencil from 'vue-material-design-icons/Pencil.vue' import Vue from 'vue' @@ -129,9 +129,9 @@ export default { name: 'DashboardApp', components: { BackgroundSettings, - Button, + NcButton, Draggable, - Modal, + NcModal, Pencil, }, mixins: [ @@ -170,8 +170,9 @@ export default { || this.background.match(/#[0-9A-Fa-f]{6}/g)) { return null } + return { - backgroundImage: `url(${this.backgroundImage})`, + backgroundImage: this.background === 'default' ? 'var(--image-main-background)' : `url('${this.backgroundImage}')`, } }, @@ -364,10 +365,18 @@ export default { if (isBackgroundBright) { document.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'invert(100%)') document.querySelector('#header').style.setProperty('--color-primary-text', '#000000') + // document.body.removeAttribute('data-theme-dark') + // document.body.setAttribute('data-theme-light', 'true') } else { - document.querySelector('#header').style.removeProperty('--primary-invert-if-bright') - document.querySelector('#header').style.removeProperty('--color-primary-text') + document.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'no') + document.querySelector('#header').style.setProperty('--color-primary-text', '#ffffff') + // document.body.removeAttribute('data-theme-light') + // document.body.setAttribute('data-theme-dark', 'true') } + + document.documentElement.style.setProperty('--image-main-background', this.backgroundStyle.backgroundImage) + document.querySelector('#header').style.setProperty('--image-main-background', this.backgroundStyle.backgroundImage) + document.querySelector('body').style.setProperty('--image-main-background', this.backgroundStyle.backgroundImage) }, updateSkipLink() { // Make sure "Skip to main content" link points to the app content @@ -425,9 +434,6 @@ export default { background-position: center center; background-repeat: no-repeat; background-attachment: fixed; - background-color: var(--color-primary); - --color-background-translucent: rgba(var(--color-main-background-rgb), 0.8); - --background-blur: blur(10px); > h2 { color: var(--color-primary-text); @@ -453,9 +459,9 @@ export default { width: 320px; max-width: 100%; margin: 16px; - background-color: var(--color-background-translucent); - -webkit-backdrop-filter: var(--background-blur); - backdrop-filter: var(--background-blur); + background-color: var(--color-main-background-blur); + -webkit-backdrop-filter: var(--filter-background-blur); + backdrop-filter: var(--filter-background-blur); border-radius: var(--border-radius-large); #body-user.theme--highcontrast & { @@ -511,7 +517,6 @@ export default { margin-right: 16px; background-position: center; float: left; - filter: var(--background-invert-if-dark); } } } @@ -552,13 +557,13 @@ export default { } .button, -.button-vue +.button-vue, .edit-panels, .statuses ::v-deep .action-item .action-item__menutoggle, .statuses ::v-deep .action-item.action-item--open .action-item__menutoggle { - background-color: var(--color-background-translucent); - -webkit-backdrop-filter: var(--background-blur); - backdrop-filter: var(--background-blur); + background-color: var(--color-main-background-blur); + -webkit-backdrop-filter: var(--filter-background-blur); + backdrop-filter: var(--filter-background-blur); opacity: 1 !important; &:hover, @@ -677,3 +682,21 @@ export default { } } </style> +<style> +html, body { + overflow: auto; + position: static; + height: auto; + background-attachment: fixed; +} + +#body-user #header { + position: fixed; +} + +#content { + height: auto; + overflow: auto; + position: static !important;; +} +</style> diff --git a/apps/dashboard/src/components/BackgroundSettings.vue b/apps/dashboard/src/components/BackgroundSettings.vue index 3fd82768267..101ecaaa742 100644 --- a/apps/dashboard/src/components/BackgroundSettings.vue +++ b/apps/dashboard/src/components/BackgroundSettings.vue @@ -32,7 +32,7 @@ tabindex="0" :class="{ 'icon-loading': loading === 'default', active: background === 'default' }" @click="setDefault"> - {{ t('dashboard', 'Default images') }} + {{ t('dashboard', 'Default image') }} </button> <button class="background color" :class="{ active: background === 'custom' }" diff --git a/apps/dashboard/src/helpers/getBackgroundUrl.js b/apps/dashboard/src/helpers/getBackgroundUrl.js index 194e5e59885..4876fa77e86 100644 --- a/apps/dashboard/src/helpers/getBackgroundUrl.js +++ b/apps/dashboard/src/helpers/getBackgroundUrl.js @@ -26,8 +26,10 @@ import { generateUrl } from '@nextcloud/router' import prefixWithBaseUrl from './prefixWithBaseUrl' export default (background, time = 0, themingDefaultBackground = '') => { - const enabledThemes = window.OCA.Theming.enabledThemes - const isDarkTheme = enabledThemes.join('').indexOf('dark') !== -1 + const enabledThemes = window.OCA?.Theming?.enabledThemes || [] + const isDarkTheme = (enabledThemes.length === 0 || enabledThemes[0] === 'default') + ? window.matchMedia('(prefers-color-scheme: dark)').matches + : enabledThemes.join('').indexOf('dark') !== -1 if (background === 'default') { if (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') { diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php index 389461f94b1..409fbbcf4a7 100644 --- a/apps/dav/appinfo/v1/publicwebdav.php +++ b/apps/dav/appinfo/v1/publicwebdav.php @@ -98,7 +98,7 @@ $server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, funct $fileInfo = $ownerView->getFileInfo($path); $linkCheckPlugin->setFileInfo($fileInfo); - // If not readble (files_drop) enable the filesdrop plugin + // If not readable (files_drop) enable the filesdrop plugin if (!$isReadable) { $filesDropPlugin->enable(); } diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index b01ae68e43a..d3290c4e792 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -191,6 +191,7 @@ return array( 'OCA\\DAV\\DAV\\Sharing\\Xml\\Invite' => $baseDir . '/../lib/DAV/Sharing/Xml/Invite.php', 'OCA\\DAV\\DAV\\Sharing\\Xml\\ShareRequest' => $baseDir . '/../lib/DAV/Sharing/Xml/ShareRequest.php', 'OCA\\DAV\\DAV\\SystemPrincipalBackend' => $baseDir . '/../lib/DAV/SystemPrincipalBackend.php', + 'OCA\\DAV\\DAV\\ViewOnlyPlugin' => $baseDir . '/../lib/DAV/ViewOnlyPlugin.php', 'OCA\\DAV\\Db\\Direct' => $baseDir . '/../lib/Db/Direct.php', 'OCA\\DAV\\Db\\DirectMapper' => $baseDir . '/../lib/Db/DirectMapper.php', 'OCA\\DAV\\Direct\\DirectFile' => $baseDir . '/../lib/Direct/DirectFile.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index 4c9a1dcc793..4d425f70f3b 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -206,6 +206,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\DAV\\Sharing\\Xml\\Invite' => __DIR__ . '/..' . '/../lib/DAV/Sharing/Xml/Invite.php', 'OCA\\DAV\\DAV\\Sharing\\Xml\\ShareRequest' => __DIR__ . '/..' . '/../lib/DAV/Sharing/Xml/ShareRequest.php', 'OCA\\DAV\\DAV\\SystemPrincipalBackend' => __DIR__ . '/..' . '/../lib/DAV/SystemPrincipalBackend.php', + 'OCA\\DAV\\DAV\\ViewOnlyPlugin' => __DIR__ . '/..' . '/../lib/DAV/ViewOnlyPlugin.php', 'OCA\\DAV\\Db\\Direct' => __DIR__ . '/..' . '/../lib/Db/Direct.php', 'OCA\\DAV\\Db\\DirectMapper' => __DIR__ . '/..' . '/../lib/Db/DirectMapper.php', 'OCA\\DAV\\Direct\\DirectFile' => __DIR__ . '/..' . '/../lib/Direct/DirectFile.php', diff --git a/apps/dav/composer/composer/installed.php b/apps/dav/composer/composer/installed.php index 628db5d793b..c54b7ff5437 100644 --- a/apps/dav/composer/composer/installed.php +++ b/apps/dav/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '9586920c0ec4016864a2219e838fb272127822d8', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '9586920c0ec4016864a2219e838fb272127822d8', 'dev_requirement' => false, ), ), diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js index f15065305a6..5bd83c3b256 100644 --- a/apps/dav/l10n/cs.js +++ b/apps/dav/l10n/cs.js @@ -84,7 +84,7 @@ OC.L10N.register( "Organizer:" : "Organizátor:", "Attendees:" : "Účastníci:", "Accept" : "Přijmout", - "Decline" : "Zamítnout", + "Decline" : "Odmítnout", "More options …" : "Další volby…", "More options at %s" : "Další volby viz %s", "Contacts" : "Kontakty", @@ -165,7 +165,7 @@ OC.L10N.register( "Saved availability" : "Uložena dostupnost", "Failed to save availability" : "Nepodařilo se uložit dostupnost", "Calendar server" : "Kalendářový server", - "Send invitations to attendees" : "Poslat pozvánky na adresy účastníků", + "Send invitations to attendees" : "Poslat účastníkům pozvánky", "Automatically generate a birthday calendar" : "Automaticky vytvořit kalendář s narozeninami", "Birthday calendars will be generated by a background job." : "Kalendáře s narozeninami budou vytvářeny úlohou na pozadí.", "Hence they will not be available immediately after enabling but will show up after some time." : "A tedy nebudou zpřístupněny ihned po povolení, ale objeví se až se zpožděním.", diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json index 91635a5353f..a43434e59c9 100644 --- a/apps/dav/l10n/cs.json +++ b/apps/dav/l10n/cs.json @@ -82,7 +82,7 @@ "Organizer:" : "Organizátor:", "Attendees:" : "Účastníci:", "Accept" : "Přijmout", - "Decline" : "Zamítnout", + "Decline" : "Odmítnout", "More options …" : "Další volby…", "More options at %s" : "Další volby viz %s", "Contacts" : "Kontakty", @@ -163,7 +163,7 @@ "Saved availability" : "Uložena dostupnost", "Failed to save availability" : "Nepodařilo se uložit dostupnost", "Calendar server" : "Kalendářový server", - "Send invitations to attendees" : "Poslat pozvánky na adresy účastníků", + "Send invitations to attendees" : "Poslat účastníkům pozvánky", "Automatically generate a birthday calendar" : "Automaticky vytvořit kalendář s narozeninami", "Birthday calendars will be generated by a background job." : "Kalendáře s narozeninami budou vytvářeny úlohou na pozadí.", "Hence they will not be available immediately after enabling but will show up after some time." : "A tedy nebudou zpřístupněny ihned po povolení, ale objeví se až se zpožděním.", diff --git a/apps/dav/l10n/da.js b/apps/dav/l10n/da.js index 0018b8f7947..987589d0c29 100644 --- a/apps/dav/l10n/da.js +++ b/apps/dav/l10n/da.js @@ -71,10 +71,12 @@ OC.L10N.register( "System is in maintenance mode." : "Systemet er i vedligeholdelsestilstand.", "Upgrade needed" : "Opgradering er nødvendig", "Tasks" : "Opgaver", + "Untitled task" : "Unavngivet opgave", "Contacts and groups" : "Kontakter og grupper", "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV endpoint", "to" : "til", + "Delete slot" : "Slet slot", "Monday" : "Mandag", "Tuesday" : "Tirsdag", "Wednesday" : "Onsdag", diff --git a/apps/dav/l10n/da.json b/apps/dav/l10n/da.json index aa71d4631af..2ee6c850cd4 100644 --- a/apps/dav/l10n/da.json +++ b/apps/dav/l10n/da.json @@ -69,10 +69,12 @@ "System is in maintenance mode." : "Systemet er i vedligeholdelsestilstand.", "Upgrade needed" : "Opgradering er nødvendig", "Tasks" : "Opgaver", + "Untitled task" : "Unavngivet opgave", "Contacts and groups" : "Kontakter og grupper", "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV endpoint", "to" : "til", + "Delete slot" : "Slet slot", "Monday" : "Mandag", "Tuesday" : "Tirsdag", "Wednesday" : "Onsdag", diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js index 98e15bafb03..8ef546786b9 100644 --- a/apps/dav/l10n/de.js +++ b/apps/dav/l10n/de.js @@ -14,10 +14,10 @@ OC.L10N.register( "You restored calendar {calendar}" : "Du hast den Kalender {calendar} wiederhergestellt", "You shared calendar {calendar} as public link" : "Du hast den Kalender {calendar} als öffentlichen Link geteilt", "You removed public link for calendar {calendar}" : "Du hast den öffentlichen Link für Kalender {calendar} entfernt", - "{actor} shared calendar {calendar} with you" : "{actor} hat den Kalender {calendar} mit Dir geteilt", + "{actor} shared calendar {calendar} with you" : "{actor} hat den Kalender {calendar} mit dir geteilt", "You shared calendar {calendar} with {user}" : "Du hast den Kalender {calendar} mit {user} geteilt", "{actor} shared calendar {calendar} with {user}" : "{actor} hat den Kalender {calendar} mit {user} geteilt", - "{actor} unshared calendar {calendar} from you" : "{actor} teilt den Kalender {calendar} nicht mehr mit Dir", + "{actor} unshared calendar {calendar} from you" : "{actor} teilt den Kalender {calendar} nicht mehr mit dir", "You unshared calendar {calendar} from {user}" : "Du teilst den Kalender {calendar} nicht mehr mit {user}", "{actor} unshared calendar {calendar} from {user}" : "{actor} teilt den Kalender {calendar} nicht mehr mit {user}", "{actor} unshared calendar {calendar} from themselves" : "{actor} teilt den Kalender {calendar} nicht mehr mit sich selbst", @@ -25,7 +25,7 @@ OC.L10N.register( "{actor} shared calendar {calendar} with group {group}" : "{actor} teilt den Kalender {calendar} mit der Gruppe {group}", "You unshared calendar {calendar} from group {group}" : "Du teilst den Kalender {calendar} nicht mehr mit der Gruppe {group}", "{actor} unshared calendar {calendar} from group {group}" : "{actor} teilt den Kalender {calendar} nicht mehr mit der Gruppe {group}", - "Untitled event" : "Termin ohne Titel", + "Untitled event" : "Unbenannter Termin", "{actor} created event {event} in calendar {calendar}" : "{actor} hat den Termin {event} im Kalender {calendar} erstellt", "You created event {event} in calendar {calendar}" : "Du hast den Termin {event} im Kalender {calendar} erstellt", "{actor} deleted event {event} from calendar {calendar}" : "{actor} hat den Termin {event} im Kalender {calendar} gelöscht", @@ -34,7 +34,7 @@ OC.L10N.register( "You updated event {event} in calendar {calendar}" : "Du hast den Termin {event} im Kalender {calendar} aktualisiert", "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} hat das Ereignis {event} vom Kalender {sourceCalendar} in den Kalender {targetCalendar} verschoben", "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Du hast das Ereignis {event} vom Kalender {sourceCalendar} in den Kalender {targetCalendar} verschoben", - "{actor} restored event {event} of calendar {calendar}" : "{actor} hat das Adressbuch {addressbook} mit Dir geteilt", + "{actor} restored event {event} of calendar {calendar}" : "{actor} hat das Adressbuch {addressbook} mit dir geteilt", "You restored event {event} of calendar {calendar}" : "Du hast den Termin {event} im Kalender {calendar} wiederhergestellt", "Busy" : "Beschäftigt", "{actor} created to-do {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erstellt", @@ -94,13 +94,13 @@ OC.L10N.register( "You deleted address book {addressbook}" : "Du hast das Adressbuch {addressbook} gelöscht", "{actor} updated address book {addressbook}" : "{actor} hat das Adressbuch {addressbook} aktualisiert", "You updated address book {addressbook}" : "Du hast das Adressbuch {addressbook} aktualisiert", - "{actor} shared address book {addressbook} with you" : "{actor} hat das Adressbuch {addressbook} mit Dir geteilt", + "{actor} shared address book {addressbook} with you" : "{actor} hat das Adressbuch {addressbook} mit dir geteilt", "You shared address book {addressbook} with {user}" : "Du hast das Adressbuch {addressbook} geteilt", "{actor} shared address book {addressbook} with {user}" : "{actor} hat das Adressbuch {addressbook} mit {user} geteilt", - "{actor} unshared address book {addressbook} from you" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit Dir", + "{actor} unshared address book {addressbook} from you" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit dir.", "You unshared address book {addressbook} from {user}" : "Du teilst das Adressbuch {addressbook} nicht mehr mit {user}", "{actor} unshared address book {addressbook} from {user}" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit {user}", - "{actor} unshared address book {addressbook} from themselves" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit Dir", + "{actor} unshared address book {addressbook} from themselves" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit dir.", "You shared address book {addressbook} with group {group}" : "Du hast das Adressbuch {addressbook} mit der Gruppe {group} geteilt", "{actor} shared address book {addressbook} with group {group}" : "{actor} hat das Adressbuch {addressbook} mit der Gruppe {group} geteilt", "You unshared address book {addressbook} from group {group}" : "Du teilst das Adressbuch {addressbook} nicht mehr mit der Gruppe {group}", @@ -146,7 +146,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV-Endpunkt", "Availability" : "Verfügbarkeit", - "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Wenn Du Deine Arbeitszeiten konfigurierst, können andere Benutzer sehen, wann Du nicht im Büro bist, wenn sie eine Besprechung buchen.", + "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten konfigurierst, können andere Benutzer sehen, wann du nicht im Büro bist, wenn sie eine Besprechung buchen.", "Time zone:" : "Zeitzone:", "to" : "an", "Delete slot" : "Slot löschen", @@ -159,7 +159,7 @@ OC.L10N.register( "Friday" : "Freitag", "Saturday" : "Samstag", "Sunday" : "Sonntag", - "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setze den Benutzerstatus automatisch auf „Nicht stören“, wenn Du nicht erreichbar bist, um alle Benachrichtigungen stumm zu schalten.", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setze den Benutzerstatus automatisch auf „Nicht stören“, wenn du nicht erreichbar bist, um alle Benachrichtigungen stumm zu schalten.", "Save" : "Speichern", "Failed to load availability" : "Fehler beim Laden der Verfügbarkeit", "Saved availability" : "Verfügbarkeit gespeichert", @@ -174,9 +174,9 @@ OC.L10N.register( "Send reminder notifications to calendar sharees as well" : "Erinnerungsbenachrichtigungen auch an die freigegebenen Kalender senden", "Reminders are always sent to organizers and attendees." : "Erinnerungen werden immer an Organisatoren und Teilnehmer gesendet.", "Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren", - "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installiere außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinde Deinen Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.", - "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stelle sicher, dass Du {emailopen}den E-Mail Server{linkclose} ordnungsgemäß einrichtest.", - "There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren Deines Teilnehmerstatus aufgetreten.", + "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installiere außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinde deinen Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.", + "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stelle sicher, dass du {emailopen}den E-Mail Server{linkclose} ordnungsgemäß einrichtest.", + "There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren deines Teilnehmerstatus aufgetreten.", "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", "Are you accepting the invitation?" : "Die Einladung annehmen?", "Tentative" : "Vorläufig", diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json index 5712276fe83..6791282df44 100644 --- a/apps/dav/l10n/de.json +++ b/apps/dav/l10n/de.json @@ -12,10 +12,10 @@ "You restored calendar {calendar}" : "Du hast den Kalender {calendar} wiederhergestellt", "You shared calendar {calendar} as public link" : "Du hast den Kalender {calendar} als öffentlichen Link geteilt", "You removed public link for calendar {calendar}" : "Du hast den öffentlichen Link für Kalender {calendar} entfernt", - "{actor} shared calendar {calendar} with you" : "{actor} hat den Kalender {calendar} mit Dir geteilt", + "{actor} shared calendar {calendar} with you" : "{actor} hat den Kalender {calendar} mit dir geteilt", "You shared calendar {calendar} with {user}" : "Du hast den Kalender {calendar} mit {user} geteilt", "{actor} shared calendar {calendar} with {user}" : "{actor} hat den Kalender {calendar} mit {user} geteilt", - "{actor} unshared calendar {calendar} from you" : "{actor} teilt den Kalender {calendar} nicht mehr mit Dir", + "{actor} unshared calendar {calendar} from you" : "{actor} teilt den Kalender {calendar} nicht mehr mit dir", "You unshared calendar {calendar} from {user}" : "Du teilst den Kalender {calendar} nicht mehr mit {user}", "{actor} unshared calendar {calendar} from {user}" : "{actor} teilt den Kalender {calendar} nicht mehr mit {user}", "{actor} unshared calendar {calendar} from themselves" : "{actor} teilt den Kalender {calendar} nicht mehr mit sich selbst", @@ -23,7 +23,7 @@ "{actor} shared calendar {calendar} with group {group}" : "{actor} teilt den Kalender {calendar} mit der Gruppe {group}", "You unshared calendar {calendar} from group {group}" : "Du teilst den Kalender {calendar} nicht mehr mit der Gruppe {group}", "{actor} unshared calendar {calendar} from group {group}" : "{actor} teilt den Kalender {calendar} nicht mehr mit der Gruppe {group}", - "Untitled event" : "Termin ohne Titel", + "Untitled event" : "Unbenannter Termin", "{actor} created event {event} in calendar {calendar}" : "{actor} hat den Termin {event} im Kalender {calendar} erstellt", "You created event {event} in calendar {calendar}" : "Du hast den Termin {event} im Kalender {calendar} erstellt", "{actor} deleted event {event} from calendar {calendar}" : "{actor} hat den Termin {event} im Kalender {calendar} gelöscht", @@ -32,7 +32,7 @@ "You updated event {event} in calendar {calendar}" : "Du hast den Termin {event} im Kalender {calendar} aktualisiert", "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} hat das Ereignis {event} vom Kalender {sourceCalendar} in den Kalender {targetCalendar} verschoben", "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Du hast das Ereignis {event} vom Kalender {sourceCalendar} in den Kalender {targetCalendar} verschoben", - "{actor} restored event {event} of calendar {calendar}" : "{actor} hat das Adressbuch {addressbook} mit Dir geteilt", + "{actor} restored event {event} of calendar {calendar}" : "{actor} hat das Adressbuch {addressbook} mit dir geteilt", "You restored event {event} of calendar {calendar}" : "Du hast den Termin {event} im Kalender {calendar} wiederhergestellt", "Busy" : "Beschäftigt", "{actor} created to-do {todo} in list {calendar}" : "{actor} hat die Aufgabe {todo} in der Liste {calendar} erstellt", @@ -92,13 +92,13 @@ "You deleted address book {addressbook}" : "Du hast das Adressbuch {addressbook} gelöscht", "{actor} updated address book {addressbook}" : "{actor} hat das Adressbuch {addressbook} aktualisiert", "You updated address book {addressbook}" : "Du hast das Adressbuch {addressbook} aktualisiert", - "{actor} shared address book {addressbook} with you" : "{actor} hat das Adressbuch {addressbook} mit Dir geteilt", + "{actor} shared address book {addressbook} with you" : "{actor} hat das Adressbuch {addressbook} mit dir geteilt", "You shared address book {addressbook} with {user}" : "Du hast das Adressbuch {addressbook} geteilt", "{actor} shared address book {addressbook} with {user}" : "{actor} hat das Adressbuch {addressbook} mit {user} geteilt", - "{actor} unshared address book {addressbook} from you" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit Dir", + "{actor} unshared address book {addressbook} from you" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit dir.", "You unshared address book {addressbook} from {user}" : "Du teilst das Adressbuch {addressbook} nicht mehr mit {user}", "{actor} unshared address book {addressbook} from {user}" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit {user}", - "{actor} unshared address book {addressbook} from themselves" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit Dir", + "{actor} unshared address book {addressbook} from themselves" : "{actor} teilt das Adressbuch {addressbook} nicht mehr mit dir.", "You shared address book {addressbook} with group {group}" : "Du hast das Adressbuch {addressbook} mit der Gruppe {group} geteilt", "{actor} shared address book {addressbook} with group {group}" : "{actor} hat das Adressbuch {addressbook} mit der Gruppe {group} geteilt", "You unshared address book {addressbook} from group {group}" : "Du teilst das Adressbuch {addressbook} nicht mehr mit der Gruppe {group}", @@ -144,7 +144,7 @@ "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV-Endpunkt", "Availability" : "Verfügbarkeit", - "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Wenn Du Deine Arbeitszeiten konfigurierst, können andere Benutzer sehen, wann Du nicht im Büro bist, wenn sie eine Besprechung buchen.", + "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten konfigurierst, können andere Benutzer sehen, wann du nicht im Büro bist, wenn sie eine Besprechung buchen.", "Time zone:" : "Zeitzone:", "to" : "an", "Delete slot" : "Slot löschen", @@ -157,7 +157,7 @@ "Friday" : "Freitag", "Saturday" : "Samstag", "Sunday" : "Sonntag", - "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setze den Benutzerstatus automatisch auf „Nicht stören“, wenn Du nicht erreichbar bist, um alle Benachrichtigungen stumm zu schalten.", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setze den Benutzerstatus automatisch auf „Nicht stören“, wenn du nicht erreichbar bist, um alle Benachrichtigungen stumm zu schalten.", "Save" : "Speichern", "Failed to load availability" : "Fehler beim Laden der Verfügbarkeit", "Saved availability" : "Verfügbarkeit gespeichert", @@ -172,9 +172,9 @@ "Send reminder notifications to calendar sharees as well" : "Erinnerungsbenachrichtigungen auch an die freigegebenen Kalender senden", "Reminders are always sent to organizers and attendees." : "Erinnerungen werden immer an Organisatoren und Teilnehmer gesendet.", "Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren", - "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installiere außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinde Deinen Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.", - "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stelle sicher, dass Du {emailopen}den E-Mail Server{linkclose} ordnungsgemäß einrichtest.", - "There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren Deines Teilnehmerstatus aufgetreten.", + "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installiere außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinde deinen Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.", + "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stelle sicher, dass du {emailopen}den E-Mail Server{linkclose} ordnungsgemäß einrichtest.", + "There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren deines Teilnehmerstatus aufgetreten.", "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", "Are you accepting the invitation?" : "Die Einladung annehmen?", "Tentative" : "Vorläufig", diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js index 2a39b390d40..dc6194cec85 100644 --- a/apps/dav/l10n/de_DE.js +++ b/apps/dav/l10n/de_DE.js @@ -25,7 +25,7 @@ OC.L10N.register( "{actor} shared calendar {calendar} with group {group}" : "{actor} teilt den Kalender {calendar} mit der Gruppe {group}", "You unshared calendar {calendar} from group {group}" : "Sie teilen den Kalender {calendar} nicht mehr mit der Gruppe {group}", "{actor} unshared calendar {calendar} from group {group}" : "{actor} teilt den Kalender {calendar} nicht mehr mit der Gruppe {group}", - "Untitled event" : "Termin ohne Titel", + "Untitled event" : "Unbenannter Termin", "{actor} created event {event} in calendar {calendar}" : "{actor} hat den Termin {event} im Kalender {calendar} erstellt", "You created event {event} in calendar {calendar}" : "Sie haben den Termin {event} im Kalender {calendar} erstellt", "{actor} deleted event {event} from calendar {calendar}" : "{actor} hat den Termin {event} im Kalender {calendar} gelöscht", diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json index c264ef62fde..ad9454490e6 100644 --- a/apps/dav/l10n/de_DE.json +++ b/apps/dav/l10n/de_DE.json @@ -23,7 +23,7 @@ "{actor} shared calendar {calendar} with group {group}" : "{actor} teilt den Kalender {calendar} mit der Gruppe {group}", "You unshared calendar {calendar} from group {group}" : "Sie teilen den Kalender {calendar} nicht mehr mit der Gruppe {group}", "{actor} unshared calendar {calendar} from group {group}" : "{actor} teilt den Kalender {calendar} nicht mehr mit der Gruppe {group}", - "Untitled event" : "Termin ohne Titel", + "Untitled event" : "Unbenannter Termin", "{actor} created event {event} in calendar {calendar}" : "{actor} hat den Termin {event} im Kalender {calendar} erstellt", "You created event {event} in calendar {calendar}" : "Sie haben den Termin {event} im Kalender {calendar} erstellt", "{actor} deleted event {event} from calendar {calendar}" : "{actor} hat den Termin {event} im Kalender {calendar} gelöscht", diff --git a/apps/dav/l10n/fi.js b/apps/dav/l10n/fi.js index ac1dc646a9b..a8a70f08b89 100644 --- a/apps/dav/l10n/fi.js +++ b/apps/dav/l10n/fi.js @@ -51,6 +51,7 @@ OC.L10N.register( "Date: %s" : "Päiväys: %s", "Description: %s" : "Kuvaus: %s", "Where: %s" : "Missä: %s", + "%1$s via %2$s" : "%1$s palvelun %2$s kautta", "Cancelled: %1$s" : "Peruutettu: %1$s", "Invitation canceled" : "Kutsu peruttu", "Invitation updated" : "Kutsu päivitetty", diff --git a/apps/dav/l10n/fi.json b/apps/dav/l10n/fi.json index 2f3691370ea..d8e6f00713b 100644 --- a/apps/dav/l10n/fi.json +++ b/apps/dav/l10n/fi.json @@ -49,6 +49,7 @@ "Date: %s" : "Päiväys: %s", "Description: %s" : "Kuvaus: %s", "Where: %s" : "Missä: %s", + "%1$s via %2$s" : "%1$s palvelun %2$s kautta", "Cancelled: %1$s" : "Peruutettu: %1$s", "Invitation canceled" : "Kutsu peruttu", "Invitation updated" : "Kutsu päivitetty", diff --git a/apps/dav/l10n/is.js b/apps/dav/l10n/is.js index 9d16ae97f91..676b58c83ee 100644 --- a/apps/dav/l10n/is.js +++ b/apps/dav/l10n/is.js @@ -51,6 +51,7 @@ OC.L10N.register( "%1$s via %2$s" : "%1$s með %2$s", "Invitation canceled" : "Hætt við boð", "Invitation updated" : "Boð uppfært", + "Time:" : "Tími:", "Location:" : "Staðsetning:", "Link:" : "Tengill:", "Accept" : "Samþykkja", @@ -66,6 +67,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV-endapunktur", "to" : "til", + "Delete slot" : "Eyða tímahólfi", "Monday" : "Mánudagur", "Tuesday" : "Þriðjudagur", "Wednesday" : "Miðvikudagur", diff --git a/apps/dav/l10n/is.json b/apps/dav/l10n/is.json index 29ba35dc18c..a5a5ac796a4 100644 --- a/apps/dav/l10n/is.json +++ b/apps/dav/l10n/is.json @@ -49,6 +49,7 @@ "%1$s via %2$s" : "%1$s með %2$s", "Invitation canceled" : "Hætt við boð", "Invitation updated" : "Boð uppfært", + "Time:" : "Tími:", "Location:" : "Staðsetning:", "Link:" : "Tengill:", "Accept" : "Samþykkja", @@ -64,6 +65,7 @@ "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV-endapunktur", "to" : "til", + "Delete slot" : "Eyða tímahólfi", "Monday" : "Mánudagur", "Tuesday" : "Þriðjudagur", "Wednesday" : "Miðvikudagur", diff --git a/apps/dav/l10n/mk.js b/apps/dav/l10n/mk.js index 6072a407445..fe16669120e 100644 --- a/apps/dav/l10n/mk.js +++ b/apps/dav/l10n/mk.js @@ -9,6 +9,8 @@ OC.L10N.register( "You deleted calendar {calendar}" : "Избришавте календар {calendar}", "{actor} updated calendar {calendar}" : "{actor} ажурираше календар {calendar}", "You updated calendar {calendar}" : "Ажуриравте календар {calendar}", + "{actor} restored calendar {calendar}" : "{actor} врати календар {calendar}", + "You restored calendar {calendar}" : "Вративте календар {calendar}", "You shared calendar {calendar} as public link" : "Споделивте календар {calendar} како јавен линк", "You removed public link for calendar {calendar}" : "Отстранивте јавен линк за календар {calendar}", "{actor} shared calendar {calendar} with you" : "{actor} сподели календар {calendar} со вас", @@ -29,12 +31,27 @@ OC.L10N.register( "You deleted event {event} from calendar {calendar}" : "Избришавте настан {event} од календар {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} ажурираше настан {event} во календар {calendar}", "You updated event {event} in calendar {calendar}" : "Ажуриравте настан {event} во календар {calendar}", + "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} премести настан {event} од календар {sourceCalendar} во календар {targetCalendar}", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Преместивте настан {event} од календар {sourceCalendar} во календар {targetCalendar}", "{actor} restored event {event} of calendar {calendar}" : "{actor} врати настан {event} во календарот {calendar}", "You restored event {event} of calendar {calendar}" : "Вративте настан {event} во календарот {calendar}", "Busy" : "Зафатен", + "{actor} created to-do {todo} in list {calendar}" : "{actor} креираше задолжение {todo} во листата {calendar}", + "You created to-do {todo} in list {calendar}" : "Креиравте задолжение {todo} во листата {calendar}", + "{actor} deleted to-do {todo} from list {calendar}" : "{actor} избриша задолжение {todo} од листата {calendar}", + "You deleted to-do {todo} from list {calendar}" : "Избришавте задолжение {todo} од листата {calendar}", + "{actor} updated to-do {todo} in list {calendar}" : "{actor} ажурираше задолжение {todo} во листата {calendar}", + "You updated to-do {todo} in list {calendar}" : "Ажуриравте задолжение {todo} во листата {calendar}", + "{actor} solved to-do {todo} in list {calendar}" : "{actor} го заврши задолжението {todo} во листата {calendar}", + "You solved to-do {todo} in list {calendar}" : "Го завршивте задолжението {todo} во листата {calendar}", + "{actor} reopened to-do {todo} in list {calendar}" : "{actor} повторно го отвори задолжението {todo} во листата {calendar}", + "You reopened to-do {todo} in list {calendar}" : "Повторно го отворивте задолжението {todo} во листата {calendar}", + "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} премести задолжение {todo} од листа {sourceCalendar} во листа {targetCalendar}", + "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Преместивте задолжение {todo} од листа {sourceCalendar} во листа {targetCalendar}", "Calendar, contacts and tasks" : "Календар, контакти и задачи", "A <strong>calendar</strong> was modified" : "<strong>Календарот</strong> е променет", "A calendar <strong>event</strong> was modified" : "Изменет е <strong>настан</strong> во календарот", + "A calendar <strong>to-do</strong> was modified" : "Изменета е <strong>задача</strong> во календарот", "Contact birthdays" : "Родендени на контактите", "Death of %s" : "Смрт на %s", "Calendar:" : "Календар:", @@ -70,7 +87,22 @@ OC.L10N.register( "More options …" : "Повеќе опции ...", "More options at %s" : "Повеќе опции на %s", "Contacts" : "Контакти", + "{actor} created address book {addressbook}" : "{actor} креираше адресар {addressbook}", + "You created address book {addressbook}" : "Креиравте адресар {addressbook}", + "{actor} deleted address book {addressbook}" : "{actor} избриша адресар {addressbook}", + "You deleted address book {addressbook}" : "Избришавте адресар {addressbook}", + "{actor} updated address book {addressbook}" : "{actor} ажурирање адресар {addressbook}", + "You updated address book {addressbook}" : "Ажуриравте {addressbook}", + "{actor} shared address book {addressbook} with you" : "{actor} сподели адресар {addressbook} со вас", + "You shared address book {addressbook} with {user}" : "Споделивте адресар {addressbook} со {user}", + "{actor} shared address book {addressbook} with {user}" : "{actor} сподели адресар {addressbook} со {user}", + "{actor} unshared address book {addressbook} from you" : "{actor} не го споделува адресар {addressbook} со вас", + "You unshared address book {addressbook} from {user}" : "Не го споделиувате адресар {addressbook} со {user}", + "{actor} unshared address book {addressbook} from {user}" : "{actor} не го споделува адресар {addressbook} со {user}", + "{actor} unshared address book {addressbook} from themselves" : "{actor} не го споделува адресар {addressbook} со себе", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контракт</strong> или <strong>адресар</strong> е променет", + "_%n byte_::_%n bytes_" : ["%n бајт","%n бајти"], + "File not found: %1$s" : "Датотеката не е пронајдена: %1$s", "System is in maintenance mode." : "Системот е во мод за одржување.", "Upgrade needed" : "Потребна е надградба", "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Вашиот %s треба да биде конфигуриран за да користи HTTPS за да може да се користи CalDAV и CardDAV на iOS/macOS.", diff --git a/apps/dav/l10n/mk.json b/apps/dav/l10n/mk.json index 71629f18fe7..7a179fab5a7 100644 --- a/apps/dav/l10n/mk.json +++ b/apps/dav/l10n/mk.json @@ -7,6 +7,8 @@ "You deleted calendar {calendar}" : "Избришавте календар {calendar}", "{actor} updated calendar {calendar}" : "{actor} ажурираше календар {calendar}", "You updated calendar {calendar}" : "Ажуриравте календар {calendar}", + "{actor} restored calendar {calendar}" : "{actor} врати календар {calendar}", + "You restored calendar {calendar}" : "Вративте календар {calendar}", "You shared calendar {calendar} as public link" : "Споделивте календар {calendar} како јавен линк", "You removed public link for calendar {calendar}" : "Отстранивте јавен линк за календар {calendar}", "{actor} shared calendar {calendar} with you" : "{actor} сподели календар {calendar} со вас", @@ -27,12 +29,27 @@ "You deleted event {event} from calendar {calendar}" : "Избришавте настан {event} од календар {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} ажурираше настан {event} во календар {calendar}", "You updated event {event} in calendar {calendar}" : "Ажуриравте настан {event} во календар {calendar}", + "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} премести настан {event} од календар {sourceCalendar} во календар {targetCalendar}", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Преместивте настан {event} од календар {sourceCalendar} во календар {targetCalendar}", "{actor} restored event {event} of calendar {calendar}" : "{actor} врати настан {event} во календарот {calendar}", "You restored event {event} of calendar {calendar}" : "Вративте настан {event} во календарот {calendar}", "Busy" : "Зафатен", + "{actor} created to-do {todo} in list {calendar}" : "{actor} креираше задолжение {todo} во листата {calendar}", + "You created to-do {todo} in list {calendar}" : "Креиравте задолжение {todo} во листата {calendar}", + "{actor} deleted to-do {todo} from list {calendar}" : "{actor} избриша задолжение {todo} од листата {calendar}", + "You deleted to-do {todo} from list {calendar}" : "Избришавте задолжение {todo} од листата {calendar}", + "{actor} updated to-do {todo} in list {calendar}" : "{actor} ажурираше задолжение {todo} во листата {calendar}", + "You updated to-do {todo} in list {calendar}" : "Ажуриравте задолжение {todo} во листата {calendar}", + "{actor} solved to-do {todo} in list {calendar}" : "{actor} го заврши задолжението {todo} во листата {calendar}", + "You solved to-do {todo} in list {calendar}" : "Го завршивте задолжението {todo} во листата {calendar}", + "{actor} reopened to-do {todo} in list {calendar}" : "{actor} повторно го отвори задолжението {todo} во листата {calendar}", + "You reopened to-do {todo} in list {calendar}" : "Повторно го отворивте задолжението {todo} во листата {calendar}", + "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} премести задолжение {todo} од листа {sourceCalendar} во листа {targetCalendar}", + "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Преместивте задолжение {todo} од листа {sourceCalendar} во листа {targetCalendar}", "Calendar, contacts and tasks" : "Календар, контакти и задачи", "A <strong>calendar</strong> was modified" : "<strong>Календарот</strong> е променет", "A calendar <strong>event</strong> was modified" : "Изменет е <strong>настан</strong> во календарот", + "A calendar <strong>to-do</strong> was modified" : "Изменета е <strong>задача</strong> во календарот", "Contact birthdays" : "Родендени на контактите", "Death of %s" : "Смрт на %s", "Calendar:" : "Календар:", @@ -68,7 +85,22 @@ "More options …" : "Повеќе опции ...", "More options at %s" : "Повеќе опции на %s", "Contacts" : "Контакти", + "{actor} created address book {addressbook}" : "{actor} креираше адресар {addressbook}", + "You created address book {addressbook}" : "Креиравте адресар {addressbook}", + "{actor} deleted address book {addressbook}" : "{actor} избриша адресар {addressbook}", + "You deleted address book {addressbook}" : "Избришавте адресар {addressbook}", + "{actor} updated address book {addressbook}" : "{actor} ажурирање адресар {addressbook}", + "You updated address book {addressbook}" : "Ажуриравте {addressbook}", + "{actor} shared address book {addressbook} with you" : "{actor} сподели адресар {addressbook} со вас", + "You shared address book {addressbook} with {user}" : "Споделивте адресар {addressbook} со {user}", + "{actor} shared address book {addressbook} with {user}" : "{actor} сподели адресар {addressbook} со {user}", + "{actor} unshared address book {addressbook} from you" : "{actor} не го споделува адресар {addressbook} со вас", + "You unshared address book {addressbook} from {user}" : "Не го споделиувате адресар {addressbook} со {user}", + "{actor} unshared address book {addressbook} from {user}" : "{actor} не го споделува адресар {addressbook} со {user}", + "{actor} unshared address book {addressbook} from themselves" : "{actor} не го споделува адресар {addressbook} со себе", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контракт</strong> или <strong>адресар</strong> е променет", + "_%n byte_::_%n bytes_" : ["%n бајт","%n бајти"], + "File not found: %1$s" : "Датотеката не е пронајдена: %1$s", "System is in maintenance mode." : "Системот е во мод за одржување.", "Upgrade needed" : "Потребна е надградба", "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Вашиот %s треба да биде конфигуриран за да користи HTTPS за да може да се користи CalDAV и CardDAV на iOS/macOS.", diff --git a/apps/dav/l10n/nb.js b/apps/dav/l10n/nb.js index 06279d90460..33f8ed18e2e 100644 --- a/apps/dav/l10n/nb.js +++ b/apps/dav/l10n/nb.js @@ -30,6 +30,7 @@ OC.L10N.register( "{actor} updated event {event} in calendar {calendar}" : "{actor} oppdaterte hendelsen {event} i kalenderen {calendar}", "You updated event {event} in calendar {calendar}" : "Du oppdaterte hendelsen {event} i kalenderen {calendar}", "Busy" : "Opptatt", + "Calendar, contacts and tasks" : "Kalender, kontakter og oppgaver", "A <strong>calendar</strong> was modified" : "En <strong>kalender</strong> ble endret", "A calendar <strong>event</strong> was modified" : "En kalender <strong>hendelse</strong> ble endret", "Contact birthdays" : "Kontakters fødelsdag", @@ -77,6 +78,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV endepunkt", "to" : "til", + "Delete slot" : "Slett tidsluke", "Monday" : "Mandag", "Tuesday" : "Tirsdag", "Wednesday" : "Onsdag", diff --git a/apps/dav/l10n/nb.json b/apps/dav/l10n/nb.json index 9e8f78bddac..013228515ab 100644 --- a/apps/dav/l10n/nb.json +++ b/apps/dav/l10n/nb.json @@ -28,6 +28,7 @@ "{actor} updated event {event} in calendar {calendar}" : "{actor} oppdaterte hendelsen {event} i kalenderen {calendar}", "You updated event {event} in calendar {calendar}" : "Du oppdaterte hendelsen {event} i kalenderen {calendar}", "Busy" : "Opptatt", + "Calendar, contacts and tasks" : "Kalender, kontakter og oppgaver", "A <strong>calendar</strong> was modified" : "En <strong>kalender</strong> ble endret", "A calendar <strong>event</strong> was modified" : "En kalender <strong>hendelse</strong> ble endret", "Contact birthdays" : "Kontakters fødelsdag", @@ -75,6 +76,7 @@ "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV endepunkt", "to" : "til", + "Delete slot" : "Slett tidsluke", "Monday" : "Mandag", "Tuesday" : "Tirsdag", "Wednesday" : "Onsdag", diff --git a/apps/dav/l10n/nl.js b/apps/dav/l10n/nl.js index 2d466feeb98..3ebb608547f 100644 --- a/apps/dav/l10n/nl.js +++ b/apps/dav/l10n/nl.js @@ -82,7 +82,7 @@ OC.L10N.register( "More options at %s" : "Meer opties op %s", "Contacts" : "Contactpersonen", "{actor} created address book {addressbook}" : "{actor} creëerde adresboek {addressbook}", - "You created address book {addressbook}" : "Je creëere adresboek {addressbook}", + "You created address book {addressbook}" : "Je creëerde adresboek {addressbook}", "{actor} deleted address book {addressbook}" : "{actor} verwijdede adresboek {addressbook}", "You deleted address book {addressbook}" : "Je verwijderde adresboek {addressbook}", "{actor} updated address book {addressbook}" : "{actor} wijzigde adresboek {addressbook}", diff --git a/apps/dav/l10n/nl.json b/apps/dav/l10n/nl.json index 13b40b33bdc..74d32b8ea8b 100644 --- a/apps/dav/l10n/nl.json +++ b/apps/dav/l10n/nl.json @@ -80,7 +80,7 @@ "More options at %s" : "Meer opties op %s", "Contacts" : "Contactpersonen", "{actor} created address book {addressbook}" : "{actor} creëerde adresboek {addressbook}", - "You created address book {addressbook}" : "Je creëere adresboek {addressbook}", + "You created address book {addressbook}" : "Je creëerde adresboek {addressbook}", "{actor} deleted address book {addressbook}" : "{actor} verwijdede adresboek {addressbook}", "You deleted address book {addressbook}" : "Je verwijderde adresboek {addressbook}", "{actor} updated address book {addressbook}" : "{actor} wijzigde adresboek {addressbook}", diff --git a/apps/dav/l10n/zh_CN.js b/apps/dav/l10n/zh_CN.js index 29a4546fe98..8a8c9330513 100644 --- a/apps/dav/l10n/zh_CN.js +++ b/apps/dav/l10n/zh_CN.js @@ -132,6 +132,8 @@ OC.L10N.register( "Hence they will not be available immediately after enabling but will show up after some time." : "因此,它们在启用后不会立即可用,但会在一段时间后显示出来。", "Send notifications for events" : "发送事件通知", "Notifications are sent via background jobs, so these must occur often enough." : "通知将通过后台任务发送,所以任务的频率要足够高。", + "Send reminder notifications to calendar sharees as well" : "同时向日历共享者发送提醒通知", + "Reminders are always sent to organizers and attendees." : "始终向组织者和与会者发出提醒。", "Enable notifications for events via push" : "启用推送事件通知", "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "也安装 {calendarappstoreopen}日历应用{linkclose},或者 {calendardocopen}连接您的桌面和移动端同步日历 ↗{linkclose}。", "Please make sure to properly set up {emailopen}the email server{linkclose}." : "请确保正确设置 {emailopen}邮件服务器{linkclose}。", diff --git a/apps/dav/l10n/zh_CN.json b/apps/dav/l10n/zh_CN.json index e2109499ab2..9f69313b98e 100644 --- a/apps/dav/l10n/zh_CN.json +++ b/apps/dav/l10n/zh_CN.json @@ -130,6 +130,8 @@ "Hence they will not be available immediately after enabling but will show up after some time." : "因此,它们在启用后不会立即可用,但会在一段时间后显示出来。", "Send notifications for events" : "发送事件通知", "Notifications are sent via background jobs, so these must occur often enough." : "通知将通过后台任务发送,所以任务的频率要足够高。", + "Send reminder notifications to calendar sharees as well" : "同时向日历共享者发送提醒通知", + "Reminders are always sent to organizers and attendees." : "始终向组织者和与会者发出提醒。", "Enable notifications for events via push" : "启用推送事件通知", "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "也安装 {calendarappstoreopen}日历应用{linkclose},或者 {calendardocopen}连接您的桌面和移动端同步日历 ↗{linkclose}。", "Please make sure to properly set up {emailopen}the email server{linkclose}." : "请确保正确设置 {emailopen}邮件服务器{linkclose}。", diff --git a/apps/dav/lib/BackgroundJob/UploadCleanup.php b/apps/dav/lib/BackgroundJob/UploadCleanup.php index f612f58cd7c..3a6f296deaf 100644 --- a/apps/dav/lib/BackgroundJob/UploadCleanup.php +++ b/apps/dav/lib/BackgroundJob/UploadCleanup.php @@ -37,15 +37,18 @@ use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; +use Psr\Log\LoggerInterface; class UploadCleanup extends TimedJob { private IRootFolder $rootFolder; private IJobList $jobList; + private LoggerInterface $logger; - public function __construct(ITimeFactory $time, IRootFolder $rootFolder, IJobList $jobList) { + public function __construct(ITimeFactory $time, IRootFolder $rootFolder, IJobList $jobList, LoggerInterface $logger) { parent::__construct($time); $this->rootFolder = $rootFolder; $this->jobList = $jobList; + $this->logger = $logger; // Run once a day $this->setInterval(60 * 60 * 24); @@ -61,19 +64,27 @@ class UploadCleanup extends TimedJob { $userRoot = $userFolder->getParent(); /** @var Folder $uploads */ $uploads = $userRoot->get('uploads'); - /** @var Folder $uploadFolder */ $uploadFolder = $uploads->get($folder); } catch (NotFoundException | NoUserException $e) { $this->jobList->remove(self::class, $argument); return; } - /** @var File[] $files */ - $files = $uploadFolder->getDirectoryListing(); - // Remove if all files have an mtime of more than a day $time = $this->time->getTime() - 60 * 60 * 24; + if (!($uploadFolder instanceof Folder)) { + $this->logger->error("Found a file inside the uploads folder. Uid: " . $uid . ' folder: ' . $folder); + if ($uploadFolder->getMTime() < $time) { + $uploadFolder->delete(); + } + $this->jobList->remove(self::class, $argument); + return; + } + + /** @var File[] $files */ + $files = $uploadFolder->getDirectoryListing(); + // The folder has to be more than a day old $initial = $uploadFolder->getMTime() < $time; diff --git a/apps/dav/lib/BulkUpload/BulkUploadPlugin.php b/apps/dav/lib/BulkUpload/BulkUploadPlugin.php index bb6baf48b56..0d5cce88d0d 100644 --- a/apps/dav/lib/BulkUpload/BulkUploadPlugin.php +++ b/apps/dav/lib/BulkUpload/BulkUploadPlugin.php @@ -3,6 +3,7 @@ * @copyright Copyright (c) 2021, Louis Chemineau <louis@chmn.me> * * @author Louis Chemineau <louis@chmn.me> + * @author Côme Chilliet <come.chilliet@nextcloud.com> * * @license AGPL-3.0 * @@ -27,19 +28,19 @@ use Sabre\DAV\Server; use Sabre\DAV\ServerPlugin; use Sabre\HTTP\RequestInterface; use Sabre\HTTP\ResponseInterface; +use OCP\Files\DavUtil; use OCP\Files\Folder; use OCP\AppFramework\Http; use OCA\DAV\Connector\Sabre\MtimeSanitizer; class BulkUploadPlugin extends ServerPlugin { + private Folder $userFolder; + private LoggerInterface $logger; - /** @var Folder */ - private $userFolder; - - /** @var LoggerInterface */ - private $logger; - - public function __construct(Folder $userFolder, LoggerInterface $logger) { + public function __construct( + Folder $userFolder, + LoggerInterface $logger + ) { $this->userFolder = $userFolder; $this->logger = $logger; } @@ -90,10 +91,13 @@ class BulkUploadPlugin extends ServerPlugin { $node = $this->userFolder->newFile($headers['x-file-path'], $content); $node->touch($mtime); + $node = $this->userFolder->getById($node->getId())[0]; $writtenFiles[$headers['x-file-path']] = [ "error" => false, "etag" => $node->getETag(), + "fileid" => DavUtil::getDavFileId($node->getId()), + "permissions" => DavUtil::getDavPermissions($node), ]; } catch (\Exception $e) { $this->logger->error($e->getMessage(), ['path' => $headers['x-file-path']]); diff --git a/apps/dav/lib/CalDAV/Activity/Provider/Base.php b/apps/dav/lib/CalDAV/Activity/Provider/Base.php index 7f70980a72b..48ed7b8b107 100644 --- a/apps/dav/lib/CalDAV/Activity/Provider/Base.php +++ b/apps/dav/lib/CalDAV/Activity/Provider/Base.php @@ -112,35 +112,15 @@ abstract class Base implements IProvider { ]; } - /** - * @param string $uid - * @return array - */ - protected function generateUserParameter($uid) { - if (!isset($this->userDisplayNames[$uid])) { - $this->userDisplayNames[$uid] = $this->getUserDisplayName($uid); - } - + protected function generateUserParameter(string $uid): array { return [ 'type' => 'user', 'id' => $uid, - 'name' => $this->userDisplayNames[$uid], + 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } /** - * @param string $uid - * @return string - */ - protected function getUserDisplayName($uid) { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } - return $uid; - } - - /** * @param string $gid * @return array */ diff --git a/apps/dav/lib/CalDAV/BirthdayService.php b/apps/dav/lib/CalDAV/BirthdayService.php index 1030768e26f..be6b0911538 100644 --- a/apps/dav/lib/CalDAV/BirthdayService.php +++ b/apps/dav/lib/CalDAV/BirthdayService.php @@ -14,6 +14,7 @@ declare(strict_types=1); * @author Sven Strickroth <email@cs-ware.de> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Valdnet <47037905+Valdnet@users.noreply.github.com> + * @author Cédric Neukom <github@webguy.ch> * * @license AGPL-3.0 * @@ -86,6 +87,9 @@ class BirthdayService { $targetPrincipals = $this->getAllAffectedPrincipals($addressBookId); $book = $this->cardDavBackEnd->getAddressBookById($addressBookId); + if ($book === null) { + return; + } $targetPrincipals[] = $book['principaluri']; $datesToSync = [ ['postfix' => '', 'field' => 'BDAY'], @@ -98,9 +102,14 @@ class BirthdayService { continue; } + $reminderOffset = $this->getReminderOffsetForUser($principalUri); + $calendar = $this->ensureCalendarExists($principalUri); + if ($calendar === null) { + return; + } foreach ($datesToSync as $type) { - $this->updateCalendar($cardUri, $cardData, $book, (int) $calendar['id'], $type); + $this->updateCalendar($cardUri, $cardData, $book, (int) $calendar['id'], $type, $reminderOffset); } } } @@ -148,12 +157,14 @@ class BirthdayService { * @param $cardData * @param $dateField * @param $postfix + * @param $reminderOffset * @return VCalendar|null * @throws InvalidDataException */ - public function buildDateFromContact(string $cardData, - string $dateField, - string $postfix):?VCalendar { + public function buildDateFromContact(string $cardData, + string $dateField, + string $postfix, + ?string $reminderOffset):?VCalendar { if (empty($cardData)) { return null; } @@ -258,11 +269,13 @@ class BirthdayService { if ($originalYear !== null) { $vEvent->{'X-NEXTCLOUD-BC-YEAR'} = (string) $originalYear; } - $alarm = $vCal->createComponent('VALARM'); - $alarm->add($vCal->createProperty('TRIGGER', '-PT0M', ['VALUE' => 'DURATION'])); - $alarm->add($vCal->createProperty('ACTION', 'DISPLAY')); - $alarm->add($vCal->createProperty('DESCRIPTION', $vEvent->{'SUMMARY'})); - $vEvent->add($alarm); + if ($reminderOffset) { + $alarm = $vCal->createComponent('VALARM'); + $alarm->add($vCal->createProperty('TRIGGER', $reminderOffset, ['VALUE' => 'DURATION'])); + $alarm->add($vCal->createProperty('ACTION', 'DISPLAY')); + $alarm->add($vCal->createProperty('DESCRIPTION', $vEvent->{'SUMMARY'})); + $vEvent->add($alarm); + } $vCal->add($vEvent); return $vCal; } @@ -273,6 +286,9 @@ class BirthdayService { public function resetForUser(string $user):void { $principal = 'principals/users/'.$user; $calendar = $this->calDavBackEnd->getCalendarByUri($principal, self::BIRTHDAY_CALENDAR_URI); + if (!$calendar) { + return; // The user's birthday calendar doesn't exist, no need to purge it + } $calendarObjects = $this->calDavBackEnd->getCalendarObjects($calendar['id'], CalDavBackend::CALENDAR_TYPE_CALENDAR); foreach ($calendarObjects as $calendarObject) { @@ -341,6 +357,7 @@ class BirthdayService { * @param array $book * @param int $calendarId * @param array $type + * @param string $reminderOffset * @throws InvalidDataException * @throws \Sabre\DAV\Exception\BadRequest */ @@ -348,9 +365,10 @@ class BirthdayService { string $cardData, array $book, int $calendarId, - array $type):void { + array $type, + ?string $reminderOffset):void { $objectUri = $book['uri'] . '-' . $cardUri . $type['postfix'] . '.ics'; - $calendarData = $this->buildDateFromContact($cardData, $type['field'], $type['postfix']); + $calendarData = $this->buildDateFromContact($cardData, $type['field'], $type['postfix'], $reminderOffset); $existing = $this->calDavBackEnd->getCalendarObject($calendarId, $objectUri); if ($calendarData === null) { if ($existing !== null) { @@ -391,14 +409,27 @@ class BirthdayService { } /** + * Extracts the userId part of a principal + * + * @param string $userPrincipal + * @return string|null + */ + private function principalToUserId(string $userPrincipal):?string { + if (substr($userPrincipal, 0, 17) === 'principals/users/') { + return substr($userPrincipal, 17); + } + return null; + } + + /** * Checks if the user opted-out of birthday calendars * * @param string $userPrincipal The user principal to check for * @return bool */ private function isUserEnabled(string $userPrincipal):bool { - if (strpos($userPrincipal, 'principals/users/') === 0) { - $userId = substr($userPrincipal, 17); + $userId = $this->principalToUserId($userPrincipal); + if ($userId !== null) { $isEnabled = $this->config->getUserValue($userId, 'dav', 'generateBirthdayCalendar', 'yes'); return $isEnabled === 'yes'; } @@ -408,6 +439,23 @@ class BirthdayService { } /** + * Get the reminder offset value for a user. This is a duration string (e.g. + * PT9H) or null if no reminder is wanted. + * + * @param string $userPrincipal + * @return string|null + */ + private function getReminderOffsetForUser(string $userPrincipal):?string { + $userId = $this->principalToUserId($userPrincipal); + if ($userId !== null) { + return $this->config->getUserValue($userId, 'dav', 'birthdayCalendarReminderOffset', 'PT9H') ?: null; + } + + // not sure how we got here, just be on the safe side and return the default value + return 'PT9H'; + } + + /** * Formats title of Birthday event * * @param string $field Field name like BDAY, ANNIVERSARY, ... diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index 7e13b3ba8fd..a147d785cc7 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -64,6 +64,7 @@ use OCA\DAV\Events\CalendarUpdatedEvent; use OCA\DAV\Events\SubscriptionCreatedEvent; use OCA\DAV\Events\SubscriptionDeletedEvent; use OCA\DAV\Events\SubscriptionUpdatedEvent; +use OCP\Calendar\Exceptions\CalendarException; use OCP\DB\Exception; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\EventDispatcher\IEventDispatcher; @@ -770,8 +771,14 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * @param string $calendarUri * @param array $properties * @return int + * + * @throws CalendarException */ public function createCalendar($principalUri, $calendarUri, array $properties) { + if (strlen($calendarUri) > 255) { + throw new CalendarException('URI too long. Calendar not created'); + } + $values = [ 'principaluri' => $this->convertPrincipal($principalUri, true), 'uri' => $calendarUri, @@ -1584,7 +1591,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription * Note that especially time-range-filters may be difficult to parse. A * time-range filter specified on a VEVENT must for instance also handle * recurrence rules correctly. - * A good example of how to interprete all these filters can also simply + * A good example of how to interpret all these filters can also simply * be found in Sabre\CalDAV\CalendarQueryFilter. This class is as correct * as possible, so it gives you a good idea on what type of stuff you need * to think of. @@ -1864,6 +1871,10 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription } } + if(isset($options['uid'])) { + $outerQuery->andWhere($outerQuery->expr()->eq('uid', $outerQuery->createNamedParameter($options['uid']))); + } + if (!empty($options['types'])) { $or = $outerQuery->expr()->orX(); foreach ($options['types'] as $type) { diff --git a/apps/dav/lib/CalDAV/CalendarHome.php b/apps/dav/lib/CalDAV/CalendarHome.php index ceeba31800e..cd6ae1c2f7f 100644 --- a/apps/dav/lib/CalDAV/CalendarHome.php +++ b/apps/dav/lib/CalDAV/CalendarHome.php @@ -206,7 +206,6 @@ class CalendarHome extends \Sabre\CalDAV\CalendarHome { return $this->caldavBackend->calendarSearch($principalUri, $filters, $limit, $offset); } - public function enableCachedSubscriptionsForThisRequest() { $this->returnCachedSubscriptions = true; } diff --git a/apps/dav/lib/CalDAV/CalendarImpl.php b/apps/dav/lib/CalDAV/CalendarImpl.php index 406389e3a3d..a04e520c6bc 100644 --- a/apps/dav/lib/CalDAV/CalendarImpl.php +++ b/apps/dav/lib/CalDAV/CalendarImpl.php @@ -29,10 +29,19 @@ namespace OCA\DAV\CalDAV; use OCA\DAV\CalDAV\Auth\CustomPrincipalPlugin; use OCA\DAV\CalDAV\InvitationResponse\InvitationResponseServer; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\Calendar\Exceptions\CalendarException; use OCP\Calendar\ICreateFromString; use OCP\Constants; +use OCP\Security\ISecureRandom; +use Psr\Log\LoggerInterface; use Sabre\DAV\Exception\Conflict; +use Sabre\VObject\Component\VCalendar; +use Sabre\VObject\Component\VEvent; +use Sabre\VObject\Document; +use Sabre\VObject\ITip\Message; +use Sabre\VObject\Property\VCard\DateTime; +use Sabre\VObject\Reader; use function Sabre\Uri\split as uriSplit; class CalendarImpl implements ICreateFromString { @@ -46,13 +55,6 @@ class CalendarImpl implements ICreateFromString { /** @var array */ private $calendarInfo; - /** - * CalendarImpl constructor. - * - * @param Calendar $calendar - * @param array $calendarInfo - * @param CalDavBackend $backend - */ public function __construct(Calendar $calendar, array $calendarInfo, CalDavBackend $backend) { @@ -138,7 +140,7 @@ class CalendarImpl implements ICreateFromString { * Create a new calendar event for this calendar * by way of an ICS string * - * @param string $name the file name - needs to contan the .ics ending + * @param string $name the file name - needs to contain the .ics ending * @param string $calendarData a string containing a valid VEVENT ics * * @throws CalendarException @@ -177,4 +179,59 @@ class CalendarImpl implements ICreateFromString { fclose($stream); } } + + /** + * @throws CalendarException + */ + public function handleIMipMessage(string $name, string $calendarData): void { + $server = new InvitationResponseServer(false); + + /** @var CustomPrincipalPlugin $plugin */ + $plugin = $server->server->getPlugin('auth'); + // we're working around the previous implementation + // that only allowed the public system principal to be used + // so set the custom principal here + $plugin->setCurrentPrincipal($this->calendar->getPrincipalURI()); + + if (empty($this->calendarInfo['uri'])) { + throw new CalendarException('Could not write to calendar as URI parameter is missing'); + } + // Force calendar change URI + /** @var Schedule\Plugin $schedulingPlugin */ + $schedulingPlugin = $server->server->getPlugin('caldav-schedule'); + // Let sabre handle the rest + $iTipMessage = new Message(); + /** @var VCalendar $vObject */ + $vObject = Reader::read($calendarData); + /** @var VEvent $vEvent */ + $vEvent = $vObject->{'VEVENT'}; + + if($vObject->{'METHOD'} === null) { + throw new CalendarException('No Method provided for scheduling data. Could not process message'); + } + + if(!isset($vEvent->{'ORGANIZER'}) || !isset($vEvent->{'ATTENDEE'})) { + throw new CalendarException('Could not process scheduling data, neccessary data missing from ICAL'); + } + $orgaizer = $vEvent->{'ORGANIZER'}->getValue(); + $attendee = $vEvent->{'ATTENDEE'}->getValue(); + + $iTipMessage->method = $vObject->{'METHOD'}->getValue(); + if($iTipMessage->method === 'REPLY') { + if ($server->isExternalAttendee($vEvent->{'ATTENDEE'}->getValue())) { + $iTipMessage->recipient = $orgaizer; + } else { + $iTipMessage->recipient = $attendee; + } + $iTipMessage->sender = $attendee; + } else if($iTipMessage->method === 'CANCEL') { + $iTipMessage->recipient = $attendee; + $iTipMessage->sender = $orgaizer; + } + $iTipMessage->uid = isset($vEvent->{'UID'}) ? $vEvent->{'UID'}->getValue() : ''; + $iTipMessage->component = 'VEVENT'; + $iTipMessage->sequence = isset($vEvent->{'SEQUENCE'}) ? (int)$vEvent->{'SEQUENCE'}->getValue() : 0; + $iTipMessage->message = $vObject; + $schedulingPlugin->scheduleLocalDelivery($iTipMessage); + } } diff --git a/apps/dav/lib/CalDAV/CalendarProvider.php b/apps/dav/lib/CalDAV/CalendarProvider.php index f29c601db2d..5779111add3 100644 --- a/apps/dav/lib/CalDAV/CalendarProvider.php +++ b/apps/dav/lib/CalDAV/CalendarProvider.php @@ -26,6 +26,7 @@ declare(strict_types=1); namespace OCA\DAV\CalDAV; use OCP\Calendar\ICalendarProvider; +use OCP\Calendar\ICreateFromString; use OCP\IConfig; use OCP\IL10N; use Psr\Log\LoggerInterface; diff --git a/apps/dav/lib/CalDAV/Publishing/Xml/Publisher.php b/apps/dav/lib/CalDAV/Publishing/Xml/Publisher.php index 35bce872bf8..cbff5e66a85 100644 --- a/apps/dav/lib/CalDAV/Publishing/Xml/Publisher.php +++ b/apps/dav/lib/CalDAV/Publishing/Xml/Publisher.php @@ -55,7 +55,7 @@ class Publisher implements XmlSerializable { } /** - * The xmlSerialize metod is called during xml writing. + * The xmlSerialize method is called during xml writing. * * Use the $writer argument to write its own xml serialization. * diff --git a/apps/dav/lib/CalDAV/Schedule/Plugin.php b/apps/dav/lib/CalDAV/Schedule/Plugin.php index 74865297944..44517541faa 100644 --- a/apps/dav/lib/CalDAV/Schedule/Plugin.php +++ b/apps/dav/lib/CalDAV/Schedule/Plugin.php @@ -179,7 +179,7 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin { // If parent::scheduleLocalDelivery set scheduleStatus to 1.2, // it means that it was successfully delivered locally. - // Meaning that the ACL plugin is loaded and that a principial + // Meaning that the ACL plugin is loaded and that a principal // exists for the given recipient id, no need to double check /** @var \Sabre\DAVACL\Plugin $aclPlugin */ $aclPlugin = $this->server->getPlugin('acl'); @@ -567,7 +567,7 @@ EOF; } // If more than one Free-Busy property was returned, it means that an event - // starts or ends inside this time-range, so it's not availabe and we return false + // starts or ends inside this time-range, so it's not available and we return false if (count($freeBusyProperties) > 1) { return false; } diff --git a/apps/dav/lib/Capabilities.php b/apps/dav/lib/Capabilities.php index 41d1b983587..b8096d3395a 100644 --- a/apps/dav/lib/Capabilities.php +++ b/apps/dav/lib/Capabilities.php @@ -4,6 +4,7 @@ * * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Louis Chemineau <louis@chmn.me> + * @author Côme Chilliet <come.chilliet@nextcloud.com> * * @license AGPL-3.0 * @@ -23,15 +24,24 @@ namespace OCA\DAV; use OCP\Capabilities\ICapability; +use OCP\IConfig; class Capabilities implements ICapability { + private IConfig $config; + + public function __construct(IConfig $config) { + $this->config = $config; + } + public function getCapabilities() { - return [ + $capabilities = [ 'dav' => [ 'chunking' => '1.0', - // disabled because of https://github.com/nextcloud/desktop/issues/4243 - // 'bulkupload' => '1.0', ] ]; + if ($this->config->getSystemValueBool('bulkupload.enabled', true)) { + $capabilities['dav']['bulkupload'] = '1.0'; + } + return $capabilities; } } diff --git a/apps/dav/lib/CardDAV/Activity/Backend.php b/apps/dav/lib/CardDAV/Activity/Backend.php index 8c8c643e287..53639f84f84 100644 --- a/apps/dav/lib/CardDAV/Activity/Backend.php +++ b/apps/dav/lib/CardDAV/Activity/Backend.php @@ -129,7 +129,7 @@ class Backend { $event = $this->activityManager->generateEvent(); $event->setApp('dav') ->setObject('addressbook', (int) $addressbookData['id']) - ->setType('addressbook') + ->setType('contacts') ->setAuthor($currentUser); $changedVisibleInformation = array_intersect([ @@ -188,7 +188,7 @@ class Backend { $event = $this->activityManager->generateEvent(); $event->setApp('dav') ->setObject('addressbook', (int) $addressbookData['id']) - ->setType('addressbook') + ->setType('contacts') ->setAuthor($currentUser); foreach ($remove as $principal) { @@ -433,7 +433,7 @@ class Backend { $event = $this->activityManager->generateEvent(); $event->setApp('dav') ->setObject('addressbook', (int) $addressbookData['id']) - ->setType('card') + ->setType('contacts') ->setAuthor($currentUser); $users = $this->getUsersForShares($shares); diff --git a/apps/dav/lib/CardDAV/Activity/Provider/Addressbook.php b/apps/dav/lib/CardDAV/Activity/Provider/Addressbook.php index be18fba96cc..0f4acaaa434 100644 --- a/apps/dav/lib/CardDAV/Activity/Provider/Addressbook.php +++ b/apps/dav/lib/CardDAV/Activity/Provider/Addressbook.php @@ -72,7 +72,7 @@ class Addressbook extends Base { * @throws \InvalidArgumentException */ public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent { - if ($event->getApp() !== 'dav' || $event->getType() !== 'addressbook') { + if ($event->getApp() !== 'dav' || $event->getType() !== 'contacts') { throw new \InvalidArgumentException(); } diff --git a/apps/dav/lib/CardDAV/Activity/Provider/Base.php b/apps/dav/lib/CardDAV/Activity/Provider/Base.php index 2f6de31de15..3e7a966c08a 100644 --- a/apps/dav/lib/CardDAV/Activity/Provider/Base.php +++ b/apps/dav/lib/CardDAV/Activity/Provider/Base.php @@ -98,35 +98,15 @@ abstract class Base implements IProvider { ]; } - /** - * @param string $uid - * @return array - */ protected function generateUserParameter(string $uid): array { - if (!isset($this->userDisplayNames[$uid])) { - $this->userDisplayNames[$uid] = $this->getUserDisplayName($uid); - } - return [ 'type' => 'user', 'id' => $uid, - 'name' => $this->userDisplayNames[$uid], + 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } /** - * @param string $uid - * @return string - */ - protected function getUserDisplayName(string $uid): string { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } - return $uid; - } - - /** * @param string $gid * @return array */ diff --git a/apps/dav/lib/CardDAV/Activity/Provider/Card.php b/apps/dav/lib/CardDAV/Activity/Provider/Card.php index 9c909ae9bcd..e2abdda161a 100644 --- a/apps/dav/lib/CardDAV/Activity/Provider/Card.php +++ b/apps/dav/lib/CardDAV/Activity/Provider/Card.php @@ -74,7 +74,7 @@ class Card extends Base { * @throws \InvalidArgumentException */ public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent { - if ($event->getApp() !== 'dav' || $event->getType() !== 'card') { + if ($event->getApp() !== 'dav' || $event->getType() !== 'contacts') { throw new \InvalidArgumentException(); } diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index a26307b02a8..b4fdcf922dc 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -389,6 +389,10 @@ class CardDavBackend implements BackendInterface, SyncSupport { * @throws BadRequest */ public function createAddressBook($principalUri, $url, array $properties) { + if (strlen($url) > 255) { + throw new BadRequest('URI too long. Address book not created'); + } + $values = [ 'displayname' => null, 'description' => null, @@ -486,7 +490,7 @@ class CardDavBackend implements BackendInterface, SyncSupport { * * size - The size of the card in bytes. * * If these last two properties are provided, less time will be spent - * calculating them. If they are specified, you can also ommit carddata. + * calculating them. If they are specified, you can also omit carddata. * This may speed up certain requests, especially with large cards. * * @param mixed $addressbookId @@ -933,6 +937,12 @@ class CardDavBackend implements BackendInterface, SyncSupport { $cardData = stream_get_contents($cardData); } + // Micro optimisation + // don't loop through + if (strpos($cardData, 'PHOTO:data:') === 0) { + return $cardData; + } + $cardDataArray = explode("\r\n", $cardData); $cardDataFiltered = []; @@ -956,7 +966,6 @@ class CardDavBackend implements BackendInterface, SyncSupport { $cardDataFiltered[] = $line; } - return implode("\r\n", $cardDataFiltered); } diff --git a/apps/dav/lib/Connector/Sabre/ChecksumList.php b/apps/dav/lib/Connector/Sabre/ChecksumList.php index 344e6a4ab3c..44573de03c8 100644 --- a/apps/dav/lib/Connector/Sabre/ChecksumList.php +++ b/apps/dav/lib/Connector/Sabre/ChecksumList.php @@ -42,7 +42,7 @@ class ChecksumList implements XmlSerializable { } /** - * The xmlSerialize metod is called during xml writing. + * The xmlSerialize method is called during xml writing. * * Use the $writer argument to write its own xml serialization. * diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index ebcfdabc6b3..94632b265db 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -553,7 +553,7 @@ class File extends Node implements IFile { * @return array|bool */ public function getDirectDownload() { - if (\OCP\App::isEnabled('encryption')) { + if (\OCP\Server::get(\OCP\App\IAppManager::class)->isEnabledForUser('encryption')) { return []; } /** @var \OCP\Files\Storage $storage */ diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php index b784764f8fe..e9d27d4e7f6 100644 --- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php @@ -65,6 +65,7 @@ class FilesPlugin extends ServerPlugin { public const PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}permissions'; public const SHARE_PERMISSIONS_PROPERTYNAME = '{http://open-collaboration-services.org/ns}share-permissions'; public const OCM_SHARE_PERMISSIONS_PROPERTYNAME = '{http://open-cloud-mesh.org/ns}share-permissions'; + public const SHARE_ATTRIBUTES_PROPERTYNAME = '{http://nextcloud.org/ns}share-attributes'; public const DOWNLOADURL_PROPERTYNAME = '{http://owncloud.org/ns}downloadURL'; public const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size'; public const GETETAG_PROPERTYNAME = '{DAV:}getetag'; @@ -134,6 +135,7 @@ class FilesPlugin extends ServerPlugin { $server->protectedProperties[] = self::PERMISSIONS_PROPERTYNAME; $server->protectedProperties[] = self::SHARE_PERMISSIONS_PROPERTYNAME; $server->protectedProperties[] = self::OCM_SHARE_PERMISSIONS_PROPERTYNAME; + $server->protectedProperties[] = self::SHARE_ATTRIBUTES_PROPERTYNAME; $server->protectedProperties[] = self::SIZE_PROPERTYNAME; $server->protectedProperties[] = self::DOWNLOADURL_PROPERTYNAME; $server->protectedProperties[] = self::OWNER_ID_PROPERTYNAME; @@ -321,6 +323,10 @@ class FilesPlugin extends ServerPlugin { return json_encode($ocmPermissions); }); + $propFind->handle(self::SHARE_ATTRIBUTES_PROPERTYNAME, function () use ($node, $httpRequest) { + return json_encode($node->getShareAttributes()); + }); + $propFind->handle(self::GETETAG_PROPERTYNAME, function () use ($node): string { return $node->getETag(); }); diff --git a/apps/dav/lib/Connector/Sabre/Node.php b/apps/dav/lib/Connector/Sabre/Node.php index e4517068f42..5fb811ad1ab 100644 --- a/apps/dav/lib/Connector/Sabre/Node.php +++ b/apps/dav/lib/Connector/Sabre/Node.php @@ -40,6 +40,7 @@ use OC\Files\Node\File; use OC\Files\Node\Folder; use OC\Files\View; use OCA\DAV\Connector\Sabre\Exception\InvalidPath; +use OCP\Files\DavUtil; use OCP\Files\FileInfo; use OCP\Files\IRootFolder; use OCP\Files\StorageNotAvailableException; @@ -251,10 +252,8 @@ abstract class Node implements \Sabre\DAV\INode { * @return string|null */ public function getFileId() { - if ($this->info->getId()) { - $instanceId = \OC_Util::getInstanceId(); - $id = sprintf('%08d', $this->info->getId()); - return $id . $instanceId; + if ($id = $this->info->getId()) { + return DavUtil::getDavFileId($id); } return null; @@ -323,6 +322,31 @@ abstract class Node implements \Sabre\DAV\INode { } /** + * @return array + */ + public function getShareAttributes(): array { + $attributes = []; + + try { + $storage = $this->info->getStorage(); + } catch (StorageNotAvailableException $e) { + $storage = null; + } + + if ($storage && $storage->instanceOfStorage(\OCA\Files_Sharing\SharedStorage::class)) { + /** @var \OCA\Files_Sharing\SharedStorage $storage */ + $attributes = $storage->getShare()->getAttributes(); + if ($attributes === null) { + return []; + } else { + return $attributes->toArray(); + } + } + + return $attributes; + } + + /** * @param string $user * @return string */ @@ -355,35 +379,7 @@ abstract class Node implements \Sabre\DAV\INode { * @return string */ public function getDavPermissions() { - $p = ''; - if ($this->info->isShared()) { - $p .= 'S'; - } - if ($this->info->isShareable()) { - $p .= 'R'; - } - if ($this->info->isMounted()) { - $p .= 'M'; - } - if ($this->info->isReadable()) { - $p .= 'G'; - } - if ($this->info->isDeletable()) { - $p .= 'D'; - } - if ($this->info->isUpdateable()) { - $p .= 'NV'; // Renameable, Moveable - } - if ($this->info->getType() === \OCP\Files\FileInfo::TYPE_FILE) { - if ($this->info->isUpdateable()) { - $p .= 'W'; - } - } else { - if ($this->info->isCreatable()) { - $p .= 'CK'; - } - } - return $p; + return DavUtil::getDavPermissions($this->info); } public function getOwner() { diff --git a/apps/dav/lib/Connector/Sabre/ServerFactory.php b/apps/dav/lib/Connector/Sabre/ServerFactory.php index 8f1f710ca5e..4c57f3412e3 100644 --- a/apps/dav/lib/Connector/Sabre/ServerFactory.php +++ b/apps/dav/lib/Connector/Sabre/ServerFactory.php @@ -33,6 +33,7 @@ namespace OCA\DAV\Connector\Sabre; use OCP\Files\Folder; use OCA\DAV\AppInfo\PluginManager; +use OCA\DAV\DAV\ViewOnlyPlugin; use OCA\DAV\Files\BrowserErrorPagePlugin; use OCP\Files\Mount\IMountManager; use OCP\IConfig; @@ -158,6 +159,11 @@ class ServerFactory { $server->addPlugin(new \OCA\DAV\Connector\Sabre\QuotaPlugin($view, true)); $server->addPlugin(new \OCA\DAV\Connector\Sabre\ChecksumUpdatePlugin()); + // Allow view-only plugin for webdav requests + $server->addPlugin(new ViewOnlyPlugin( + $this->logger + )); + if ($this->userSession->isLoggedIn()) { $server->addPlugin(new \OCA\DAV\Connector\Sabre\TagsPlugin($objectTree, $this->tagManager)); $server->addPlugin(new \OCA\DAV\Connector\Sabre\SharesPlugin( diff --git a/apps/dav/lib/Connector/Sabre/ShareTypeList.php b/apps/dav/lib/Connector/Sabre/ShareTypeList.php index 6fbae0dee4a..bacbdc99a73 100644 --- a/apps/dav/lib/Connector/Sabre/ShareTypeList.php +++ b/apps/dav/lib/Connector/Sabre/ShareTypeList.php @@ -79,7 +79,7 @@ class ShareTypeList implements Element { } /** - * The xmlSerialize metod is called during xml writing. + * The xmlSerialize method is called during xml writing. * * @param Writer $writer * @return void diff --git a/apps/dav/lib/Connector/Sabre/ShareeList.php b/apps/dav/lib/Connector/Sabre/ShareeList.php index db8c011cc45..e43f552a8cc 100644 --- a/apps/dav/lib/Connector/Sabre/ShareeList.php +++ b/apps/dav/lib/Connector/Sabre/ShareeList.php @@ -45,7 +45,7 @@ class ShareeList implements XmlSerializable { } /** - * The xmlSerialize metod is called during xml writing. + * The xmlSerialize method is called during xml writing. * * @param Writer $writer * @return void diff --git a/apps/dav/lib/Connector/Sabre/TagList.php b/apps/dav/lib/Connector/Sabre/TagList.php index bbb938fb27d..86006cd3404 100644 --- a/apps/dav/lib/Connector/Sabre/TagList.php +++ b/apps/dav/lib/Connector/Sabre/TagList.php @@ -95,7 +95,7 @@ class TagList implements Element { } /** - * The xmlSerialize metod is called during xml writing. + * The xmlSerialize method is called during xml writing. * * Use the $writer argument to write its own xml serialization. * diff --git a/apps/dav/lib/Controller/DirectController.php b/apps/dav/lib/Controller/DirectController.php index 955400998cf..f9c83488935 100644 --- a/apps/dav/lib/Controller/DirectController.php +++ b/apps/dav/lib/Controller/DirectController.php @@ -31,8 +31,12 @@ use OCA\DAV\Db\DirectMapper; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSBadRequestException; use OCP\AppFramework\OCS\OCSNotFoundException; +use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\AppFramework\OCSController; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\EventDispatcher\GenericEvent; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\Events\BeforeDirectFileDownloadEvent; use OCP\Files\File; use OCP\Files\IRootFolder; use OCP\IRequest; @@ -59,6 +63,8 @@ class DirectController extends OCSController { /** @var IURLGenerator */ private $urlGenerator; + /** @var IEventDispatcher */ + private $eventDispatcher; public function __construct(string $appName, IRequest $request, @@ -67,7 +73,8 @@ class DirectController extends OCSController { DirectMapper $mapper, ISecureRandom $random, ITimeFactory $timeFactory, - IURLGenerator $urlGenerator) { + IURLGenerator $urlGenerator, + IEventDispatcher $eventDispatcher) { parent::__construct($appName, $request); $this->rootFolder = $rootFolder; @@ -76,6 +83,7 @@ class DirectController extends OCSController { $this->random = $random; $this->timeFactory = $timeFactory; $this->urlGenerator = $urlGenerator; + $this->eventDispatcher = $eventDispatcher; } /** @@ -99,6 +107,13 @@ class DirectController extends OCSController { throw new OCSBadRequestException('Direct download only works for files'); } + $event = new BeforeDirectFileDownloadEvent($userFolder->getRelativePath($file->getPath())); + $this->eventDispatcher->dispatchTyped($event); + + if ($event->isSuccessful() === false) { + throw new OCSForbiddenException('Permission denied to download file'); + } + //TODO: at some point we should use the directdownlaod function of storages $direct = new Direct(); $direct->setUserId($this->userId); diff --git a/apps/dav/lib/DAV/Sharing/Backend.php b/apps/dav/lib/DAV/Sharing/Backend.php index 92971992c20..90d2c7ebf82 100644 --- a/apps/dav/lib/DAV/Sharing/Backend.php +++ b/apps/dav/lib/DAV/Sharing/Backend.php @@ -179,7 +179,7 @@ class Backend { while ($row = $result->fetch()) { $p = $this->principalBackend->getPrincipalByPath($row['principaluri']); $shares[] = [ - 'href' => "principal:${row['principaluri']}", + 'href' => "principal:{$row['principaluri']}", 'commonName' => isset($p['{DAV:}displayname']) ? (string)$p['{DAV:}displayname'] : '', 'status' => 1, 'readOnly' => (int) $row['access'] === self::ACCESS_READ, diff --git a/apps/dav/lib/DAV/Sharing/Xml/Invite.php b/apps/dav/lib/DAV/Sharing/Xml/Invite.php index 161a8dd0ebf..e6219f2bbfe 100644 --- a/apps/dav/lib/DAV/Sharing/Xml/Invite.php +++ b/apps/dav/lib/DAV/Sharing/Xml/Invite.php @@ -100,7 +100,7 @@ class Invite implements XmlSerializable { } /** - * The xmlSerialize metod is called during xml writing. + * The xmlSerialize method is called during xml writing. * * Use the $writer argument to write its own xml serialization. * diff --git a/apps/dav/lib/DAV/SystemPrincipalBackend.php b/apps/dav/lib/DAV/SystemPrincipalBackend.php index e5b9a20037f..07431feb6dd 100644 --- a/apps/dav/lib/DAV/SystemPrincipalBackend.php +++ b/apps/dav/lib/DAV/SystemPrincipalBackend.php @@ -87,7 +87,7 @@ class SystemPrincipalBackend extends AbstractBackend { } /** - * Updates one ore more webdav properties on a principal. + * Updates one or more webdav properties on a principal. * * The list of mutations is stored in a Sabre\DAV\PropPatch object. * To do the actual updates, you must tell this object which properties diff --git a/apps/dav/lib/DAV/ViewOnlyPlugin.php b/apps/dav/lib/DAV/ViewOnlyPlugin.php new file mode 100644 index 00000000000..b4652da09e1 --- /dev/null +++ b/apps/dav/lib/DAV/ViewOnlyPlugin.php @@ -0,0 +1,109 @@ +<?php +/** + * @author Piotr Mrowczynski piotr@owncloud.com + * + * @copyright Copyright (c) 2019, ownCloud GmbH + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\DAV; + +use OCA\DAV\Connector\Sabre\Exception\Forbidden; +use OCA\DAV\Connector\Sabre\File as DavFile; +use OCA\DAV\Meta\MetaFile; +use OCP\Files\FileInfo; +use OCP\Files\NotFoundException; +use Psr\Log\LoggerInterface; +use Sabre\DAV\Server; +use Sabre\DAV\ServerPlugin; +use Sabre\HTTP\RequestInterface; +use Sabre\DAV\Exception\NotFound; + +/** + * Sabre plugin for restricting file share receiver download: + */ +class ViewOnlyPlugin extends ServerPlugin { + + private ?Server $server = null; + private LoggerInterface $logger; + + public function __construct(LoggerInterface $logger) { + $this->logger = $logger; + } + + /** + * 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. + */ + public function initialize(Server $server): void { + $this->server = $server; + //priority 90 to make sure the plugin is called before + //Sabre\DAV\CorePlugin::httpGet + $this->server->on('method:GET', [$this, 'checkViewOnly'], 90); + $this->server->on('method:COPY', [$this, 'checkViewOnly'], 90); + } + + /** + * Disallow download via DAV Api in case file being received share + * and having special permission + * + * @throws Forbidden + * @throws NotFoundException + */ + public function checkViewOnly(RequestInterface $request): bool { + $path = $request->getPath(); + + try { + assert($this->server !== null); + $davNode = $this->server->tree->getNodeForPath($path); + if (!($davNode instanceof DavFile)) { + return true; + } + // Restrict view-only to nodes which are shared + $node = $davNode->getNode(); + + $storage = $node->getStorage(); + + if (!$storage->instanceOfStorage(\OCA\Files_Sharing\SharedStorage::class)) { + return true; + } + // Extract extra permissions + /** @var \OCA\Files_Sharing\SharedStorage $storage */ + $share = $storage->getShare(); + + $attributes = $share->getAttributes(); + if ($attributes === null) { + return true; + } + + // Check if read-only and on whether permission can download is both set and disabled. + $canDownload = $attributes->getAttribute('permissions', 'download'); + if ($canDownload !== null && !$canDownload) { + throw new Forbidden('Access to this resource has been denied because it is in view-only mode.'); + } + } catch (NotFound $e) { + $this->logger->warning($e->getMessage(), [ + 'exception' => $e, + ]); + } + + return true; + } +} diff --git a/apps/dav/lib/Direct/DirectHome.php b/apps/dav/lib/Direct/DirectHome.php index a385cd8f39d..5453a61ed46 100644 --- a/apps/dav/lib/Direct/DirectHome.php +++ b/apps/dav/lib/Direct/DirectHome.php @@ -91,7 +91,7 @@ class DirectHome implements ICollection { return new DirectFile($direct, $this->rootFolder, $this->eventDispatcher); } catch (DoesNotExistException $e) { - // Since the token space is so huge only throttle on non exsisting token + // Since the token space is so huge only throttle on non-existing token $this->throttler->registerAttempt('directlink', $this->request->getRemoteAddress()); $this->throttler->sleepDelay($this->request->getRemoteAddress(), 'directlink'); diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index 5b532465aba..f98dba22925 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -62,6 +62,7 @@ use OCA\DAV\Connector\Sabre\SharesPlugin; use OCA\DAV\Connector\Sabre\TagsPlugin; use OCA\DAV\DAV\CustomPropertiesBackend; use OCA\DAV\DAV\PublicAuth; +use OCA\DAV\DAV\ViewOnlyPlugin; use OCA\DAV\Events\SabrePluginAuthInitEvent; use OCA\DAV\Files\BrowserErrorPagePlugin; use OCA\DAV\Files\LazySearchBackend; @@ -229,6 +230,11 @@ class Server { $this->server->addPlugin(new FakeLockerPlugin()); } + // Allow view-only plugin for webdav requests + $this->server->addPlugin(new ViewOnlyPlugin( + $logger + )); + if (BrowserErrorPagePlugin::isBrowserRequest($request)) { $this->server->addPlugin(new BrowserErrorPagePlugin()); } @@ -307,7 +313,10 @@ class Server { $view )); $this->server->addPlugin( - new BulkUploadPlugin($userFolder, $logger) + new BulkUploadPlugin( + $userFolder, + $logger + ) ); } $this->server->addPlugin(new \OCA\DAV\CalDAV\BirthdayCalendar\EnablePlugin( diff --git a/apps/dav/src/views/Availability.vue b/apps/dav/src/views/Availability.vue index 515b3a3b63a..4a66dc383c2 100644 --- a/apps/dav/src/views/Availability.vue +++ b/apps/dav/src/views/Availability.vue @@ -1,12 +1,12 @@ <template> - <SettingsSection :title="$t('dav', 'Availability')" + <NcSettingsSection :title="$t('dav', 'Availability')" :description="$t('dav', 'If you configure your working hours, other users will see when you are out of office when they book a meeting.')"> <div class="time-zone"> <strong> {{ $t('dav', 'Time zone:') }} </strong> <span class="time-zone-text"> - <TimezonePicker v-model="timezone" /> + <NcTimezonePicker v-model="timezone" /> </span> </div> @@ -24,16 +24,16 @@ :l10n-saturday="$t('dav', 'Saturday')" :l10n-sunday="$t('dav', 'Sunday')" /> - <CheckboxRadioSwitch :checked.sync="automated"> + <NcCheckboxRadioSwitch :checked.sync="automated"> {{ $t('dav', 'Automatically set user status to "Do not disturb" outside of availability to mute all notifications.') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> - <Button :disabled="loading || saving" + <NcButton :disabled="loading || saving" type="primary" @click="save"> {{ $t('dav', 'Save') }} - </Button> - </SettingsSection> + </NcButton> + </NcSettingsSection> </template> <script> @@ -53,19 +53,19 @@ import { disableUserStatusAutomation, } from '../service/PreferenceService' import jstz from 'jstimezonedetect' -import Button from '@nextcloud/vue/dist/Components/Button' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' -import TimezonePicker from '@nextcloud/vue/dist/Components/TimezonePicker' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' +import NcTimezonePicker from '@nextcloud/vue/dist/Components/NcTimezonePicker' export default { name: 'Availability', components: { - Button, - CheckboxRadioSwitch, + NcButton, + NcCheckboxRadioSwitch, CalendarAvailability, - SettingsSection, - TimezonePicker, + NcSettingsSection, + NcTimezonePicker, }, data() { // Try to determine the current timezone, and fall back to UTC otherwise diff --git a/apps/dav/src/views/CalDavSettings.vue b/apps/dav/src/views/CalDavSettings.vue index 714fc9a4d32..776f32bff36 100644 --- a/apps/dav/src/views/CalDavSettings.vue +++ b/apps/dav/src/views/CalDavSettings.vue @@ -1,5 +1,5 @@ <template> - <SettingsSection :title="$t('dav', 'Calendar server')" + <NcSettingsSection :title="$t('dav', 'Calendar server')" :doc-url="userSyncCalendarsDocUrl"> <!-- Can use v-html as: - $t passes the translated string through DOMPurify.sanitize, @@ -7,11 +7,11 @@ <!-- eslint-disable-next-line vue/no-v-html --> <p class="settings-hint" v-html="hint" /> <p> - <CheckboxRadioSwitch id="caldavSendInvitations" + <NcCheckboxRadioSwitch id="caldavSendInvitations" :checked.sync="sendInvitations" type="switch"> {{ $t('dav', 'Send invitations to attendees') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <!-- Can use v-html as: - $t passes the translated string through DOMPurify.sanitize, - replacement strings are not user-controlled. --> @@ -19,12 +19,12 @@ <em v-html="sendInvitationsHelpText" /> </p> <p> - <CheckboxRadioSwitch id="caldavGenerateBirthdayCalendar" + <NcCheckboxRadioSwitch id="caldavGenerateBirthdayCalendar" :checked.sync="generateBirthdayCalendar" type="switch" class="checkbox"> {{ $t('dav', 'Automatically generate a birthday calendar') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <em> {{ $t('dav', 'Birthday calendars will be generated by a background job.') }} </em> @@ -34,11 +34,11 @@ </em> </p> <p> - <CheckboxRadioSwitch id="caldavSendEventReminders" + <NcCheckboxRadioSwitch id="caldavSendEventReminders" :checked.sync="sendEventReminders" type="switch"> {{ $t('dav', 'Send notifications for events') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <!-- Can use v-html as: - $t passes the translated string through DOMPurify.sanitize, - replacement strings are not user-controlled. --> @@ -50,41 +50,41 @@ </em> </p> <p class="indented"> - <CheckboxRadioSwitch id="caldavSendEventRemindersToSharedGroupMembers" + <NcCheckboxRadioSwitch id="caldavSendEventRemindersToSharedGroupMembers" :checked.sync="sendEventRemindersToSharedGroupMembers" type="switch" :disabled="!sendEventReminders"> {{ $t('dav', 'Send reminder notifications to calendar sharees as well' ) }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <em> {{ $t('dav', 'Reminders are always sent to organizers and attendees.' ) }} </em> </p> <p class="indented"> - <CheckboxRadioSwitch id="caldavSendEventRemindersPush" + <NcCheckboxRadioSwitch id="caldavSendEventRemindersPush" :checked.sync="sendEventRemindersPush" type="switch" :disabled="!sendEventReminders"> {{ $t('dav', 'Enable notifications for events via push') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> </p> - </SettingsSection> + </NcSettingsSection> </template> <script> import axios from '@nextcloud/axios' import { generateUrl } from '@nextcloud/router' import { loadState } from '@nextcloud/initial-state' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' const userSyncCalendarsDocUrl = loadState('dav', 'userSyncCalendarsDocUrl', '#') export default { name: 'CalDavSettings', components: { - CheckboxRadioSwitch, - SettingsSection, + NcCheckboxRadioSwitch, + NcSettingsSection, }, data() { return { diff --git a/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap index fa101948bd6..0b23dd80413 100644 --- a/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap +++ b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap @@ -4,28 +4,26 @@ exports[`CalDavSettings interactions 1`] = ` <div> <div class="settings-section" - data-v-548823d7="" + data-v-8e6462a4="" > <h2 class="settings-section__title" - data-v-548823d7="" + data-v-8e6462a4="" > Calendar server <a class="settings-section__info" - data-v-548823d7="" + data-v-8e6462a4="" href="https://docs.nextcloud.com/server/23/go.php?to=user-sync-calendars" role="note" title="External documentation for Calendar server" > <span aria-hidden="true" - aria-label="" class="material-design-icon help-circle-icon" - data-v-548823d7="" - decorative="" + data-v-8e6462a4="" role="img" > <svg @@ -49,7 +47,7 @@ exports[`CalDavSettings interactions 1`] = ` <p class="settings-hint" - data-v-548823d7="" + data-v-8e6462a4="" > Also install the <a @@ -70,33 +68,31 @@ exports[`CalDavSettings interactions 1`] = ` </p> <p - data-v-548823d7="" + data-v-8e6462a4="" > <span class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked" - data-v-036397c2="" - data-v-548823d7="" + data-v-2b31639e="" + data-v-8e6462a4="" style="--icon-size: 36px;" > - <input - class="checkbox-radio-switch__input" - data-v-036397c2="" - id="caldavSendInvitations" - type="checkbox" - value="" - /> - <label class="checkbox-radio-switch__label" - data-v-036397c2="" + data-v-2b31639e="" for="caldavSendInvitations" > + <input + class="checkbox-radio-switch__input" + data-v-2b31639e="" + id="caldavSendInvitations" + type="checkbox" + value="" + /> + <span aria-hidden="true" - aria-label="" class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon" - data-v-036397c2="" - decorative="" + data-v-2b31639e="" role="img" > <svg @@ -120,7 +116,7 @@ exports[`CalDavSettings interactions 1`] = ` </span> <em - data-v-548823d7="" + data-v-8e6462a4="" > Please make sure to properly set up <a @@ -133,33 +129,31 @@ exports[`CalDavSettings interactions 1`] = ` </p> <p - data-v-548823d7="" + data-v-8e6462a4="" > <span class="checkbox-radio-switch checkbox checkbox-radio-switch-switch checkbox-radio-switch--checked" - data-v-036397c2="" - data-v-548823d7="" + data-v-2b31639e="" + data-v-8e6462a4="" style="--icon-size: 36px;" > - <input - class="checkbox-radio-switch__input" - data-v-036397c2="" - id="caldavGenerateBirthdayCalendar" - type="checkbox" - value="" - /> - <label class="checkbox-radio-switch__label" - data-v-036397c2="" + data-v-2b31639e="" for="caldavGenerateBirthdayCalendar" > + <input + class="checkbox-radio-switch__input" + data-v-2b31639e="" + id="caldavGenerateBirthdayCalendar" + type="checkbox" + value="" + /> + <span aria-hidden="true" - aria-label="" class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon" - data-v-036397c2="" - decorative="" + data-v-2b31639e="" role="img" > <svg @@ -183,7 +177,7 @@ exports[`CalDavSettings interactions 1`] = ` </span> <em - data-v-548823d7="" + data-v-8e6462a4="" > Birthday calendars will be generated by a background job. @@ -191,11 +185,11 @@ exports[`CalDavSettings interactions 1`] = ` </em> <br - data-v-548823d7="" + data-v-8e6462a4="" /> <em - data-v-548823d7="" + data-v-8e6462a4="" > Hence they will not be available immediately after enabling but will show up after some time. @@ -204,33 +198,31 @@ exports[`CalDavSettings interactions 1`] = ` </p> <p - data-v-548823d7="" + data-v-8e6462a4="" > <span class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked" - data-v-036397c2="" - data-v-548823d7="" + data-v-2b31639e="" + data-v-8e6462a4="" style="--icon-size: 36px;" > - <input - class="checkbox-radio-switch__input" - data-v-036397c2="" - id="caldavSendEventReminders" - type="checkbox" - value="" - /> - <label class="checkbox-radio-switch__label" - data-v-036397c2="" + data-v-2b31639e="" for="caldavSendEventReminders" > + <input + class="checkbox-radio-switch__input" + data-v-2b31639e="" + id="caldavSendEventReminders" + type="checkbox" + value="" + /> + <span aria-hidden="true" - aria-label="" class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon" - data-v-036397c2="" - decorative="" + data-v-2b31639e="" role="img" > <svg @@ -254,7 +246,7 @@ exports[`CalDavSettings interactions 1`] = ` </span> <em - data-v-548823d7="" + data-v-8e6462a4="" > Please make sure to properly set up <a @@ -266,11 +258,11 @@ exports[`CalDavSettings interactions 1`] = ` </em> <br - data-v-548823d7="" + data-v-8e6462a4="" /> <em - data-v-548823d7="" + data-v-8e6462a4="" > Notifications are sent via background jobs, so these must occur often enough. @@ -280,33 +272,31 @@ exports[`CalDavSettings interactions 1`] = ` <p class="indented" - data-v-548823d7="" + data-v-8e6462a4="" > <span class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked" - data-v-036397c2="" - data-v-548823d7="" + data-v-2b31639e="" + data-v-8e6462a4="" style="--icon-size: 36px;" > - <input - class="checkbox-radio-switch__input" - data-v-036397c2="" - id="caldavSendEventRemindersToSharedGroupMembers" - type="checkbox" - value="" - /> - <label class="checkbox-radio-switch__label" - data-v-036397c2="" + data-v-2b31639e="" for="caldavSendEventRemindersToSharedGroupMembers" > + <input + class="checkbox-radio-switch__input" + data-v-2b31639e="" + id="caldavSendEventRemindersToSharedGroupMembers" + type="checkbox" + value="" + /> + <span aria-hidden="true" - aria-label="" class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon" - data-v-036397c2="" - decorative="" + data-v-2b31639e="" role="img" > <svg @@ -330,7 +320,7 @@ exports[`CalDavSettings interactions 1`] = ` </span> <em - data-v-548823d7="" + data-v-8e6462a4="" > Reminders are always sent to organizers and attendees. @@ -340,33 +330,31 @@ exports[`CalDavSettings interactions 1`] = ` <p class="indented" - data-v-548823d7="" + data-v-8e6462a4="" > <span class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked" - data-v-036397c2="" - data-v-548823d7="" + data-v-2b31639e="" + data-v-8e6462a4="" style="--icon-size: 36px;" > - <input - class="checkbox-radio-switch__input" - data-v-036397c2="" - id="caldavSendEventRemindersPush" - type="checkbox" - value="" - /> - <label class="checkbox-radio-switch__label" - data-v-036397c2="" + data-v-2b31639e="" for="caldavSendEventRemindersPush" > + <input + class="checkbox-radio-switch__input" + data-v-2b31639e="" + id="caldavSendEventRemindersPush" + type="checkbox" + value="" + /> + <span aria-hidden="true" - aria-label="" class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon" - data-v-036397c2="" - decorative="" + data-v-2b31639e="" role="img" > <svg diff --git a/apps/dav/templates/schedule-response-error.php b/apps/dav/templates/schedule-response-error.php index 010ea2ed6cb..ff6ae19fb1f 100644 --- a/apps/dav/templates/schedule-response-error.php +++ b/apps/dav/templates/schedule-response-error.php @@ -1,7 +1,15 @@ -<div class="update"> - <p class="message"><?php p($l->t('There was an error updating your attendance status.'));?></p> - <p class="message"><?php p($l->t('Please contact the organizer directly.'));?></p> - <?php if (isset($_['organizer'])): ?> - <p class="message"><a href="<?php p($_['organizer']) ?>"><?php p(substr($_['organizer'], 7)) ?></a></p> - <?php endif; ?> +<?php +// SPDX-FileCopyrightText: 2018 Georg Ehrke <oc.list@georgehrke.com> +// SPDX-FileCopyrightText: 2020 Christoph Wurst <christoph@winzerhof-wurst.at> +// SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu> +// SPDX-License-Identifier: AGPL-3.0-or-later +?> +<div class="guest-box"> + <div class="notecard error"> + <p><?php p($l->t('There was an error updating your attendance status.'));?></p> + <p><?php p($l->t('Please contact the organizer directly.'));?></p> + <?php if (isset($_['organizer'])): ?> + <p><a href="<?php p($_['organizer']) ?>"><?php p(substr($_['organizer'], 7)) ?></a></p> + <?php endif; ?> + </div> </div> diff --git a/apps/dav/templates/schedule-response-options.php b/apps/dav/templates/schedule-response-options.php index f5ebb46cb26..fe12ea96c79 100644 --- a/apps/dav/templates/schedule-response-options.php +++ b/apps/dav/templates/schedule-response-options.php @@ -1,8 +1,10 @@ <?php -style('dav', 'schedule-response'); +// SPDX-FileCopyrightText: 2018 Georg Ehrke <oc.list@georgehrke.com> +// SPDX-License-Identifier: AGPL-3.0-or-later +\OCP\Util::addStyle('dav', 'schedule-response'); ?> -<div class="update"> +<div class="guest-box"> <form action="" method="post"> <fieldset id="partStat"> <h2><?php p($l->t('Are you accepting the invitation?')); ?></h2> diff --git a/apps/dav/templates/schedule-response-success.php b/apps/dav/templates/schedule-response-success.php index f60cb1e0fa9..fa217164035 100644 --- a/apps/dav/templates/schedule-response-success.php +++ b/apps/dav/templates/schedule-response-success.php @@ -1,4 +1,9 @@ -<div class="update" style="justify-content: space-around; display: flex;"> - <span class="icon icon-checkmark-white"></span> +<?php +// SPDX-FileCopyrightText: 2020 Christoph Wurst <christoph@winzerhof-wurst.at> +// SPDX-FileCopyrightText: 2022 Carl Schwan <carl@carlschwan.eu> +// SPDX-License-Identifier: AGPL-3.0-or-later +?> +<div class="guest-box"> + <div class="icon icon-checkmark"></div> <p class="message"><?php p($l->t('Your attendance was updated successfully.'));?></p> </div> diff --git a/apps/dav/tests/travis/caldavtest/serverinfo-new-endpoint.xml b/apps/dav/tests/travis/caldavtest/serverinfo-new-endpoint.xml index c3ba99ee03d..1542047ff02 100644 --- a/apps/dav/tests/travis/caldavtest/serverinfo-new-endpoint.xml +++ b/apps/dav/tests/travis/caldavtest/serverinfo-new-endpoint.xml @@ -183,7 +183,7 @@ <value>$root:principals/</value> </substitution> - <!-- the core recored type collections--> + <!-- the core record type collections--> <substitution> <key>$uidstype:</key> <value>__uids__</value> diff --git a/apps/dav/tests/travis/caldavtest/serverinfo-old-caldav-endpoint.xml b/apps/dav/tests/travis/caldavtest/serverinfo-old-caldav-endpoint.xml index 8ac822d8e4e..3469e36b4a3 100644 --- a/apps/dav/tests/travis/caldavtest/serverinfo-old-caldav-endpoint.xml +++ b/apps/dav/tests/travis/caldavtest/serverinfo-old-caldav-endpoint.xml @@ -183,7 +183,7 @@ <value>$root:principals/</value> </substitution> - <!-- the core recored type collections--> + <!-- the core record type collections--> <substitution> <key>$uidstype:</key> <value>__uids__</value> diff --git a/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml b/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml index bd9f83a4814..36af27de3a1 100644 --- a/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml +++ b/apps/dav/tests/travis/caldavtest/serverinfo-old-carddav-endpoint.xml @@ -183,7 +183,7 @@ <value>$root:principals/</value> </substitution> - <!-- the core recored type collections--> + <!-- the core record type collections--> <substitution> <key>$uidstype:</key> <value>__uids__</value> diff --git a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php index f2d2014d553..73d21746b64 100644 --- a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php +++ b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php @@ -27,7 +27,6 @@ */ namespace OCA\DAV\Tests\unit\CalDAV; -use OC\KnownUser\KnownUserService; use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\Proxy\ProxyMapper; use OCA\DAV\Connector\Sabre\Principal; @@ -41,6 +40,8 @@ use OCP\IUserSession; use OCP\L10N\IFactory; use OCP\Security\ISecureRandom; use OCP\Share\IManager as ShareManager; +use OC\KnownUser\KnownUserService; +use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet; use Sabre\DAV\Xml\Property\Href; @@ -58,15 +59,18 @@ abstract class AbstractCalDavBackend extends TestCase { /** @var CalDavBackend */ protected $backend; - /** @var Principal | \PHPUnit\Framework\MockObject\MockObject */ + /** @var Principal | MockObject */ protected $principal; - /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IUserManager|MockObject */ protected $userManager; - /** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IGroupManager|MockObject */ protected $groupManager; - /** @var IEventDispatcher|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IEventDispatcher|MockObject */ protected $dispatcher; + + /** @var IConfig | MockObject */ + private $config; /** @var ISecureRandom */ private $random; /** @var LoggerInterface*/ diff --git a/apps/dav/tests/unit/CalDAV/Activity/Provider/BaseTest.php b/apps/dav/tests/unit/CalDAV/Activity/Provider/BaseTest.php index 21cafee4f88..9e1e02189f5 100644 --- a/apps/dav/tests/unit/CalDAV/Activity/Provider/BaseTest.php +++ b/apps/dav/tests/unit/CalDAV/Activity/Provider/BaseTest.php @@ -160,41 +160,4 @@ class BaseTest extends TestCase { 'name' => $gid, ], $this->invokePrivate($this->provider, 'generateGroupParameter', [$gid])); } - - public function dataGenerateUserParameter() { - $u1 = $this->createMock(IUser::class); - $u1->expects($this->any()) - ->method('getDisplayName') - ->willReturn('User 1'); - return [ - ['u1', 'User 1', $u1], - ['u2', 'u2', null], - ]; - } - - /** - * @dataProvider dataGenerateUserParameter - * @param string $uid - * @param string $displayName - * @param IUser|null $user - */ - public function testGenerateUserParameter(string $uid, string $displayName, ?IUser $user) { - $this->userManager->expects($this->once()) - ->method('get') - ->with($uid) - ->willReturn($user); - - $this->assertEquals([ - 'type' => 'user', - 'id' => $uid, - 'name' => $displayName, - ], $this->invokePrivate($this->provider, 'generateUserParameter', [$uid])); - - // Test caching (only 1 user manager invocation allowed) - $this->assertEquals([ - 'type' => 'user', - 'id' => $uid, - 'name' => $displayName, - ], $this->invokePrivate($this->provider, 'generateUserParameter', [$uid])); - } } diff --git a/apps/dav/tests/unit/CalDAV/CalendarImplTest.php b/apps/dav/tests/unit/CalDAV/CalendarImplTest.php index af8c056cac7..6842bdadb53 100644 --- a/apps/dav/tests/unit/CalDAV/CalendarImplTest.php +++ b/apps/dav/tests/unit/CalDAV/CalendarImplTest.php @@ -25,9 +25,13 @@ */ namespace OCA\DAV\Tests\unit\CalDAV; +use OCA\DAV\CalDAV\Auth\CustomPrincipalPlugin; use OCA\DAV\CalDAV\CalDavBackend; use OCA\DAV\CalDAV\Calendar; use OCA\DAV\CalDAV\CalendarImpl; +use OCA\DAV\CalDAV\InvitationResponse\InvitationResponseServer; +use OCA\DAV\CalDAV\Schedule\Plugin; +use PHPUnit\Framework\MockObject\MockObject; class CalendarImplTest extends \Test\TestCase { @@ -51,6 +55,7 @@ class CalendarImplTest extends \Test\TestCase { 'id' => 'fancy_id_123', '{DAV:}displayname' => 'user readable name 123', '{http://apple.com/ns/ical/}calendar-color' => '#AABBCC', + 'uri' => '/this/is/a/uri' ]; $this->backend = $this->createMock(CalDavBackend::class); @@ -125,4 +130,78 @@ class CalendarImplTest extends \Test\TestCase { $this->assertEquals(31, $this->calendarImpl->getPermissions()); } + + public function testHandleImipMessage(): void { + $invitationResponseServer = $this->createConfiguredMock(InvitationResponseServer::class, [ + 'server' => $this->createConfiguredMock(CalDavBackend::class, [ + 'getPlugin' => [ + 'auth' => $this->createMock(CustomPrincipalPlugin::class), + 'schedule' => $this->createMock(Plugin::class) + ] + ]) + ]); + + $message = <<<EOF +BEGIN:VCALENDAR +PRODID:-//Nextcloud/Nextcloud CalDAV Server//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=mailto:lewis@stardew-tent-living.com:ACCEPTED +ORGANIZER:mailto:pierre@generalstore.com +UID:aUniqueUid +SEQUENCE:2 +REQUEST-STATUS:2.0;Success +%sEND:VEVENT +END:VCALENDAR +EOF; + + /** @var CustomPrincipalPlugin|MockObject $authPlugin */ + $authPlugin = $invitationResponseServer->server->getPlugin('auth'); + $authPlugin->expects(self::once()) + ->method('setPrincipalUri') + ->with($this->calendar->getPrincipalURI()); + + /** @var Plugin|MockObject $schedulingPlugin */ + $schedulingPlugin = $invitationResponseServer->server->getPlugin('caldav-schedule'); + $schedulingPlugin->expects(self::once()) + ->method('setPathOfCalendarObjectChange') + ->with('fullcalendarname'); + } + + public function testHandleImipMessageNoCalendarUri(): void { + $invitationResponseServer = $this->createConfiguredMock(InvitationResponseServer::class, [ + 'server' => $this->createConfiguredMock(CalDavBackend::class, [ + 'getPlugin' => [ + 'auth' => $this->createMock(CustomPrincipalPlugin::class), + 'schedule' => $this->createMock(Plugin::class) + ] + ]) + ]); + + $message = <<<EOF +BEGIN:VCALENDAR +PRODID:-//Nextcloud/Nextcloud CalDAV Server//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=mailto:lewis@stardew-tent-living.com:ACCEPTED +ORGANIZER:mailto:pierre@generalstore.com +UID:aUniqueUid +SEQUENCE:2 +REQUEST-STATUS:2.0;Success +%sEND:VEVENT +END:VCALENDAR +EOF; + + /** @var CustomPrincipalPlugin|MockObject $authPlugin */ + $authPlugin = $invitationResponseServer->server->getPlugin('auth'); + $authPlugin->expects(self::once()) + ->method('setPrincipalUri') + ->with($this->calendar->getPrincipalURI()); + + unset($this->calendarInfo['uri']); + $this->expectException('CalendarException'); + $this->calendarImpl->handleIMipMessage('filename.ics', $message); + } } diff --git a/apps/dav/tests/unit/CalDAV/Integration/ExternalCalendarTest.php b/apps/dav/tests/unit/CalDAV/Integration/ExternalCalendarTest.php index 0131ab443a8..d2dbdeac493 100644 --- a/apps/dav/tests/unit/CalDAV/Integration/ExternalCalendarTest.php +++ b/apps/dav/tests/unit/CalDAV/Integration/ExternalCalendarTest.php @@ -40,13 +40,13 @@ class ExternalCalendarTest extends TestCase { $this->assertEquals('app-generated--example-app-id--calendar-uri-in-backend', $this->abstractExternalCalendar->getName()); - // Check that the method is final and can't be overriden by other classes + // Check that the method is final and can't be overridden by other classes $reflectionMethod = new \ReflectionMethod(ExternalCalendar::class, 'getName'); $this->assertTrue($reflectionMethod->isFinal()); } public function testSetName():void { - // Check that the method is final and can't be overriden by other classes + // Check that the method is final and can't be overridden by other classes $reflectionMethod = new \ReflectionMethod(ExternalCalendar::class, 'setName'); $this->assertTrue($reflectionMethod->isFinal()); @@ -57,7 +57,7 @@ class ExternalCalendarTest extends TestCase { } public function createDirectory():void { - // Check that the method is final and can't be overriden by other classes + // Check that the method is final and can't be overridden by other classes $reflectionMethod = new \ReflectionMethod(ExternalCalendar::class, 'createDirectory'); $this->assertTrue($reflectionMethod->isFinal()); diff --git a/apps/dav/tests/unit/CapabilitiesTest.php b/apps/dav/tests/unit/CapabilitiesTest.php index 7abfd08854b..6a9a0c1180a 100644 --- a/apps/dav/tests/unit/CapabilitiesTest.php +++ b/apps/dav/tests/unit/CapabilitiesTest.php @@ -24,6 +24,7 @@ namespace OCA\DAV\Tests\unit; use OCA\DAV\Capabilities; +use OCP\IConfig; use Test\TestCase; /** @@ -31,12 +32,31 @@ use Test\TestCase; */ class CapabilitiesTest extends TestCase { public function testGetCapabilities() { - $capabilities = new Capabilities(); + $config = $this->createMock(IConfig::class); + $config->expects($this->once()) + ->method('getSystemValueBool') + ->with('bulkupload.enabled', $this->isType('bool')) + ->willReturn(false); + $capabilities = new Capabilities($config); $expected = [ 'dav' => [ 'chunking' => '1.0', - // disabled because of https://github.com/nextcloud/desktop/issues/4243 - // 'bulkupload' => '1.0', + ], + ]; + $this->assertSame($expected, $capabilities->getCapabilities()); + } + + public function testGetCapabilitiesWithBulkUpload() { + $config = $this->createMock(IConfig::class); + $config->expects($this->once()) + ->method('getSystemValueBool') + ->with('bulkupload.enabled', $this->isType('bool')) + ->willReturn(true); + $capabilities = new Capabilities($config); + $expected = [ + 'dav' => [ + 'chunking' => '1.0', + 'bulkupload' => '1.0', ], ]; $this->assertSame($expected, $capabilities->getCapabilities()); diff --git a/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php b/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php index dbc2c3550e7..4f3459233aa 100644 --- a/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php +++ b/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php @@ -226,7 +226,7 @@ class BackendTest extends TestCase { ->willReturnSelf(); $event->expects($this->once()) ->method('setType') - ->with('addressbook') + ->with('contacts') ->willReturnSelf(); $event->expects($this->once()) ->method('setAuthor') @@ -396,7 +396,7 @@ class BackendTest extends TestCase { ->willReturnSelf(); $event->expects($this->once()) ->method('setType') - ->with('card') + ->with('contacts') ->willReturnSelf(); $event->expects($this->once()) ->method('setAuthor') diff --git a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php index bb45c88b10d..188b82843cd 100644 --- a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php +++ b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php @@ -34,6 +34,7 @@ use OCP\IConfig; use OCP\IDBConnection; use OCP\IL10N; use Sabre\VObject\Component\VCalendar; +use Sabre\VObject\Property\ICalendar\Duration; use Sabre\VObject\Reader; use Test\TestCase; @@ -82,11 +83,12 @@ class BirthdayServiceTest extends TestCase { * @param string $expectedFieldType * @param string $expectedUnknownYear * @param string $expectedOriginalYear + * @param string|null $expectedReminder * @param string | null $data */ - public function testBuildBirthdayFromContact($expectedSummary, $expectedDTStart, $expectedFieldType, $expectedUnknownYear, $expectedOriginalYear, $data, $fieldType, $prefix, $supports4Bytes) { + public function testBuildBirthdayFromContact($expectedSummary, $expectedDTStart, $expectedFieldType, $expectedUnknownYear, $expectedOriginalYear, $expectedReminder, $data, $fieldType, $prefix, $supports4Bytes, $configuredReminder) { $this->dbConnection->method('supports4ByteText')->willReturn($supports4Bytes); - $cal = $this->service->buildDateFromContact($data, $fieldType, $prefix); + $cal = $this->service->buildDateFromContact($data, $fieldType, $prefix, $configuredReminder); if ($expectedSummary === null) { $this->assertNull($cal); @@ -104,6 +106,11 @@ class BirthdayServiceTest extends TestCase { $this->assertEquals($expectedOriginalYear, $cal->VEVENT->{'X-NEXTCLOUD-BC-YEAR'}->getValue()); } + if ($expectedReminder) { + $this->assertEquals($expectedReminder, $cal->VEVENT->VALARM->TRIGGER->getValue()); + $this->assertEquals('DURATION', $cal->VEVENT->VALARM->TRIGGER->getValueType()); + } + $this->assertEquals('TRANSPARENT', $cal->VEVENT->TRANSP->getValue()); } } @@ -227,10 +234,13 @@ class BirthdayServiceTest extends TestCase { ->with('dav', 'generateBirthdayCalendar', 'yes') ->willReturn('yes'); - $this->config->expects($this->once()) + $this->config->expects($this->exactly(2)) ->method('getUserValue') - ->with('user01', 'dav', 'generateBirthdayCalendar', 'yes') - ->willReturn('yes'); + ->withConsecutive( + ['user01', 'dav', 'generateBirthdayCalendar', 'yes'], + ['user01', 'dav', 'birthdayCalendarReminderOffset', 'PT9H'], + ) + ->willReturnOnConsecutiveCalls('yes', 'PT9H'); $this->cardDav->expects($this->once())->method('getAddressBookById') ->with(666) @@ -402,29 +412,32 @@ class BirthdayServiceTest extends TestCase { public function providesVCards() { return [ - // $expectedSummary, $expectedDTStart, $expectedFieldType, $expectedUnknownYear, $expectedOriginalYear, $data, $fieldType, $prefix, $supports4Byte - [null, null, null, null, null, 'yasfewf', '', '', true], - [null, null, null, null, null, "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", 'BDAY', '', true], - [null, null, null, null, null, "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\nBDAY:\r\nEND:VCARD\r\n", 'BDAY', '', true], - [null, null, null, null, null, "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\nBDAY:someday\r\nEND:VCARD\r\n", 'BDAY', '', true], - ['🎂 12345 (1900)', '19700101', 'BDAY', '0', '1900', "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\nBDAY:19000101\r\nEND:VCARD\r\n", 'BDAY', '', true], - ['🎂 12345 (1900)', '19701231', 'BDAY', '0', '1900', "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\nBDAY:19001231\r\nEND:VCARD\r\n", 'BDAY', '', true], - ['Death of 12345 (1900)', '19701231', 'DEATHDATE', '0', '1900', "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\nDEATHDATE:19001231\r\nEND:VCARD\r\n", 'DEATHDATE', '-death', true], - ['Death of 12345 (1900)', '19701231', 'DEATHDATE', '0', '1900', "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\nDEATHDATE:19001231\r\nEND:VCARD\r\n", 'DEATHDATE', '-death', false], - ['💍 12345 (1900)', '19701231', 'ANNIVERSARY', '0', '1900', "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\nANNIVERSARY:19001231\r\nEND:VCARD\r\n", 'ANNIVERSARY', '-anniversary', true], - ['12345 (⚭1900)', '19701231', 'ANNIVERSARY', '0', '1900', "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\nANNIVERSARY:19001231\r\nEND:VCARD\r\n", 'ANNIVERSARY', '-anniversary', false], - ['🎂 12345', '19701231', 'BDAY', '1', null, "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\nBDAY:--1231\r\nEND:VCARD\r\n", 'BDAY', '', true], - ['🎂 12345', '19701231', 'BDAY', '1', null, "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\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231\r\nEND:VCARD\r\n", 'BDAY', '', true], - [null, null, null, null, null, "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\nBDAY:;VALUE=text:circa 1800\r\nEND:VCARD\r\n", 'BDAY', '', true], - [null, null, null, null, null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nN:12345;;;;\r\nBDAY:20031231\r\nEND:VCARD\r\n", 'BDAY', '', true], - ['🎂 12345 (900)', '19701231', 'BDAY', '0', '900', "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\nBDAY:09001231\r\nEND:VCARD\r\n", 'BDAY', '', true], - ['12345 (*1900)', '19700101', 'BDAY', '0', '1900', "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\nBDAY:19000101\r\nEND:VCARD\r\n", 'BDAY', '', false], - ['12345 (*1900)', '19701231', 'BDAY', '0', '1900', "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\nBDAY:19001231\r\nEND:VCARD\r\n", 'BDAY', '', false], - ['12345 *', '19701231', 'BDAY', '1', null, "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\nBDAY:--1231\r\nEND:VCARD\r\n", 'BDAY', '', false], - ['12345 *', '19701231', 'BDAY', '1', null, "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\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231\r\nEND:VCARD\r\n", 'BDAY', '', false], - [null, null, null, null, null, "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\nBDAY:;VALUE=text:circa 1800\r\nEND:VCARD\r\n", 'BDAY', '', false], - [null, null, null, null, null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nN:12345;;;;\r\nBDAY:20031231\r\nEND:VCARD\r\n", 'BDAY', '', false], - ['12345 (*900)', '19701231', 'BDAY', '0', '900', "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\nBDAY:09001231\r\nEND:VCARD\r\n", 'BDAY', '', false], + // $expectedSummary, $expectedDTStart, $expectedFieldType, $expectedUnknownYear, $expectedOriginalYear, $expectedReminder, $data, $fieldType, $prefix, $supports4Byte, $configuredReminder + [null, null, null, null, null, null, 'yasfewf', '', '', true, null], + [null, null, null, null, null, null, "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", 'BDAY', '', true, null], + [null, null, null, null, null, null, "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\nBDAY:\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + [null, null, null, null, null, null, "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\nBDAY:someday\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + ['🎂 12345 (1900)', '19700101', 'BDAY', '0', '1900', null, "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\nBDAY:19000101\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + ['🎂 12345 (1900)', '19701231', 'BDAY', '0', '1900', null, "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\nBDAY:19001231\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + ['Death of 12345 (1900)', '19701231', 'DEATHDATE', '0', '1900', null, "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\nDEATHDATE:19001231\r\nEND:VCARD\r\n", 'DEATHDATE', '-death', true, null], + ['Death of 12345 (1900)', '19701231', 'DEATHDATE', '0', '1900', null, "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\nDEATHDATE:19001231\r\nEND:VCARD\r\n", 'DEATHDATE', '-death', false, null], + ['💍 12345 (1900)', '19701231', 'ANNIVERSARY', '0', '1900', null, "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\nANNIVERSARY:19001231\r\nEND:VCARD\r\n", 'ANNIVERSARY', '-anniversary', true, null], + ['12345 (⚭1900)', '19701231', 'ANNIVERSARY', '0', '1900', null, "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\nANNIVERSARY:19001231\r\nEND:VCARD\r\n", 'ANNIVERSARY', '-anniversary', false, null], + ['🎂 12345', '19701231', 'BDAY', '1', null, null, "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\nBDAY:--1231\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + ['🎂 12345', '19701231', 'BDAY', '1', null, null, "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\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + [null, null, null, null, null, null, "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\nBDAY:;VALUE=text:circa 1800\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + [null, null, null, null, null, null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nN:12345;;;;\r\nBDAY:20031231\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + ['🎂 12345 (900)', '19701231', 'BDAY', '0', '900', null, "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\nBDAY:09001231\r\nEND:VCARD\r\n", 'BDAY', '', true, null], + ['12345 (*1900)', '19700101', 'BDAY', '0', '1900', null, "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\nBDAY:19000101\r\nEND:VCARD\r\n", 'BDAY', '', false, null], + ['12345 (*1900)', '19701231', 'BDAY', '0', '1900', null, "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\nBDAY:19001231\r\nEND:VCARD\r\n", 'BDAY', '', false, null], + ['12345 *', '19701231', 'BDAY', '1', null, null, "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\nBDAY:--1231\r\nEND:VCARD\r\n", 'BDAY', '', false, null], + ['12345 *', '19701231', 'BDAY', '1', null, null, "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\nBDAY;X-APPLE-OMIT-YEAR=1604:16041231\r\nEND:VCARD\r\n", 'BDAY', '', false, null], + [null, null, null, null, null, null, "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\nBDAY:;VALUE=text:circa 1800\r\nEND:VCARD\r\n", 'BDAY', '', false, null], + [null, null, null, null, null, null, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.1//EN\r\nUID:12345\r\nN:12345;;;;\r\nBDAY:20031231\r\nEND:VCARD\r\n", 'BDAY', '', false, null], + ['12345 (*900)', '19701231', 'BDAY', '0', '900', null, "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\nBDAY:09001231\r\nEND:VCARD\r\n", 'BDAY', '', false, null], + ['12345 (*1900)', '19701231', 'BDAY', '0', '1900', 'PT9H', "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\nBDAY:19001231\r\nEND:VCARD\r\n", 'BDAY', '', false, 'PT9H'], + ['12345 (*1900)', '19701231', 'BDAY', '0', '1900', '-PT15H', "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\nBDAY:19001231\r\nEND:VCARD\r\n", 'BDAY', '', false, '-PT15H'], + ['12345 (*1900)', '19701231', 'BDAY', '0', '1900', '-P6DT15H', "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\nBDAY:19001231\r\nEND:VCARD\r\n", 'BDAY', '', false, '-P6DT15H'], ]; } } diff --git a/apps/dav/tests/unit/Connector/Sabre/FileTest.php b/apps/dav/tests/unit/Connector/Sabre/FileTest.php index 9870a62845c..6a954378d02 100644 --- a/apps/dav/tests/unit/Connector/Sabre/FileTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/FileTest.php @@ -316,7 +316,7 @@ class FileTest extends TestCase { * @param string $viewRoot root to use for the view * @param null|Request $request the HTTP request * - * @return null|string of the PUT operaiton which is usually the etag + * @return null|string of the PUT operation which is usually the etag */ private function doPut($path, $viewRoot = null, Request $request = null) { $view = \OC\Files\Filesystem::getView(); diff --git a/apps/dav/tests/unit/Connector/Sabre/NodeTest.php b/apps/dav/tests/unit/Connector/Sabre/NodeTest.php index 00fd0ebd8aa..3ac5b8f841a 100644 --- a/apps/dav/tests/unit/Connector/Sabre/NodeTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/NodeTest.php @@ -29,8 +29,11 @@ namespace OCA\DAV\Tests\unit\Connector\Sabre; use OC\Files\FileInfo; use OC\Files\View; +use OC\Share20\ShareAttributes; +use OCA\Files_Sharing\SharedStorage; use OCP\Files\Mount\IMountPoint; use OCP\Files\Storage; +use OCP\Share\IAttributes; use OCP\Share\IManager; use OCP\Share\IShare; @@ -169,6 +172,65 @@ class NodeTest extends \Test\TestCase { $this->assertEquals($expected, $node->getSharePermissions($user)); } + public function testShareAttributes() { + $storage = $this->getMockBuilder(SharedStorage::class) + ->disableOriginalConstructor() + ->setMethods(['getShare']) + ->getMock(); + + $shareManager = $this->getMockBuilder(IManager::class)->disableOriginalConstructor()->getMock(); + $share = $this->getMockBuilder(IShare::class)->disableOriginalConstructor()->getMock(); + + $storage->expects($this->once()) + ->method('getShare') + ->willReturn($share); + + $attributes = new ShareAttributes(); + $attributes->setAttribute('permissions', 'download', false); + + $share->expects($this->once())->method('getAttributes')->willReturn($attributes); + + $info = $this->getMockBuilder(FileInfo::class) + ->disableOriginalConstructor() + ->setMethods(['getStorage', 'getType']) + ->getMock(); + + $info->method('getStorage')->willReturn($storage); + $info->method('getType')->willReturn(FileInfo::TYPE_FOLDER); + + $view = $this->getMockBuilder(View::class) + ->disableOriginalConstructor() + ->getMock(); + + $node = new \OCA\DAV\Connector\Sabre\File($view, $info); + $this->invokePrivate($node, 'shareManager', [$shareManager]); + $this->assertEquals($attributes->toArray(), $node->getShareAttributes()); + } + + public function testShareAttributesNonShare() { + $storage = $this->getMockBuilder(Storage::class) + ->disableOriginalConstructor() + ->getMock(); + + $shareManager = $this->getMockBuilder(IManager::class)->disableOriginalConstructor()->getMock(); + + $info = $this->getMockBuilder(FileInfo::class) + ->disableOriginalConstructor() + ->setMethods(['getStorage', 'getType']) + ->getMock(); + + $info->method('getStorage')->willReturn($storage); + $info->method('getType')->willReturn(FileInfo::TYPE_FOLDER); + + $view = $this->getMockBuilder(View::class) + ->disableOriginalConstructor() + ->getMock(); + + $node = new \OCA\DAV\Connector\Sabre\File($view, $info); + $this->invokePrivate($node, 'shareManager', [$shareManager]); + $this->assertEquals([], $node->getShareAttributes()); + } + public function sanitizeMtimeProvider() { return [ [123456789, 123456789], diff --git a/apps/dav/tests/unit/Controller/DirectControllerTest.php b/apps/dav/tests/unit/Controller/DirectControllerTest.php index 00771e7f7a6..fe6d4ea8f24 100644 --- a/apps/dav/tests/unit/Controller/DirectControllerTest.php +++ b/apps/dav/tests/unit/Controller/DirectControllerTest.php @@ -34,11 +34,12 @@ use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\OCS\OCSBadRequestException; use OCP\AppFramework\OCS\OCSNotFoundException; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\IRootFolder; use OCP\IRequest; -use OCP\IURLGenerator; +use OCP\IUrlGenerator; use OCP\Security\ISecureRandom; use Test\TestCase; @@ -56,11 +57,13 @@ class DirectControllerTest extends TestCase { /** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */ private $timeFactory; - /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IUrlGenerator|\PHPUnit\Framework\MockObject\MockObject */ private $urlGenerator; - /** @var DirectController */ - private $controller; + /** @var IEventDispatcher|\PHPUnit\Framework\MockObject\MockObject */ + private $eventDispatcher; + + private DirectController $controller; protected function setUp(): void { parent::setUp(); @@ -69,7 +72,8 @@ class DirectControllerTest extends TestCase { $this->directMapper = $this->createMock(DirectMapper::class); $this->random = $this->createMock(ISecureRandom::class); $this->timeFactory = $this->createMock(ITimeFactory::class); - $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->urlGenerator = $this->createMock(IUrlGenerator::class); + $this->eventDispatcher = $this->createMock(IEventDispatcher::class); $this->controller = new DirectController( 'dav', @@ -79,11 +83,12 @@ class DirectControllerTest extends TestCase { $this->directMapper, $this->random, $this->timeFactory, - $this->urlGenerator + $this->urlGenerator, + $this->eventDispatcher ); } - public function testGetUrlNonExistingFileId() { + public function testGetUrlNonExistingFileId(): void { $userFolder = $this->createMock(Folder::class); $this->rootFolder->method('getUserFolder') ->with('awesomeUser') @@ -97,7 +102,7 @@ class DirectControllerTest extends TestCase { $this->controller->getUrl(101); } - public function testGetUrlForFolder() { + public function testGetUrlForFolder(): void { $userFolder = $this->createMock(Folder::class); $this->rootFolder->method('getUserFolder') ->with('awesomeUser') @@ -113,7 +118,7 @@ class DirectControllerTest extends TestCase { $this->controller->getUrl(101); } - public function testGetUrlValid() { + public function testGetUrlValid(): void { $userFolder = $this->createMock(Folder::class); $this->rootFolder->method('getUserFolder') ->with('awesomeUser') @@ -128,6 +133,9 @@ class DirectControllerTest extends TestCase { ->with(101) ->willReturn([$file]); + $userFolder->method('getRelativePath') + ->willReturn('/path'); + $this->random->method('generate') ->with( 60, diff --git a/apps/dav/tests/unit/DAV/ViewOnlyPluginTest.php b/apps/dav/tests/unit/DAV/ViewOnlyPluginTest.php new file mode 100644 index 00000000000..f86a60fb4bf --- /dev/null +++ b/apps/dav/tests/unit/DAV/ViewOnlyPluginTest.php @@ -0,0 +1,117 @@ +<?php +/** + * @author Piotr Mrowczynski piotr@owncloud.com + * + * @copyright Copyright (c) 2019, ownCloud GmbH + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\Tests\unit\DAV; + +use OCA\DAV\DAV\ViewOnlyPlugin; +use OCA\Files_Sharing\SharedStorage; +use OCA\DAV\Connector\Sabre\File as DavFile; +use OCP\Files\File; +use OCP\Files\Storage\IStorage; +use OCP\Share\IAttributes; +use OCP\Share\IShare; +use Psr\Log\LoggerInterface; +use Sabre\DAV\Server; +use Sabre\DAV\Tree; +use Test\TestCase; +use Sabre\HTTP\RequestInterface; +use OCA\DAV\Connector\Sabre\Exception\Forbidden; + +class ViewOnlyPluginTest extends TestCase { + + private ViewOnlyPlugin $plugin; + /** @var Tree | \PHPUnit\Framework\MockObject\MockObject */ + private $tree; + /** @var RequestInterface | \PHPUnit\Framework\MockObject\MockObject */ + private $request; + + public function setUp(): void { + $this->plugin = new ViewOnlyPlugin( + $this->createMock(LoggerInterface::class) + ); + $this->request = $this->createMock(RequestInterface::class); + $this->tree = $this->createMock(Tree::class); + + $server = $this->createMock(Server::class); + $server->tree = $this->tree; + + $this->plugin->initialize($server); + } + + public function testCanGetNonDav(): void { + $this->request->expects($this->once())->method('getPath')->willReturn('files/test/target'); + $this->tree->method('getNodeForPath')->willReturn(null); + + $this->assertTrue($this->plugin->checkViewOnly($this->request)); + } + + public function testCanGetNonShared(): void { + $this->request->expects($this->once())->method('getPath')->willReturn('files/test/target'); + $davNode = $this->createMock(DavFile::class); + $this->tree->method('getNodeForPath')->willReturn($davNode); + + $file = $this->createMock(File::class); + $davNode->method('getNode')->willReturn($file); + + $storage = $this->createMock(IStorage::class); + $file->method('getStorage')->willReturn($storage); + $storage->method('instanceOfStorage')->with(SharedStorage::class)->willReturn(false); + + $this->assertTrue($this->plugin->checkViewOnly($this->request)); + } + + public function providesDataForCanGet(): array { + return [ + // has attribute permissions-download enabled - can get file + [ $this->createMock(File::class), true, true], + // has no attribute permissions-download - can get file + [ $this->createMock(File::class), null, true], + // has attribute permissions-download disabled- cannot get the file + [ $this->createMock(File::class), false, false], + ]; + } + + /** + * @dataProvider providesDataForCanGet + */ + public function testCanGet(File $nodeInfo, ?bool $attrEnabled, bool $expectCanDownloadFile): void { + $this->request->expects($this->once())->method('getPath')->willReturn('files/test/target'); + + $davNode = $this->createMock(DavFile::class); + $this->tree->method('getNodeForPath')->willReturn($davNode); + + $davNode->method('getNode')->willReturn($nodeInfo); + + $storage = $this->createMock(SharedStorage::class); + $share = $this->createMock(IShare::class); + $nodeInfo->method('getStorage')->willReturn($storage); + $storage->method('instanceOfStorage')->with(SharedStorage::class)->willReturn(true); + $storage->method('getShare')->willReturn($share); + + $extAttr = $this->createMock(IAttributes::class); + $share->method('getAttributes')->willReturn($extAttr); + $extAttr->method('getAttribute')->with('permissions', 'download')->willReturn($attrEnabled); + + if (!$expectCanDownloadFile) { + $this->expectException(Forbidden::class); + } + $this->plugin->checkViewOnly($this->request); + } +} diff --git a/apps/encryption/composer/composer/installed.php b/apps/encryption/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/encryption/composer/composer/installed.php +++ b/apps/encryption/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/encryption/l10n/de.js b/apps/encryption/l10n/de.js index 8a0e4e1483d..454579b192a 100644 --- a/apps/encryption/l10n/de.js +++ b/apps/encryption/l10n/de.js @@ -16,28 +16,28 @@ OC.L10N.register( "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.", "Recovery Key disabled" : "Wiederherstellungsschlüssel deaktiviert", "Recovery Key enabled" : "Wiederherstellungsschlüssel aktiviert", - "Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuche es noch einmal oder kontaktiere Deinen Administrator", + "Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuche es noch einmal oder kontaktiere deinen Administrator", "Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.", "The old password was not correct, please try again." : "Das alte Passwort war falsch, bitte versuche es erneut.", "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuche es noch einmal.", "Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde aktualisiert.", - "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Falscher privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisiere Deinen privaten Schlüssel in Deinen persönlichen Einstellungen um wieder Zugriff auf die verschlüsselten Dateien zu erhalten.", - "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Verschlüsselung-App ist aktiviert, aber Deine Schlüssel sind nicht initialisiert. Bitte melde Dich ab und wieder an.", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Falscher privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisiere deinen privaten Schlüssel in deinen persönlichen Einstellungen um wieder Zugriff auf die verschlüsselten Dateien zu erhalten.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Verschlüsselung-App ist aktiviert, aber deine Schlüssel sind nicht initialisiert. Bitte melde dich ab und wieder an.", "Please enable server side encryption in the admin settings in order to use the encryption module." : "Bitte aktiviere server-seitige Verschlüsselung in den Administrator-Einstellungen um das Verschlüsselungsmodul nutzen zu können", "Encryption app is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit", "Bad Signature" : "Ungültige Signatur", "Missing Signature" : "Fehlende Signatur", "one-time password for server-side-encryption" : "Einmal-Passwort für serverseitige Verschlüsselung", - "Cannot 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 kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit Dir zu teilen.", - "Cannot 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.", + "Cannot 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 kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit dir zu teilen.", + "Cannot 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", "Default encryption module for server-side encryption" : "Standard-Verschlüsselungsmodul für serverseitige Verschlüsselung", "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Zur Verwendung dieses Verschlüsselungsmoduls muss serverseitige \n\t\tVerschlüsselung in den Admin-Einstellungen aktiviert werden. Nach der\n\t\tAktivierung werden alle Dateien verschlüsselt. Die Verschlüsselung basiert\n\t\tauf AES 256 Schlüsseln. Dieses Modul verschlüsselt nur neue Dateien,\n\t\texistierende Dateien werden nicht geädnert. Es ist nicht möglich die Ver-\n\t\tschlüsselung zu deaktivieren und zum Unverschlüsselten System zurück-\n\t\tzu kehren. Vor der Entscheidung das Verschlüsselungsmodul zu verwenden\n\t\tsollte unbedingt die Dokumentation aufmerksam gelesen werden.", - "Hey there,\n\nThe administration 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,\n\nder Administrator hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort '%s' verschlüsselt.\n\nBitte melde Dich auf der Web-Oberfläche an, gehe zu Deinen persönlichen Einstellungen und aktualisiere dort Dein Verschlüsselungspasswort, indem Du das Passwort in das 'altes Anmelde-Passwort' und in das 'aktuelles Anmelde-Passwort' Feld eingibst.\n\n", + "Hey there,\n\nThe administration 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,\n\nder Administrator hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort '%s' verschlüsselt.\n\nBitte melde dich auf der Web-Oberfläche an, gehe zu deinen persönlichen Einstellungen und aktualisiere dort dein Verschlüsselungspasswort, indem du das Passwort in das 'altes Anmelde-Passwort' und in das 'aktuelles Anmelde-Passwort' Feld eingibst.\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 administration 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 Passwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde Dich in der Web-Oberfläche 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 Anmelde-Passwort' und in das 'aktuellen Anmelde-Passwort' Feld eingibst.<br><br>", - "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 melde Dich ab und wieder an", + "Hey there,<br><br>The administration 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 Passwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde dich in der Web-Oberfläche 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 Anmelde-Passwort' und in das 'aktuellen Anmelde-Passwort' Feld eingibst.<br><br>", + "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 melde dich ab und wieder an", "Encrypt the home storage" : "Benutzerverzeichnis verschlüsseln", "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", "Enable recovery key" : "Wiederherstellungsschlüssel aktivieren", @@ -51,17 +51,17 @@ OC.L10N.register( "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen", "Change Password" : "Passwort ändern", "Basic encryption module" : "Basisverschlüsselungsmodul", - "Your private key password no longer matches your log-in password." : "Das Passwort für Deinen privaten Schlüssel stimmt nicht mehr mit Deinem Anmelde-Passwort überein.", - "Set your old private key password to your current log-in password:" : "Dein altes Passwort für den privaten Schlüssel auf Dein aktuelles Anmeldepasswort setzen:", - " If you don't remember your old password you can ask your administrator to recover your files." : "Falls Du Dich nicht an Dein altes Passwort erinnern kannst, frage Deinen Administrator, um Deine Dateien wiederherzustellen.", + "Your private key password no longer matches your log-in password." : "Das Passwort für deinen privaten Schlüssel stimmt nicht mehr mit deinem Anmelde-Passwort überein.", + "Set your old private key password to your current log-in password:" : "Dein altes Passwort für den privaten Schlüssel auf dein aktuelles Anmeldepasswort setzen:", + " If you don't remember your old password you can ask your administrator to recover your files." : "Falls du dich nicht an dein altes Passwort erinnern kannst, frage deinen Administrator, um deine Dateien wiederherzustellen.", "Old log-in password" : "Altes Anmelde-Passwort", "Current log-in password" : "Aktuelles Passwort", "Update Private Key Password" : "Das Passwort des privaten Schlüssels aktualisieren", "Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:", - "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option hast Du die Möglichkeit, wieder auf Deine verschlüsselten Dateien zugreifen zu können, wenn Du Dein Passwort verloren hast.", + "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option hast du die Möglichkeit, wieder auf deine verschlüsselten Dateien zugreifen zu können, wenn du dein Passwort verloren hast.", "Enabled" : "Aktiviert", "Disabled" : "Deaktiviert", - "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,\n\nder Administrator hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort '%s' verschlüsselt.\n\nBitte melde Dich auf der Web-Oberfläche an, gehe zu Deinen persönlichen Einstellungen und aktualisiere dort Dein Verschlüsselungspasswort, indem Du das Passwort in das 'altes Anmelde-Passwort' und in das 'aktuelles Anmelde-Passwort' Feld eingibst.\n\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>" : "Hallo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Passwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde Dich in der Web-Oberfläche 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 Anmelde-Passwort' und in das 'aktuellen Anmelde-Passwort' Feld eingibst.<br><br>" + "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,\n\nder Administrator hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort '%s' verschlüsselt.\n\nBitte melde dich auf der Web-Oberfläche an, gehe zu deinen persönlichen Einstellungen und aktualisiere dort dein Verschlüsselungspasswort, indem du das Passwort in das 'altes Anmelde-Passwort' und in das 'aktuelles Anmelde-Passwort' Feld eingibst.\n\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>" : "Hallo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Passwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde dich in der Web-Oberfläche 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 Anmelde-Passwort' und in das 'aktuellen Anmelde-Passwort' Feld eingibst.<br><br>" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/encryption/l10n/de.json b/apps/encryption/l10n/de.json index a1321dfe30a..426527e2feb 100644 --- a/apps/encryption/l10n/de.json +++ b/apps/encryption/l10n/de.json @@ -14,28 +14,28 @@ "Could not change the password. Maybe the old password was not correct." : "Das Passwort konnte nicht geändert werden. Vielleicht war das alte Passwort falsch.", "Recovery Key disabled" : "Wiederherstellungsschlüssel deaktiviert", "Recovery Key enabled" : "Wiederherstellungsschlüssel aktiviert", - "Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuche es noch einmal oder kontaktiere Deinen Administrator", + "Could not enable the recovery key, please try again or contact your administrator" : "Der Wiederherstellungsschlüssel konnte nicht aktiviert werden, bitte versuche es noch einmal oder kontaktiere deinen Administrator", "Could not update the private key password." : "Das Passwort des privaten Schlüssels konnte nicht aktualisiert werden.", "The old password was not correct, please try again." : "Das alte Passwort war falsch, bitte versuche es erneut.", "The current log-in password was not correct, please try again." : "Das aktuelle Anmeldepasswort war nicht korrekt, bitte versuche es noch einmal.", "Private key password successfully updated." : "Das Passwort des privaten Schlüssels wurde aktualisiert.", - "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Falscher privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisiere Deinen privaten Schlüssel in Deinen persönlichen Einstellungen um wieder Zugriff auf die verschlüsselten Dateien zu erhalten.", - "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Verschlüsselung-App ist aktiviert, aber Deine Schlüssel sind nicht initialisiert. Bitte melde Dich ab und wieder an.", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Falscher privater Schlüssel für die Verschlüsselungs-App. Bitte aktualisiere deinen privaten Schlüssel in deinen persönlichen Einstellungen um wieder Zugriff auf die verschlüsselten Dateien zu erhalten.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Verschlüsselung-App ist aktiviert, aber deine Schlüssel sind nicht initialisiert. Bitte melde dich ab und wieder an.", "Please enable server side encryption in the admin settings in order to use the encryption module." : "Bitte aktiviere server-seitige Verschlüsselung in den Administrator-Einstellungen um das Verschlüsselungsmodul nutzen zu können", "Encryption app is enabled and ready" : "Verschlüsselungs-App ist aktiviert und bereit", "Bad Signature" : "Ungültige Signatur", "Missing Signature" : "Fehlende Signatur", "one-time password for server-side-encryption" : "Einmal-Passwort für serverseitige Verschlüsselung", - "Cannot 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 kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit Dir zu teilen.", - "Cannot 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.", + "Cannot 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 kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit dir zu teilen.", + "Cannot 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", "Default encryption module for server-side encryption" : "Standard-Verschlüsselungsmodul für serverseitige Verschlüsselung", "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Zur Verwendung dieses Verschlüsselungsmoduls muss serverseitige \n\t\tVerschlüsselung in den Admin-Einstellungen aktiviert werden. Nach der\n\t\tAktivierung werden alle Dateien verschlüsselt. Die Verschlüsselung basiert\n\t\tauf AES 256 Schlüsseln. Dieses Modul verschlüsselt nur neue Dateien,\n\t\texistierende Dateien werden nicht geädnert. Es ist nicht möglich die Ver-\n\t\tschlüsselung zu deaktivieren und zum Unverschlüsselten System zurück-\n\t\tzu kehren. Vor der Entscheidung das Verschlüsselungsmodul zu verwenden\n\t\tsollte unbedingt die Dokumentation aufmerksam gelesen werden.", - "Hey there,\n\nThe administration 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,\n\nder Administrator hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort '%s' verschlüsselt.\n\nBitte melde Dich auf der Web-Oberfläche an, gehe zu Deinen persönlichen Einstellungen und aktualisiere dort Dein Verschlüsselungspasswort, indem Du das Passwort in das 'altes Anmelde-Passwort' und in das 'aktuelles Anmelde-Passwort' Feld eingibst.\n\n", + "Hey there,\n\nThe administration 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,\n\nder Administrator hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort '%s' verschlüsselt.\n\nBitte melde dich auf der Web-Oberfläche an, gehe zu deinen persönlichen Einstellungen und aktualisiere dort dein Verschlüsselungspasswort, indem du das Passwort in das 'altes Anmelde-Passwort' und in das 'aktuelles Anmelde-Passwort' Feld eingibst.\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 administration 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 Passwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde Dich in der Web-Oberfläche 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 Anmelde-Passwort' und in das 'aktuellen Anmelde-Passwort' Feld eingibst.<br><br>", - "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 melde Dich ab und wieder an", + "Hey there,<br><br>The administration 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 Passwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde dich in der Web-Oberfläche 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 Anmelde-Passwort' und in das 'aktuellen Anmelde-Passwort' Feld eingibst.<br><br>", + "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 melde dich ab und wieder an", "Encrypt the home storage" : "Benutzerverzeichnis verschlüsseln", "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", "Enable recovery key" : "Wiederherstellungsschlüssel aktivieren", @@ -49,17 +49,17 @@ "Repeat new recovery key password" : "Neues Passwort für den Wiederherstellungsschlüssel wiederholen", "Change Password" : "Passwort ändern", "Basic encryption module" : "Basisverschlüsselungsmodul", - "Your private key password no longer matches your log-in password." : "Das Passwort für Deinen privaten Schlüssel stimmt nicht mehr mit Deinem Anmelde-Passwort überein.", - "Set your old private key password to your current log-in password:" : "Dein altes Passwort für den privaten Schlüssel auf Dein aktuelles Anmeldepasswort setzen:", - " If you don't remember your old password you can ask your administrator to recover your files." : "Falls Du Dich nicht an Dein altes Passwort erinnern kannst, frage Deinen Administrator, um Deine Dateien wiederherzustellen.", + "Your private key password no longer matches your log-in password." : "Das Passwort für deinen privaten Schlüssel stimmt nicht mehr mit deinem Anmelde-Passwort überein.", + "Set your old private key password to your current log-in password:" : "Dein altes Passwort für den privaten Schlüssel auf dein aktuelles Anmeldepasswort setzen:", + " If you don't remember your old password you can ask your administrator to recover your files." : "Falls du dich nicht an dein altes Passwort erinnern kannst, frage deinen Administrator, um deine Dateien wiederherzustellen.", "Old log-in password" : "Altes Anmelde-Passwort", "Current log-in password" : "Aktuelles Passwort", "Update Private Key Password" : "Das Passwort des privaten Schlüssels aktualisieren", "Enable password recovery:" : "Die Passwort-Wiederherstellung aktivieren:", - "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option hast Du die Möglichkeit, wieder auf Deine verschlüsselten Dateien zugreifen zu können, wenn Du Dein Passwort verloren hast.", + "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Durch die Aktivierung dieser Option hast du die Möglichkeit, wieder auf deine verschlüsselten Dateien zugreifen zu können, wenn du dein Passwort verloren hast.", "Enabled" : "Aktiviert", "Disabled" : "Deaktiviert", - "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,\n\nder Administrator hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort '%s' verschlüsselt.\n\nBitte melde Dich auf der Web-Oberfläche an, gehe zu Deinen persönlichen Einstellungen und aktualisiere dort Dein Verschlüsselungspasswort, indem Du das Passwort in das 'altes Anmelde-Passwort' und in das 'aktuelles Anmelde-Passwort' Feld eingibst.\n\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>" : "Hallo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Passwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde Dich in der Web-Oberfläche 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 Anmelde-Passwort' und in das 'aktuellen Anmelde-Passwort' Feld eingibst.<br><br>" + "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,\n\nder Administrator hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort '%s' verschlüsselt.\n\nBitte melde dich auf der Web-Oberfläche an, gehe zu deinen persönlichen Einstellungen und aktualisiere dort dein Verschlüsselungspasswort, indem du das Passwort in das 'altes Anmelde-Passwort' und in das 'aktuelles Anmelde-Passwort' Feld eingibst.\n\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>" : "Hallo,<br><br>der Administrator hat die servereitige Verschlüsselung aktiviert. Die Dateien wurden mit dem Passwort <strong>%s</strong> verschlüsselt.<br><br>Bitte melde dich in der Web-Oberfläche 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 Anmelde-Passwort' und in das 'aktuellen Anmelde-Passwort' Feld eingibst.<br><br>" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/en_GB.js b/apps/encryption/l10n/en_GB.js index 2745d61b540..f741e77fd69 100644 --- a/apps/encryption/l10n/en_GB.js +++ b/apps/encryption/l10n/en_GB.js @@ -28,11 +28,15 @@ OC.L10N.register( "Bad Signature" : "Bad Signature", "Missing Signature" : "Missing Signature", "one-time password for server-side-encryption" : "one-time password for server-side-encryption", + "Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you.", + "Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you.", "Default encryption module" : "Default encryption module", "Default encryption module for server-side encryption" : "Default encryption module for server-side encryption", "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption.", + "Hey there,\n\nThe administration 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 there,\n\nThe administration 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", "The share will expire on %s." : "The share will expire on %s.", "Cheers!" : "Cheers!", + "Hey there,<br><br>The administration 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>" : "Hey there,<br><br>The administration 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>", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Encryption app is enabled but your keys are not initialised, please log-out and log-in again", "Encrypt the home storage" : "Encrypt the home storage", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted", @@ -57,6 +61,7 @@ OC.L10N.register( "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss", "Enabled" : "Enabled", "Disabled" : "Disabled", + "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 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 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>" : "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>" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/encryption/l10n/en_GB.json b/apps/encryption/l10n/en_GB.json index 216ec6a8a14..d5c3f16b8b5 100644 --- a/apps/encryption/l10n/en_GB.json +++ b/apps/encryption/l10n/en_GB.json @@ -26,11 +26,15 @@ "Bad Signature" : "Bad Signature", "Missing Signature" : "Missing Signature", "one-time password for server-side-encryption" : "one-time password for server-side-encryption", + "Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you.", + "Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you.", "Default encryption module" : "Default encryption module", "Default encryption module for server-side encryption" : "Default encryption module for server-side encryption", "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption.", + "Hey there,\n\nThe administration 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 there,\n\nThe administration 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", "The share will expire on %s." : "The share will expire on %s.", "Cheers!" : "Cheers!", + "Hey there,<br><br>The administration 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>" : "Hey there,<br><br>The administration 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>", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Encryption app is enabled but your keys are not initialised, please log-out and log-in again", "Encrypt the home storage" : "Encrypt the home storage", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted", @@ -55,6 +59,7 @@ "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Enabling this option will allow you to reobtain access to your encrypted files in case of password loss", "Enabled" : "Enabled", "Disabled" : "Disabled", + "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 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 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>" : "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>" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/encryption/l10n/es_SV.js b/apps/encryption/l10n/es_SV.js index 586bb712a7a..3788cabf162 100644 --- a/apps/encryption/l10n/es_SV.js +++ b/apps/encryption/l10n/es_SV.js @@ -57,4 +57,4 @@ OC.L10N.register( "Disabled" : "Deshabilitado", "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. Tus archivos fueron encriptados usando la contraseña <strong>%s</strong>.<br><br> Por favor inicia sesisón en la interface web, ve a la sección \"módulo de encripción básica\" de tus configuraciones personales y actualiza tu contraseña de encripción ingresando esta contraseña en el campo \"contraseña de inicio de sesión anterior\" y tu contraseña de inicio de sesión actual. <br><br>" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/encryption/l10n/es_SV.json b/apps/encryption/l10n/es_SV.json index 14fa4ad55b6..d877d85d8c9 100644 --- a/apps/encryption/l10n/es_SV.json +++ b/apps/encryption/l10n/es_SV.json @@ -54,5 +54,5 @@ "Enabled" : "Habilitado", "Disabled" : "Deshabilitado", "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. Tus archivos fueron encriptados usando la contraseña <strong>%s</strong>.<br><br> Por favor inicia sesisón en la interface web, ve a la sección \"módulo de encripción básica\" de tus configuraciones personales y actualiza tu contraseña de encripción ingresando esta contraseña en el campo \"contraseña de inicio de sesión anterior\" y tu contraseña de inicio de sesión actual. <br><br>" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/encryption/l10n/eu.js b/apps/encryption/l10n/eu.js index 9376a38b3a0..19e5ebf95ee 100644 --- a/apps/encryption/l10n/eu.js +++ b/apps/encryption/l10n/eu.js @@ -21,9 +21,9 @@ OC.L10N.register( "The old password was not correct, please try again." : "Pasahitz zaharra ez da egokia. Mesedez, saiatu berriro.", "The current log-in password was not correct, please try again." : "Oraingo pasahitza ez da egokia. Mesedez, saiatu berriro.", "Private key password successfully updated." : "Gako pasahitz pribatu behar bezala eguneratu da.", - "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Enkriptazio aplikaziorako gako pribatu desegokia. Zure gako pribatuaren pasahitza eguneratu ezarpen pertsonaletan, enkriptatutako fitxategiak berriz atzitu nahi badituzu", - "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Enkriptazio aplikazioa gaituta dago, baina zure gakoak ez dira hasieratu. Saiotik irten eta berriz sartu, mesedez.", - "Please enable server side encryption in the admin settings in order to use the encryption module." : "Enkriptazio modulua erabili ahal izateko zerbitzariaren aldean enkriptazioagaitu administrazio ezarpenetan", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Enkriptatze aplikaziorako gako pribatu desegokia. Zure gako pribatuaren pasahitza eguneratu ezarpen pertsonaletan, enkriptatutako fitxategiak berriz atzitu nahi badituzu.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Enkriptatze aplikazioa gaituta dago, baina zure gakoak ez dira hasieratu. Itxi saioa eta sartu berriro, mesedez.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Enkriptatze modulua erabili ahal izateko, gaitu enkriptatzea zerbitzariaren aldeko administrazio ezarpenetan.", "Encryption app is enabled and ready" : "Enkriptazioa app-a gaituta eta martxan dago", "Bad Signature" : "Sinadura ezegokia", "Missing Signature" : "Sinadura falta da", @@ -37,7 +37,7 @@ OC.L10N.register( "The share will expire on %s." : "Elkarbanaketa %s-n iraungiko da.", "Cheers!" : "Ongi izan!", "Hey there,<br><br>The administration 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>" : "Kaixo,<br><br>administrazioak zerbitzariaren aldeko enkriptatzea gaitu du. Zure fitxategiak <strong>%s</strong>.<br><br>pasahitza erabiliz enkriptatu dira. Mesedez, hasi saioa web interfazean, joan zure ezarpen pertsonaletako \"Oinarrizko enkriptatze-modulua\" atalera eta eguneratu zure enkriptatze-pasahitza pasahitz hau \"Saio-hasteko pasahitz zaharra\" eremuan eta zure uneko unean sartuz. saioa-pasahitza.<br><br>", - "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Enkriptazio app-a gaituta dago baina zure gakoak ez dira hasieratu, mesedez saiotik irteneta berriz sar zaitez", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Enkriptatze aplikazioa gaituta dago, baina zure gakoak ez dira hasieratu, mesedez saioa itxi eta sar zaitez berriro", "Encrypt the home storage" : "Zifratu etxe-biltegia", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aukera hau gaituz gero, biltegi orokorreko fitxategi guztiak zifratuko dira, bestela kanpo biltegian daudenak bakarrik zifratuko dira", "Enable recovery key" : "Berreskuratze gakoa gaitu", diff --git a/apps/encryption/l10n/eu.json b/apps/encryption/l10n/eu.json index 142d7d3629b..6ab98674faa 100644 --- a/apps/encryption/l10n/eu.json +++ b/apps/encryption/l10n/eu.json @@ -19,9 +19,9 @@ "The old password was not correct, please try again." : "Pasahitz zaharra ez da egokia. Mesedez, saiatu berriro.", "The current log-in password was not correct, please try again." : "Oraingo pasahitza ez da egokia. Mesedez, saiatu berriro.", "Private key password successfully updated." : "Gako pasahitz pribatu behar bezala eguneratu da.", - "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Enkriptazio aplikaziorako gako pribatu desegokia. Zure gako pribatuaren pasahitza eguneratu ezarpen pertsonaletan, enkriptatutako fitxategiak berriz atzitu nahi badituzu", - "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Enkriptazio aplikazioa gaituta dago, baina zure gakoak ez dira hasieratu. Saiotik irten eta berriz sartu, mesedez.", - "Please enable server side encryption in the admin settings in order to use the encryption module." : "Enkriptazio modulua erabili ahal izateko zerbitzariaren aldean enkriptazioagaitu administrazio ezarpenetan", + "Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Enkriptatze aplikaziorako gako pribatu desegokia. Zure gako pribatuaren pasahitza eguneratu ezarpen pertsonaletan, enkriptatutako fitxategiak berriz atzitu nahi badituzu.", + "Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "Enkriptatze aplikazioa gaituta dago, baina zure gakoak ez dira hasieratu. Itxi saioa eta sartu berriro, mesedez.", + "Please enable server side encryption in the admin settings in order to use the encryption module." : "Enkriptatze modulua erabili ahal izateko, gaitu enkriptatzea zerbitzariaren aldeko administrazio ezarpenetan.", "Encryption app is enabled and ready" : "Enkriptazioa app-a gaituta eta martxan dago", "Bad Signature" : "Sinadura ezegokia", "Missing Signature" : "Sinadura falta da", @@ -35,7 +35,7 @@ "The share will expire on %s." : "Elkarbanaketa %s-n iraungiko da.", "Cheers!" : "Ongi izan!", "Hey there,<br><br>The administration 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>" : "Kaixo,<br><br>administrazioak zerbitzariaren aldeko enkriptatzea gaitu du. Zure fitxategiak <strong>%s</strong>.<br><br>pasahitza erabiliz enkriptatu dira. Mesedez, hasi saioa web interfazean, joan zure ezarpen pertsonaletako \"Oinarrizko enkriptatze-modulua\" atalera eta eguneratu zure enkriptatze-pasahitza pasahitz hau \"Saio-hasteko pasahitz zaharra\" eremuan eta zure uneko unean sartuz. saioa-pasahitza.<br><br>", - "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Enkriptazio app-a gaituta dago baina zure gakoak ez dira hasieratu, mesedez saiotik irteneta berriz sar zaitez", + "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Enkriptatze aplikazioa gaituta dago, baina zure gakoak ez dira hasieratu, mesedez saioa itxi eta sar zaitez berriro", "Encrypt the home storage" : "Zifratu etxe-biltegia", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Aukera hau gaituz gero, biltegi orokorreko fitxategi guztiak zifratuko dira, bestela kanpo biltegian daudenak bakarrik zifratuko dira", "Enable recovery key" : "Berreskuratze gakoa gaitu", diff --git a/apps/encryption/l10n/tr.js b/apps/encryption/l10n/tr.js index 8e7492d76c3..6259955d22a 100644 --- a/apps/encryption/l10n/tr.js +++ b/apps/encryption/l10n/tr.js @@ -34,7 +34,7 @@ OC.L10N.register( "Default encryption module for server-side encryption" : "Sunucu tarafında şifreleme için varsayılan şifreleme modülü", "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Bu şifreleme modülünün kullanılması için sunucu tarafında yönetim bölümünden\n\t\tşifreleme seçeneği etkinleştirilmelidir. Bu modül etkinleştirildikten sonra \n\t\ttüm dosyalarınızı size farkettirmeden şifreler. Şifreleme AES 256 anahtarları\n\t\tile yapılır. Modül var olan dosyaları değiştirmez, yalnızca sunucu tarafında \n\t\tşifreleme etkinleştirildikten sonra eklenen yeni dosyalar şifrelenir. \n\t\tŞifreleme etkinleştirildikten sonra devre dışı bırakılamaz ve şifreleme olmayan\n\t\tsisteme geri dönülemez. Lütfen sunucu tarafı şifrelemeyi etkinleştirmeden önce\n\t\tbelgeleri okuyun ve uygulamadan doğacak tüm sonuçlarını öğrenin.", "Hey there,\n\nThe administration 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ü\" bölümü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.", + "The share will expire on %s." : "Bu paylaşımın geçerlilik süresi %s tarihinde dolacak.", "Cheers!" : "Hoşçakalın!", "Hey there,<br><br>The administration 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ü\" bölümü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>", "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.", diff --git a/apps/encryption/l10n/tr.json b/apps/encryption/l10n/tr.json index ac4cc3ffd37..4764b3405ee 100644 --- a/apps/encryption/l10n/tr.json +++ b/apps/encryption/l10n/tr.json @@ -32,7 +32,7 @@ "Default encryption module for server-side encryption" : "Sunucu tarafında şifreleme için varsayılan şifreleme modülü", "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Bu şifreleme modülünün kullanılması için sunucu tarafında yönetim bölümünden\n\t\tşifreleme seçeneği etkinleştirilmelidir. Bu modül etkinleştirildikten sonra \n\t\ttüm dosyalarınızı size farkettirmeden şifreler. Şifreleme AES 256 anahtarları\n\t\tile yapılır. Modül var olan dosyaları değiştirmez, yalnızca sunucu tarafında \n\t\tşifreleme etkinleştirildikten sonra eklenen yeni dosyalar şifrelenir. \n\t\tŞifreleme etkinleştirildikten sonra devre dışı bırakılamaz ve şifreleme olmayan\n\t\tsisteme geri dönülemez. Lütfen sunucu tarafı şifrelemeyi etkinleştirmeden önce\n\t\tbelgeleri okuyun ve uygulamadan doğacak tüm sonuçlarını öğrenin.", "Hey there,\n\nThe administration 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ü\" bölümü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.", + "The share will expire on %s." : "Bu paylaşımın geçerlilik süresi %s tarihinde dolacak.", "Cheers!" : "Hoşçakalın!", "Hey there,<br><br>The administration 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ü\" bölümü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>", "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.", diff --git a/apps/encryption/l10n/uk.js b/apps/encryption/l10n/uk.js index b57d8c1b36e..46d81c2fb44 100644 --- a/apps/encryption/l10n/uk.js +++ b/apps/encryption/l10n/uk.js @@ -22,14 +22,17 @@ OC.L10N.register( "The current log-in password was not correct, please try again." : "Невірний пароль входу, будь ласка, спробуйте ще раз.", "Private key password successfully updated." : "Пароль секретного ключа оновлено.", "Bad Signature" : "Погана сиґнатура", + "Missing Signature" : "Відсутній підпис", "one-time password for server-side-encryption" : "одноразовий пароль для шифрування на сервері", "Default encryption module" : "Типовий модуль шифрування", "Default encryption module for server-side encryption" : "Типовий модуль шифрування для шифрування на стороні сервера", "The share will expire on %s." : "Спільний доступ закінчиться %s.", "Cheers!" : "Будьмо!", "Encrypt the home storage" : "Зашифрувати домашню теку", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Увімкнення цього параметра шифрує всі файли, що зберігаються в основній пам’яті, інакше будуть зашифровані лише файли на зовнішній пам’яті", "Enable recovery key" : "Увімкнути ключ відновлення", "Disable recovery key" : "Вимкнути ключ відновлення", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Ключ відновлення — це додатковий ключ шифрування, який використовується для шифрування файлів. Це дозволяє відновити файли користувача, якщо користувач забув свій пароль.", "Recovery key password" : "Пароль ключа відновлення", "Repeat recovery key password" : "Повторіть пароль ключа відновлення", "Change recovery key password:" : "Змінити пароль ключа відновлення:", diff --git a/apps/encryption/l10n/uk.json b/apps/encryption/l10n/uk.json index d159c633c1d..60739b2b17d 100644 --- a/apps/encryption/l10n/uk.json +++ b/apps/encryption/l10n/uk.json @@ -20,14 +20,17 @@ "The current log-in password was not correct, please try again." : "Невірний пароль входу, будь ласка, спробуйте ще раз.", "Private key password successfully updated." : "Пароль секретного ключа оновлено.", "Bad Signature" : "Погана сиґнатура", + "Missing Signature" : "Відсутній підпис", "one-time password for server-side-encryption" : "одноразовий пароль для шифрування на сервері", "Default encryption module" : "Типовий модуль шифрування", "Default encryption module for server-side encryption" : "Типовий модуль шифрування для шифрування на стороні сервера", "The share will expire on %s." : "Спільний доступ закінчиться %s.", "Cheers!" : "Будьмо!", "Encrypt the home storage" : "Зашифрувати домашню теку", + "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Увімкнення цього параметра шифрує всі файли, що зберігаються в основній пам’яті, інакше будуть зашифровані лише файли на зовнішній пам’яті", "Enable recovery key" : "Увімкнути ключ відновлення", "Disable recovery key" : "Вимкнути ключ відновлення", + "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "Ключ відновлення — це додатковий ключ шифрування, який використовується для шифрування файлів. Це дозволяє відновити файли користувача, якщо користувач забув свій пароль.", "Recovery key password" : "Пароль ключа відновлення", "Repeat recovery key password" : "Повторіть пароль ключа відновлення", "Change recovery key password:" : "Змінити пароль ключа відновлення:", diff --git a/apps/encryption/lib/Command/FixEncryptedVersion.php b/apps/encryption/lib/Command/FixEncryptedVersion.php index 073c1f1438a..d4c5eddbfe5 100644 --- a/apps/encryption/lib/Command/FixEncryptedVersion.php +++ b/apps/encryption/lib/Command/FixEncryptedVersion.php @@ -94,11 +94,6 @@ class FixEncryptedVersion extends Command { ); } - /** - * @param InputInterface $input - * @param OutputInterface $output - * @return int - */ protected function execute(InputInterface $input, OutputInterface $output): int { $skipSignatureCheck = $this->config->getSystemValue('encryption_skip_signature_check', false); $this->supportLegacy = $this->config->getSystemValueBool('encryption.legacy_format_support', false); @@ -121,7 +116,7 @@ class FixEncryptedVersion extends Command { $pathToWalk = "$pathToWalk/$pathOption"; } - if ($user === null) { + if ($user === '') { $output->writeln("<error>No user id provided.</error>\n"); return 1; } @@ -134,12 +129,9 @@ class FixEncryptedVersion extends Command { } /** - * @param string $user - * @param string $path - * @param OutputInterface $output * @return int 0 for success, 1 for error */ - private function walkPathOfUser($user, $path, OutputInterface $output): int { + private function walkPathOfUser(string $user, string $path, OutputInterface $output): int { $this->setupUserFs($user); if (!$this->view->file_exists($path)) { $output->writeln("<error>Path \"$path\" does not exist. Please provide a valid path.</error>"); @@ -169,11 +161,9 @@ class FixEncryptedVersion extends Command { } /** - * @param string $path - * @param OutputInterface $output * @param bool $ignoreCorrectEncVersionCall, setting this variable to false avoids recursion */ - private function verifyFileContent($path, OutputInterface $output, $ignoreCorrectEncVersionCall = true): bool { + private function verifyFileContent(string $path, OutputInterface $output, bool $ignoreCorrectEncVersionCall = true): bool { try { /** * In encryption, the files are read in a block size of 8192 bytes @@ -185,6 +175,22 @@ class FixEncryptedVersion extends Command { $handle = $this->view->fopen($path, 'rb'); if (\fread($handle, 9001) !== false) { + $fileInfo = $this->view->getFileInfo($path); + if (!$fileInfo) { + $output->writeln("<warning>File info not found for file: \"$path\"</warning>"); + return true; + } + $encryptedVersion = $fileInfo->getEncryptedVersion(); + $stat = $this->view->stat($path); + if (($encryptedVersion == 0) && isset($stat['hasHeader']) && ($stat['hasHeader'] == true)) { + // The file has encrypted to false but has an encryption header + if ($ignoreCorrectEncVersionCall === true) { + // Lets rectify the file by correcting encrypted version + $output->writeln("<info>Attempting to fix the path: \"$path\"</info>"); + return $this->correctEncryptedVersion($path, $output); + } + return false; + } $output->writeln("<info>The file \"$path\" is: OK</info>"); } @@ -201,9 +207,9 @@ class FixEncryptedVersion extends Command { return false; } catch (HintException $e) { $this->logger->warning("Issue: " . $e->getMessage()); - //If allowOnce is set to false, this becomes recursive. + // If allowOnce is set to false, this becomes recursive. if ($ignoreCorrectEncVersionCall === true) { - //Lets rectify the file by correcting encrypted version + // Lets rectify the file by correcting encrypted version $output->writeln("<info>Attempting to fix the path: \"$path\"</info>"); return $this->correctEncryptedVersion($path, $output); } @@ -212,18 +218,19 @@ class FixEncryptedVersion extends Command { } /** - * @param string $path - * @param OutputInterface $output * @param bool $includeZero whether to try zero version for unencrypted file - * @return bool */ - private function correctEncryptedVersion($path, OutputInterface $output, bool $includeZero = false): bool { + private function correctEncryptedVersion(string $path, OutputInterface $output, bool $includeZero = false): bool { $fileInfo = $this->view->getFileInfo($path); if (!$fileInfo) { $output->writeln("<warning>File info not found for file: \"$path\"</warning>"); return true; } $fileId = $fileInfo->getId(); + if ($fileId === null) { + $output->writeln("<warning>File info contains no id for file: \"$path\"</warning>"); + return true; + } $encryptedVersion = $fileInfo->getEncryptedVersion(); $wrongEncryptedVersion = $encryptedVersion; @@ -255,7 +262,7 @@ class FixEncryptedVersion extends Command { } } - //test by decrementing the value till 1 and if nothing works try incrementing + // Test by decrementing the value till 1 and if nothing works try incrementing $encryptedVersion--; while ($encryptedVersion > 0) { $cacheInfo = ['encryptedVersion' => $encryptedVersion, 'encrypted' => $encryptedVersion]; @@ -268,7 +275,7 @@ class FixEncryptedVersion extends Command { $encryptedVersion--; } - //So decrementing did not work. Now lets increment. Max increment is till 5 + // So decrementing did not work. Now lets increment. Max increment is till 5 $increment = 1; while ($increment <= 5) { /** @@ -301,9 +308,8 @@ class FixEncryptedVersion extends Command { /** * Setup user file system - * @param string $uid */ - private function setupUserFs($uid): void { + private function setupUserFs(string $uid): void { \OC_Util::tearDownFS(); \OC_Util::setupFS($uid); } diff --git a/apps/encryption/templates/mail.php b/apps/encryption/templates/mail.php index 2cfd415b646..0db4b67d08d 100644 --- a/apps/encryption/templates/mail.php +++ b/apps/encryption/templates/mail.php @@ -7,7 +7,7 @@ <table cellspacing="0" cellpadding="0" border="0" width="600px"> <tr> <td colspan="2" bgcolor="<?php p($theme->getColorPrimary());?>"> - <img src="<?php p(\OC::$server->getURLGenerator()->getAbsoluteURL(image_path('', 'logo-mail.png'))); ?>" alt="<?php p($theme->getName()); ?>"/> + <img src="<?php p(\OC::$server->getURLGenerator()->getAbsoluteURL(image_path('core', 'logo-mail.png'))); ?>" alt="<?php p($theme->getName()); ?>"/> </td> </tr> <tr><td colspan="2"> </td></tr> diff --git a/apps/encryption/tests/Command/FixEncryptedVersionTest.php b/apps/encryption/tests/Command/FixEncryptedVersionTest.php index 14143223264..ee9ad1ac89f 100644 --- a/apps/encryption/tests/Command/FixEncryptedVersionTest.php +++ b/apps/encryption/tests/Command/FixEncryptedVersionTest.php @@ -333,9 +333,6 @@ The file \"/$this->userId/files/sub/hello.txt\" is: OK", $output); $this->assertStringNotContainsString('world.txt', $output); } - /** - * Test commands with a directory path - */ public function testExecuteWithNoUser() { $this->util->expects($this->once())->method('isMasterKeyEnabled') ->willReturn(true); @@ -347,6 +344,20 @@ The file \"/$this->userId/files/sub/hello.txt\" is: OK", $output); $output = $this->commandTester->getDisplay(); + $this->assertStringContainsString('No user id provided', $output); + } + + public function testExecuteWithBadUser() { + $this->util->expects($this->once())->method('isMasterKeyEnabled') + ->willReturn(true); + + $this->commandTester->execute([ + 'user' => 'nonexisting', + '--path' => "/" + ]); + + $output = $this->commandTester->getDisplay(); + $this->assertStringContainsString('does not exist', $output); } diff --git a/apps/federatedfilesharing/composer/composer/installed.php b/apps/federatedfilesharing/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/federatedfilesharing/composer/composer/installed.php +++ b/apps/federatedfilesharing/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js index c8276429489..c079e190a03 100644 --- a/apps/federatedfilesharing/l10n/de.js +++ b/apps/federatedfilesharing/l10n/de.js @@ -10,7 +10,7 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert", "Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden", "Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.", - "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe Deine Benachrichtigungen. ", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen. ", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federated-Share konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).", "It is not allowed to send federated group shares from this server." : "Das Erstellen einer Federated Cloud Freigabe ist von diesem Server aus nicht erlaubt.", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Das Teilen von %1$s ist fehlgeschlagen, da dieses Objekt bereits mit Benutzer %2$s geteilt wird", @@ -42,11 +42,13 @@ OC.L10N.register( "Federated Cloud" : "Federated Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Du kannst mit jedem teilen, der einen Nextcloud-Server oder andere Open Cloud Mesh (OCM) kompatible Server und Dienste verwendet! 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 so your friends can share files with you:" : "Teile es, so dass Deine Freunde Dateien mit Dir teilen können:", + "Share it so your friends can share files with you:" : "Teile es, so dass deine Freunde Dateien mit dir teilen können:", + "Facebook" : "Facebook", "Twitter" : "Twitter", - "Add to your website" : "Zu Deiner Webseite hinzufügen", + "Add to your website" : "Zu deiner Webseite hinzufügen", "Share with me via Nextcloud" : "Teile mit mir über Nextcloud", "HTML Code:" : "HTML-Code:", + "Cloud ID copied to the clipboard" : "Cloud-ID in die Zwischenablage kopiert", "Copy to clipboard" : "In die Zwischenablage kopieren", "Copy" : "Kopieren", "Copied!" : "Kopiert!", diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json index c3186826509..bf0f52d88ad 100644 --- a/apps/federatedfilesharing/l10n/de.json +++ b/apps/federatedfilesharing/l10n/de.json @@ -8,7 +8,7 @@ "Server to server sharing is not enabled on this server" : "Das Server-zu-Server-Teilen ist auf diesem Server nicht aktiviert", "Couldn't establish a federated share." : "Federated-Share konnte nicht aufgebaut werden", "Couldn't establish a federated share, maybe the password was wrong." : "Federated-Share konnte nicht aufgebaut werden, da eventuell das Passwort falsch ist.", - "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe Deine Benachrichtigungen. ", + "Federated Share request sent, you will receive an invitation. Check your notifications." : "Anfrage zum Federated-Share war erfolgreich. Du erhälst eine Einladung. Bitte prüfe deine Benachrichtigungen. ", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federated-Share konnte nicht aufgebaut werden, da der Zielserver eine zu alte Version verwendet (Nextcloud <=9).", "It is not allowed to send federated group shares from this server." : "Das Erstellen einer Federated Cloud Freigabe ist von diesem Server aus nicht erlaubt.", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Das Teilen von %1$s ist fehlgeschlagen, da dieses Objekt bereits mit Benutzer %2$s geteilt wird", @@ -40,11 +40,13 @@ "Federated Cloud" : "Federated Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Du kannst mit jedem teilen, der einen Nextcloud-Server oder andere Open Cloud Mesh (OCM) kompatible Server und Dienste verwendet! 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 so your friends can share files with you:" : "Teile es, so dass Deine Freunde Dateien mit Dir teilen können:", + "Share it so your friends can share files with you:" : "Teile es, so dass deine Freunde Dateien mit dir teilen können:", + "Facebook" : "Facebook", "Twitter" : "Twitter", - "Add to your website" : "Zu Deiner Webseite hinzufügen", + "Add to your website" : "Zu deiner Webseite hinzufügen", "Share with me via Nextcloud" : "Teile mit mir über Nextcloud", "HTML Code:" : "HTML-Code:", + "Cloud ID copied to the clipboard" : "Cloud-ID in die Zwischenablage kopiert", "Copy to clipboard" : "In die Zwischenablage kopieren", "Copy" : "Kopieren", "Copied!" : "Kopiert!", diff --git a/apps/federatedfilesharing/l10n/es_SV.js b/apps/federatedfilesharing/l10n/es_SV.js index 1b487261660..3856402d6bf 100644 --- a/apps/federatedfilesharing/l10n/es_SV.js +++ b/apps/federatedfilesharing/l10n/es_SV.js @@ -44,4 +44,4 @@ OC.L10N.register( "Open documentation" : "Abrir documentación", "Adjust how people can share between servers." : "Ajustar cómo las personas pueden compartir entre servidores. " }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/federatedfilesharing/l10n/es_SV.json b/apps/federatedfilesharing/l10n/es_SV.json index c12b88eaea4..2c1cb71309a 100644 --- a/apps/federatedfilesharing/l10n/es_SV.json +++ b/apps/federatedfilesharing/l10n/es_SV.json @@ -41,5 +41,5 @@ "Press Ctrl-C to copy." : "Presiona Ctrl-C para copiar.", "Open documentation" : "Abrir documentación", "Adjust how people can share between servers." : "Ajustar cómo las personas pueden compartir entre servidores. " -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/eu.js b/apps/federatedfilesharing/l10n/eu.js index eb351eb23b5..64dc1dcbee3 100644 --- a/apps/federatedfilesharing/l10n/eu.js +++ b/apps/federatedfilesharing/l10n/eu.js @@ -6,7 +6,7 @@ OC.L10N.register( "Remote share password" : "Urruneko partekatzearen pasahitza", "Cancel" : "Ezeztatu", "Add remote share" : "Urruneko partekatzea gehitu", - "Invalid Federated Cloud ID" : "Federatutako Hodei ID ezegokia", + "Invalid Federated Cloud ID" : "Federatutako hodei ID ezegokia", "Server to server sharing is not enabled on this server" : "Zerbitzaritik zerbitzarirako elkarbanaketa ez dago gaituta zerbitzari honetan", "Couldn't establish a federated share." : "Ezin izan da urruneko partekatze federatua gehitu.", "Couldn't establish a federated share, maybe the password was wrong." : "Ezin izan da urruneko partekatze federatua gehitu, agian pasahitza gaizki dago.", @@ -27,8 +27,8 @@ OC.L10N.register( "Accept" : "Onartu", "Decline" : "Ezeztatu", "Federated Cloud Sharing" : "Federatutako Hodei Partekatzea", - "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Nirekin partekatu #Nextcloud Federatutako Hodei IDa erabiliz, 1%s ikusi", - "Share with me through my #Nextcloud Federated Cloud ID" : "Nirekin partekatu #Nextcloud Federatutako Hodei IDa erabiliz, ", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Partekatu nirekin, nire federatutako #Nextcloud hodei IDa erabiliz, ikus %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Partekatu nirekin, nire federatutako #Nextcloud hodei IDa erabiliz", "Sharing" : "Partekatzea", "Federated file sharing" : "Fitxategien partekatze federatua", "Provide federated file sharing across servers" : "Zerbitzarien arteko federatutako partekatzea eskaini", @@ -42,7 +42,7 @@ OC.L10N.register( "Unable to update federated files sharing config" : "Ezin dira eguneratu federatutako fitxategiak partekatzeko konfigurazioa", "Federated Cloud" : "Hodei Federatua", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud zerbitzaria edo Open Cloud Mesh (OCM) zerbitzuarekin bateragarri den zerbitzuak erabiltzen duen edonorekin partekatu dezakezu! Ipini beren Federatutako Hodei IDa partekatze leihoan. Horrelako zerbait izan ohi da: erabiltzailea@nextcloud.zerbitzaria.com", - "Your Federated Cloud ID:" : "Federatutatako Hodei ID:", + "Your Federated Cloud ID:" : "Zure federatutako hodei IDa:", "Share it so your friends can share files with you:" : "Partekatu zure lagunek fitxategiak zurekin partekatzeko:", "Facebook" : "Facebook", "Twitter" : "Twitter", @@ -50,7 +50,7 @@ OC.L10N.register( "Add to your website" : "Zure webgunera gehitu", "Share with me via Nextcloud" : "Partekatu nirekin Nextcloud-en bidez", "HTML Code:" : "HTML kodea:", - "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Nirekin partekatu #Nextcloud Federatutako Hodei IDa erabiliz, {url} ikusi", + "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Partekatu nirekin, nire federatutako #Nextcloud hodei IDa erabiliz, ikus {url}", "Cloud ID copied to the clipboard" : "Cloud ID arbelean kopiatu da", "Copy to clipboard" : "Kopiatu arbelera", "Clipboard is not available" : "Arbela ez dago erabilgarri", diff --git a/apps/federatedfilesharing/l10n/eu.json b/apps/federatedfilesharing/l10n/eu.json index 635337dde29..8c30c2f4545 100644 --- a/apps/federatedfilesharing/l10n/eu.json +++ b/apps/federatedfilesharing/l10n/eu.json @@ -4,7 +4,7 @@ "Remote share password" : "Urruneko partekatzearen pasahitza", "Cancel" : "Ezeztatu", "Add remote share" : "Urruneko partekatzea gehitu", - "Invalid Federated Cloud ID" : "Federatutako Hodei ID ezegokia", + "Invalid Federated Cloud ID" : "Federatutako hodei ID ezegokia", "Server to server sharing is not enabled on this server" : "Zerbitzaritik zerbitzarirako elkarbanaketa ez dago gaituta zerbitzari honetan", "Couldn't establish a federated share." : "Ezin izan da urruneko partekatze federatua gehitu.", "Couldn't establish a federated share, maybe the password was wrong." : "Ezin izan da urruneko partekatze federatua gehitu, agian pasahitza gaizki dago.", @@ -25,8 +25,8 @@ "Accept" : "Onartu", "Decline" : "Ezeztatu", "Federated Cloud Sharing" : "Federatutako Hodei Partekatzea", - "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Nirekin partekatu #Nextcloud Federatutako Hodei IDa erabiliz, 1%s ikusi", - "Share with me through my #Nextcloud Federated Cloud ID" : "Nirekin partekatu #Nextcloud Federatutako Hodei IDa erabiliz, ", + "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Partekatu nirekin, nire federatutako #Nextcloud hodei IDa erabiliz, ikus %s", + "Share with me through my #Nextcloud Federated Cloud ID" : "Partekatu nirekin, nire federatutako #Nextcloud hodei IDa erabiliz", "Sharing" : "Partekatzea", "Federated file sharing" : "Fitxategien partekatze federatua", "Provide federated file sharing across servers" : "Zerbitzarien arteko federatutako partekatzea eskaini", @@ -40,7 +40,7 @@ "Unable to update federated files sharing config" : "Ezin dira eguneratu federatutako fitxategiak partekatzeko konfigurazioa", "Federated Cloud" : "Hodei Federatua", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud zerbitzaria edo Open Cloud Mesh (OCM) zerbitzuarekin bateragarri den zerbitzuak erabiltzen duen edonorekin partekatu dezakezu! Ipini beren Federatutako Hodei IDa partekatze leihoan. Horrelako zerbait izan ohi da: erabiltzailea@nextcloud.zerbitzaria.com", - "Your Federated Cloud ID:" : "Federatutatako Hodei ID:", + "Your Federated Cloud ID:" : "Zure federatutako hodei IDa:", "Share it so your friends can share files with you:" : "Partekatu zure lagunek fitxategiak zurekin partekatzeko:", "Facebook" : "Facebook", "Twitter" : "Twitter", @@ -48,7 +48,7 @@ "Add to your website" : "Zure webgunera gehitu", "Share with me via Nextcloud" : "Partekatu nirekin Nextcloud-en bidez", "HTML Code:" : "HTML kodea:", - "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Nirekin partekatu #Nextcloud Federatutako Hodei IDa erabiliz, {url} ikusi", + "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Partekatu nirekin, nire federatutako #Nextcloud hodei IDa erabiliz, ikus {url}", "Cloud ID copied to the clipboard" : "Cloud ID arbelean kopiatu da", "Copy to clipboard" : "Kopiatu arbelera", "Clipboard is not available" : "Arbela ez dago erabilgarri", diff --git a/apps/federatedfilesharing/l10n/fi.js b/apps/federatedfilesharing/l10n/fi.js index dc163068be2..0cdf732f3f9 100644 --- a/apps/federatedfilesharing/l10n/fi.js +++ b/apps/federatedfilesharing/l10n/fi.js @@ -13,6 +13,7 @@ OC.L10N.register( "Federated Share request sent, you will receive an invitation. Check your notifications." : "Federoidun jakamisen pyyntö lähetetty, saat kutsun. Tarkista ilmoitukset.", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federoitua jakoa ei voitu muodostaa. Vaikuttaa siltä, että palvelin jonka kanssa federointia yritetään, on versioltaan liian vanha (Nextcloud <= 9).", "It is not allowed to send federated group shares from this server." : "Federoitujen ryhmäjakojen lähettäminen tältä palvelimelta ei ole sallittu.", + "Sharing %1$s failed, because this item is already shared with user %2$s" : "Kohteen %1$s jakaminen epäonnistui, koska tämä kohde on jo jaettu käyttäjän %2$s kanssa", "Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa", "Federated shares require read permissions" : "Federoidut jaot vaativat lukuoikeuksia", "File is already shared with %s" : "Tiedosto on jo jaettu kohteen %s kanssa", diff --git a/apps/federatedfilesharing/l10n/fi.json b/apps/federatedfilesharing/l10n/fi.json index a627009b843..78f327dba5f 100644 --- a/apps/federatedfilesharing/l10n/fi.json +++ b/apps/federatedfilesharing/l10n/fi.json @@ -11,6 +11,7 @@ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Federoidun jakamisen pyyntö lähetetty, saat kutsun. Tarkista ilmoitukset.", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Federoitua jakoa ei voitu muodostaa. Vaikuttaa siltä, että palvelin jonka kanssa federointia yritetään, on versioltaan liian vanha (Nextcloud <= 9).", "It is not allowed to send federated group shares from this server." : "Federoitujen ryhmäjakojen lähettäminen tältä palvelimelta ei ole sallittu.", + "Sharing %1$s failed, because this item is already shared with user %2$s" : "Kohteen %1$s jakaminen epäonnistui, koska tämä kohde on jo jaettu käyttäjän %2$s kanssa", "Not allowed to create a federated share with the same user" : "Saman käyttäjän kanssa ei ole sallittua luoda federoitua jakoa", "Federated shares require read permissions" : "Federoidut jaot vaativat lukuoikeuksia", "File is already shared with %s" : "Tiedosto on jo jaettu kohteen %s kanssa", diff --git a/apps/federatedfilesharing/l10n/mk.js b/apps/federatedfilesharing/l10n/mk.js index 735c4d3c947..ff1077f9d40 100644 --- a/apps/federatedfilesharing/l10n/mk.js +++ b/apps/federatedfilesharing/l10n/mk.js @@ -15,6 +15,7 @@ OC.L10N.register( "It is not allowed to send federated group shares from this server." : "Не е овозможено да испратите федерално групно споделување од овој сервер.", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Споделувањето на %1$s е неуспешно, бидејќи истото веќе е споделено со корисникот %2$s", "Not allowed to create a federated share with the same user" : "Не е овозможено да креирате федерално споделување со ист корисник", + "Federated shares require read permissions" : "Федералното споделување бара дозволи за читање", "File is already shared with %s" : "Датотеката е веќе споделена со %s", "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Споделувањето на %1$s е неуспешно, неможе да се пронајде %2$s, можеби серверот моментално не е достапен или користи недоверлив сертификат.", "Could not find share" : "Неможе да се пронајде споделувањето", @@ -31,21 +32,28 @@ OC.L10N.register( "Sharing" : "Споделување", "Federated file sharing" : "Федерално споделување на датотеки", "Provide federated file sharing across servers" : "Обезбедете федерално споделување на датотеки помеѓу сервери", + "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Прилагодете како луѓето можат да споделуваат помеѓу серверите. Ова ги вклучува споделувањата помеѓу корисниците на овој сервер, како и доколку користат федерално споделување.", "Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Дозволи им на корисниците на овој сервер да испраќаат споделувања со други сервери (оваа можност истотака дозволува WebDAV пристап до јавни споделувања)", "Allow users on this server to receive shares from other servers" : "Дозволи им на корисниците на овој сервер да примаат споделувања од други сервери", "Allow users on this server to send shares to groups on other servers" : "Дозволи им на корисниците на овој сервер да испраќаат споделувања со групи на други сервери", "Allow users on this server to receive group shares from other servers" : "Дозволи им на корисниците на овој сервер да примаат споделувања од групи од други сервери", "Search global and public address book for users" : "Пребарајте го глобалниот и јавниот именик на корисници", "Allow users to publish their data to a global and public address book" : "Дозволи им на корисниците да објавуваат информации во глобалниот и јавниот именик ", + "Unable to update federated files sharing config" : "Неможе да се ажурираат параметрите за федерално споделување", "Federated Cloud" : "Федерален клауд", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Можете да споделувате со секој што користи Nextcloud сервер или друг вид на Open Cloud Mesh (OCM) компатибилен сервер или сервис! Само внесете го федералниот ID во полето за споделување. Треба да изгледа korisnik@cloud.primer.com", "Your Federated Cloud ID:" : "Вашиот федерален ID:", "Share it so your friends can share files with you:" : "Споделете и вашите пријатели ќе можат да споделуваат со вас:", + "Facebook" : "Facebook", "Twitter" : "Twitter", + "Diaspora" : "Diaspora", "Add to your website" : "Додади на твојот веб сајт", "Share with me via Nextcloud" : "Сподели со мене", "HTML Code:" : "HTML код:", + "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Споделете со мене преку мојот Федерален Cloud ID, види {url}", + "Cloud ID copied to the clipboard" : "Cloud ID е копиран во клипборд", "Copy to clipboard" : "Копирај во клипборд", + "Clipboard is not available" : "Клипбордот не е достапен", "Copy" : "Копирај", "Copied!" : "Копирано!", "Not supported!" : "Не е поддржано!", diff --git a/apps/federatedfilesharing/l10n/mk.json b/apps/federatedfilesharing/l10n/mk.json index dd0ddd44957..6f142e328de 100644 --- a/apps/federatedfilesharing/l10n/mk.json +++ b/apps/federatedfilesharing/l10n/mk.json @@ -13,6 +13,7 @@ "It is not allowed to send federated group shares from this server." : "Не е овозможено да испратите федерално групно споделување од овој сервер.", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Споделувањето на %1$s е неуспешно, бидејќи истото веќе е споделено со корисникот %2$s", "Not allowed to create a federated share with the same user" : "Не е овозможено да креирате федерално споделување со ист корисник", + "Federated shares require read permissions" : "Федералното споделување бара дозволи за читање", "File is already shared with %s" : "Датотеката е веќе споделена со %s", "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Споделувањето на %1$s е неуспешно, неможе да се пронајде %2$s, можеби серверот моментално не е достапен или користи недоверлив сертификат.", "Could not find share" : "Неможе да се пронајде споделувањето", @@ -29,21 +30,28 @@ "Sharing" : "Споделување", "Federated file sharing" : "Федерално споделување на датотеки", "Provide federated file sharing across servers" : "Обезбедете федерално споделување на датотеки помеѓу сервери", + "Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing." : "Прилагодете како луѓето можат да споделуваат помеѓу серверите. Ова ги вклучува споделувањата помеѓу корисниците на овој сервер, како и доколку користат федерално споделување.", "Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Дозволи им на корисниците на овој сервер да испраќаат споделувања со други сервери (оваа можност истотака дозволува WebDAV пристап до јавни споделувања)", "Allow users on this server to receive shares from other servers" : "Дозволи им на корисниците на овој сервер да примаат споделувања од други сервери", "Allow users on this server to send shares to groups on other servers" : "Дозволи им на корисниците на овој сервер да испраќаат споделувања со групи на други сервери", "Allow users on this server to receive group shares from other servers" : "Дозволи им на корисниците на овој сервер да примаат споделувања од групи од други сервери", "Search global and public address book for users" : "Пребарајте го глобалниот и јавниот именик на корисници", "Allow users to publish their data to a global and public address book" : "Дозволи им на корисниците да објавуваат информации во глобалниот и јавниот именик ", + "Unable to update federated files sharing config" : "Неможе да се ажурираат параметрите за федерално споделување", "Federated Cloud" : "Федерален клауд", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Можете да споделувате со секој што користи Nextcloud сервер или друг вид на Open Cloud Mesh (OCM) компатибилен сервер или сервис! Само внесете го федералниот ID во полето за споделување. Треба да изгледа korisnik@cloud.primer.com", "Your Federated Cloud ID:" : "Вашиот федерален ID:", "Share it so your friends can share files with you:" : "Споделете и вашите пријатели ќе можат да споделуваат со вас:", + "Facebook" : "Facebook", "Twitter" : "Twitter", + "Diaspora" : "Diaspora", "Add to your website" : "Додади на твојот веб сајт", "Share with me via Nextcloud" : "Сподели со мене", "HTML Code:" : "HTML код:", + "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Споделете со мене преку мојот Федерален Cloud ID, види {url}", + "Cloud ID copied to the clipboard" : "Cloud ID е копиран во клипборд", "Copy to clipboard" : "Копирај во клипборд", + "Clipboard is not available" : "Клипбордот не е достапен", "Copy" : "Копирај", "Copied!" : "Копирано!", "Not supported!" : "Не е поддржано!", diff --git a/apps/federatedfilesharing/l10n/nl.js b/apps/federatedfilesharing/l10n/nl.js index e320bc3232f..69db08b7a49 100644 --- a/apps/federatedfilesharing/l10n/nl.js +++ b/apps/federatedfilesharing/l10n/nl.js @@ -43,7 +43,9 @@ OC.L10N.register( "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Je kunt met iedereen delen die Nextcloud, ownCloud of een ander Open Cloud Mesh (OCM) compatible server of services gebruikt! Gebruik simpelweg hun gefedereerde Cloud ID in de deel-dialoog. Het ziet eruit als iemand@cloud.voorbeeld.com", "Your Federated Cloud ID:" : "Je gefedereerde Cloud ID:", "Share it so your friends can share files with you:" : "Deel het, zodat anderen bestanden met jou kunnen delen:", + "Facebook" : "Facebook", "Twitter" : "Twitter", + "Diaspora" : "Diaspora", "Add to your website" : "Toevoegen aan je website", "Share with me via Nextcloud" : "Deel met mij via Nextcloud", "HTML Code:" : "HTML Code:", diff --git a/apps/federatedfilesharing/l10n/nl.json b/apps/federatedfilesharing/l10n/nl.json index f47d5cac3a2..44f702a35e7 100644 --- a/apps/federatedfilesharing/l10n/nl.json +++ b/apps/federatedfilesharing/l10n/nl.json @@ -41,7 +41,9 @@ "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Je kunt met iedereen delen die Nextcloud, ownCloud of een ander Open Cloud Mesh (OCM) compatible server of services gebruikt! Gebruik simpelweg hun gefedereerde Cloud ID in de deel-dialoog. Het ziet eruit als iemand@cloud.voorbeeld.com", "Your Federated Cloud ID:" : "Je gefedereerde Cloud ID:", "Share it so your friends can share files with you:" : "Deel het, zodat anderen bestanden met jou kunnen delen:", + "Facebook" : "Facebook", "Twitter" : "Twitter", + "Diaspora" : "Diaspora", "Add to your website" : "Toevoegen aan je website", "Share with me via Nextcloud" : "Deel met mij via Nextcloud", "HTML Code:" : "HTML Code:", diff --git a/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php b/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php index cf0691de3ac..f785f4fc528 100644 --- a/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php +++ b/apps/federatedfilesharing/lib/BackgroundJob/RetryJob.php @@ -41,19 +41,14 @@ use OCP\ILogger; * @package OCA\FederatedFileSharing\BackgroundJob */ class RetryJob extends Job { - - /** @var bool */ - private $retainJob = true; - - /** @var Notifications */ - private $notifications; + private bool $retainJob = true; + private Notifications $notifications; /** @var int max number of attempts to send the request */ - private $maxTry = 20; + private int $maxTry = 20; /** @var int how much time should be between two tries (10 minutes) */ - private $interval = 600; - + private int $interval = 600; public function __construct(Notifications $notifications, ITimeFactory $time) { @@ -62,14 +57,11 @@ class RetryJob extends Job { } /** - * run the job, then remove it from the jobList - * - * @param IJobList $jobList - * @param ILogger|null $logger + * Run the job, then remove it from the jobList */ - public function execute(IJobList $jobList, ILogger $logger = null) { + public function start(IJobList $jobList): void { if ($this->shouldRun($this->argument)) { - parent::execute($jobList, $logger); + parent::start($jobList); $jobList->remove($this, $this->argument); if ($this->retainJob) { $this->reAddJob($jobList, $this->argument); @@ -93,12 +85,9 @@ class RetryJob extends Job { } /** - * re-add background job with new arguments - * - * @param IJobList $jobList - * @param array $argument + * Re-add background job with new arguments */ - protected function reAddJob(IJobList $jobList, array $argument) { + protected function reAddJob(IJobList $jobList, array $argument): void { $jobList->add(RetryJob::class, [ 'remote' => $argument['remote'], @@ -113,12 +102,9 @@ class RetryJob extends Job { } /** - * test if it is time for the next run - * - * @param array $argument - * @return bool + * Test if it is time for the next run */ - protected function shouldRun(array $argument) { + protected function shouldRun(array $argument): bool { $lastRun = (int)$argument['lastRun']; return (($this->time->getTime() - $lastRun) > $this->interval); } diff --git a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php index fe0c7a11ab7..c5e1a8b4e7e 100644 --- a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php +++ b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php @@ -35,6 +35,7 @@ use OCP\AppFramework\OCS\OCSBadRequestException; use OCP\AppFramework\OCS\OCSException; use OCP\AppFramework\OCS\OCSForbiddenException; use OCP\AppFramework\OCSController; +use OCP\App\IAppManager; use OCP\Constants; use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\Exceptions\ProviderCouldNotAddShareException; @@ -366,7 +367,7 @@ class RequestHandlerController extends OCSController { * @return bool */ private function isS2SEnabled($incoming = false) { - $result = \OCP\App::isEnabled('files_sharing'); + $result = \OCP\Server::get(IAppManager::class)->isEnabledForUser('files_sharing'); if ($incoming) { $result = $result && $this->federatedShareProvider->isIncomingServer2serverShareEnabled(); diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index 52b10cd9315..d504a3e2acc 100644 --- a/apps/federatedfilesharing/lib/FederatedShareProvider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php @@ -638,7 +638,7 @@ class FederatedShareProvider implements IShareProvider { } - public function getSharesInFolder($userId, Folder $node, $reshares) { + public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true) { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('*') ->from('share', 's') @@ -664,8 +664,13 @@ class FederatedShareProvider implements IShareProvider { ); } - $qb->innerJoin('s', 'filecache' ,'f', $qb->expr()->eq('s.file_source', 'f.fileid')); - $qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId()))); + $qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid')); + + if ($shallow) { + $qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId()))); + } else { + $qb->andWhere($qb->expr()->like('f.path', $qb->createNamedParameter($this->dbConnection->escapeLikeParameter($node->getInternalPath()) . '/%'))); + } $qb->orderBy('id'); diff --git a/apps/federatedfilesharing/src/components/AdminSettings.vue b/apps/federatedfilesharing/src/components/AdminSettings.vue index b3fb2a7675b..e3b9d4186a7 100644 --- a/apps/federatedfilesharing/src/components/AdminSettings.vue +++ b/apps/federatedfilesharing/src/components/AdminSettings.vue @@ -21,52 +21,52 @@ --> <template> - <SettingsSection :title="t('federatedfilesharing', 'Federated Cloud Sharing')" + <NcSettingsSection :title="t('federatedfilesharing', 'Federated Cloud Sharing')" :description="t('federatedfilesharing', 'Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing.')" :doc-url="sharingFederatedDocUrl"> - <CheckboxRadioSwitch type="switch" + <NcCheckboxRadioSwitch type="switch" :checked.sync="outgoingServer2serverShareEnabled" @update:checked="update('outgoing_server2server_share_enabled', outgoingServer2serverShareEnabled)"> {{ t('federatedfilesharing', 'Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> - <CheckboxRadioSwitch type="switch" + <NcCheckboxRadioSwitch type="switch" :checked.sync="incomingServer2serverShareEnabled" @update:checked="update('incoming_server2server_share_enabled', incomingServer2serverShareEnabled)"> {{ t('federatedfilesharing', 'Allow users on this server to receive shares from other servers') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> - <CheckboxRadioSwitch v-if="federatedGroupSharingSupported" + <NcCheckboxRadioSwitch v-if="federatedGroupSharingSupported" type="switch" :checked.sync="outgoingServer2serverGroupShareEnabled" @update:checked="update('outgoing_server2server_group_share_enabled', outgoingServer2serverGroupShareEnabled)"> {{ t('federatedfilesharing', 'Allow users on this server to send shares to groups on other servers') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> - <CheckboxRadioSwitch v-if="federatedGroupSharingSupported" + <NcCheckboxRadioSwitch v-if="federatedGroupSharingSupported" type="switch" :checked.sync="incomingServer2serverGroupShareEnabled" @update:checked="update('incoming_server2server_group_share_enabled', incomingServer2serverGroupShareEnabled)"> {{ t('federatedfilesharing', 'Allow users on this server to receive group shares from other servers') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> - <CheckboxRadioSwitch type="switch" + <NcCheckboxRadioSwitch type="switch" :checked.sync="lookupServerEnabled" @update:checked="update('lookupServerEnabled', lookupServerEnabled)"> {{ t('federatedfilesharing', 'Search global and public address book for users') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> - <CheckboxRadioSwitch type="switch" + <NcCheckboxRadioSwitch type="switch" :checked.sync="lookupServerUploadEnabled" @update:checked="update('lookupServerUploadEnabled', lookupServerUploadEnabled)"> {{ t('federatedfilesharing', 'Allow users to publish their data to a global and public address book') }} - </CheckboxRadioSwitch> - </SettingsSection> + </NcCheckboxRadioSwitch> + </NcSettingsSection> </template> <script> -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' import { loadState } from '@nextcloud/initial-state' import { showError } from '@nextcloud/dialogs' import axios from '@nextcloud/axios' @@ -77,8 +77,8 @@ export default { name: 'AdminSettings', components: { - CheckboxRadioSwitch, - SettingsSection, + NcCheckboxRadioSwitch, + NcSettingsSection, }, data() { diff --git a/apps/federatedfilesharing/src/components/PersonalSettings.vue b/apps/federatedfilesharing/src/components/PersonalSettings.vue index 896860cf3e9..640f2c68e0c 100644 --- a/apps/federatedfilesharing/src/components/PersonalSettings.vue +++ b/apps/federatedfilesharing/src/components/PersonalSettings.vue @@ -17,13 +17,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. --> <template> - <SettingsSection :title="t('federatedfilesharing', 'Federated Cloud')" + <NcSettingsSection :title="t('federatedfilesharing', 'Federated Cloud')" :description="t('federatedfilesharing', 'You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com')" :doc-url="docUrlFederated"> <p class="cloud-id-text"> {{ t('federatedfilesharing', 'Your Federated Cloud ID:') }} <strong id="cloudid">{{ cloudId }}</strong> - <Button ref="clipboard" + <NcButton ref="clipboard" v-tooltip="copyLinkTooltip" class="clipboard" type="tertiary-no-background" @@ -31,24 +31,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. <template #icon> <Clipboard :size="20" /> </template> - </Button> + </NcButton> </p> <p class="social-button"> {{ t('federatedfilesharing', 'Share it so your friends can share files with you:') }}<br> - <Button @click="goTo(shareFacebookUrl)"> + <NcButton @click="goTo(shareFacebookUrl)"> {{ t('federatedfilesharing', 'Facebook') }} <template #icon> <Facebook :size="20" /> </template> - </Button> - <Button @click="goTo(shareTwitterUrl)"> + </NcButton> + <NcButton @click="goTo(shareTwitterUrl)"> {{ t('federatedfilesharing', 'Twitter') }} <template #icon> <Twitter :size="20" /> </template> - </Button> - <Button @click="goTo(shareDiasporaUrl)"> + </NcButton> + <NcButton @click="goTo(shareDiasporaUrl)"> {{ t('federatedfilesharing', 'Diaspora') }} <template #icon> <svg width="20" @@ -56,13 +56,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. viewBox="-10 -5 1034 1034" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M502 197q-96 0-96.5 1.5t-1.5 137-1.5 138-2 2.5T266 432.5 132.5 390t-30 94T74 578l232 77q21 8 21 10t-79.5 117.5T168 899t79.5 56.5T328 1011t81-110 82-110 41 55l83 115q43 60 44 60t79.5-58 79-59-76-112.5-76-113.5T795 632.5t129.5-44-28-94T867 400t-128 42-128.5 43-2.5-7.5-1-38.5l-3-108q-4-133-5-133.5t-97-.5z" /></svg> </template> - </Button> - <Button @click="showHtml = !showHtml"> + </NcButton> + <NcButton @click="showHtml = !showHtml"> <template #icon> <Web :size="20" /> </template> {{ t('federatedfilesharing', 'Add to your website') }} - </Button> + </NcButton> </p> <template v-if="showHtml"> @@ -82,14 +82,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. <pre>{{ htmlCode }}</pre> </p> </template> - </SettingsSection> + </NcSettingsSection> </template> <script> import { showError } from '@nextcloud/dialogs' import { loadState } from '@nextcloud/initial-state' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' import Twitter from 'vue-material-design-icons/Twitter' import Facebook from 'vue-material-design-icons/Facebook' import Web from 'vue-material-design-icons/Web' @@ -99,8 +99,8 @@ import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' export default { name: 'PersonalSettings', components: { - Button, - SettingsSection, + NcButton, + NcSettingsSection, Twitter, Facebook, Web, diff --git a/apps/federatedfilesharing/tests/AddressHandlerTest.php b/apps/federatedfilesharing/tests/AddressHandlerTest.php index 13030e73cb0..de0a8d259c1 100644 --- a/apps/federatedfilesharing/tests/AddressHandlerTest.php +++ b/apps/federatedfilesharing/tests/AddressHandlerTest.php @@ -30,9 +30,11 @@ namespace OCA\FederatedFileSharing\Tests; use OC\Federation\CloudIdManager; use OCA\FederatedFileSharing\AddressHandler; use OCP\Contacts\IManager; +use OCP\ICacheFactory; use OCP\IL10N; use OCP\IURLGenerator; use OCP\IUserManager; +use OCP\EventDispatcher\IEventDispatcher; class AddressHandlerTest extends \Test\TestCase { /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ @@ -60,7 +62,13 @@ class AddressHandlerTest extends \Test\TestCase { $this->contactsManager = $this->createMock(IManager::class); - $this->cloudIdManager = new CloudIdManager($this->contactsManager, $this->urlGenerator, $this->createMock(IUserManager::class)); + $this->cloudIdManager = new CloudIdManager( + $this->contactsManager, + $this->urlGenerator, + $this->createMock(IUserManager::class), + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class) + ); $this->addressHandler = new AddressHandler($this->urlGenerator, $this->il10n, $this->cloudIdManager); } diff --git a/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php b/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php index ff979c23d2a..b04b7810910 100644 --- a/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php +++ b/apps/federatedfilesharing/tests/Controller/MountPublicLinkControllerTest.php @@ -34,10 +34,12 @@ use OCA\FederatedFileSharing\Controller\MountPublicLinkController; use OCA\FederatedFileSharing\FederatedShareProvider; use OCP\AppFramework\Http; use OCP\Contacts\IManager as IContactsManager; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\ICloudIdManager; use OCP\Files\IRootFolder; use OCP\HintException; use OCP\Http\Client\IClientService; +use OCP\ICacheFactory; use OCP\IL10N; use OCP\IRequest; use OCP\ISession; @@ -107,7 +109,13 @@ class MountPublicLinkControllerTest extends \Test\TestCase { $this->userSession = $this->getMockBuilder(IUserSession::class)->disableOriginalConstructor()->getMock(); $this->clientService = $this->getMockBuilder('OCP\Http\Client\IClientService')->disableOriginalConstructor()->getMock(); $this->contactsManager = $this->createMock(IContactsManager::class); - $this->cloudIdManager = new CloudIdManager($this->contactsManager, $this->createMock(IURLGenerator::class), $this->userManager); + $this->cloudIdManager = new CloudIdManager( + $this->contactsManager, + $this->createMock(IURLGenerator::class), + $this->userManager, + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class) + ); $this->controller = new MountPublicLinkController( 'federatedfilesharing', $this->request, diff --git a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php index 7d9b2486080..797d029d6b1 100644 --- a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php +++ b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php @@ -38,10 +38,12 @@ use OCA\FederatedFileSharing\FederatedShareProvider; use OCA\FederatedFileSharing\Notifications; use OCA\FederatedFileSharing\TokenHandler; use OCP\Contacts\IManager as IContactsManager; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\ICloudFederationProviderManager; use OCP\Federation\ICloudIdManager; use OCP\Files\File; use OCP\Files\IRootFolder; +use OCP\ICacheFactory; use OCP\IConfig; use OCP\IDBConnection; use OCP\IL10N; @@ -116,7 +118,13 @@ class FederatedShareProviderTest extends \Test\TestCase { //$this->addressHandler = new AddressHandler(\OC::$server->getURLGenerator(), $this->l); $this->addressHandler = $this->getMockBuilder('OCA\FederatedFileSharing\AddressHandler')->disableOriginalConstructor()->getMock(); $this->contactsManager = $this->createMock(IContactsManager::class); - $this->cloudIdManager = new CloudIdManager($this->contactsManager, $this->createMock(IURLGenerator::class), $this->userManager); + $this->cloudIdManager = new CloudIdManager( + $this->contactsManager, + $this->createMock(IURLGenerator::class), + $this->userManager, + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class) + ); $this->gsConfig = $this->createMock(\OCP\GlobalScale\IConfig::class); $this->userManager->expects($this->any())->method('userExists')->willReturn(true); diff --git a/apps/federatedfilesharing/tests/TestCase.php b/apps/federatedfilesharing/tests/TestCase.php index dbd1df38c74..f96f1ab764f 100644 --- a/apps/federatedfilesharing/tests/TestCase.php +++ b/apps/federatedfilesharing/tests/TestCase.php @@ -106,8 +106,6 @@ abstract class TestCase extends \Test\TestCase { } } - self::resetStorage(); - \OC_Util::tearDownFS(); \OC::$server->getUserSession()->setUser(null); \OC\Files\Filesystem::tearDown(); @@ -116,15 +114,4 @@ abstract class TestCase extends \Test\TestCase { \OC_Util::setupFS($user); } - - /** - * reset init status for the share storage - */ - protected static function resetStorage() { - $storage = new \ReflectionClass('\OCA\Files_Sharing\SharedStorage'); - $isInitialized = $storage->getProperty('initialized'); - $isInitialized->setAccessible(true); - $isInitialized->setValue($storage, false); - $isInitialized->setAccessible(false); - } } diff --git a/apps/federation/composer/composer/installed.php b/apps/federation/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/federation/composer/composer/installed.php +++ b/apps/federation/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/federation/l10n/de.js b/apps/federation/l10n/de.js index ea613b489ce..e3eb03d8484 100644 --- a/apps/federation/l10n/de.js +++ b/apps/federation/l10n/de.js @@ -8,8 +8,8 @@ OC.L10N.register( "Trusted servers" : "Vertrauenswürdige Server", "Federation" : "Federation", "Federation allows you to connect with other trusted servers to exchange the user directory." : "Federation ermöglicht die Verbindung mit anderen vertrauenswürdigen Servern um das Nutzerverzeichnis auszutauschen.", - "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.", - "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. It is not necessary to add a server as trusted server in order to create a federated share." : "Federation ermöglicht 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. Es ist nicht erforderlich einen Server als vertrauenswürdig hinzuzufügen, um eine \"federated\" Freigabe zu erstellen.", + "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.", + "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. It is not necessary to add a server as trusted server in order to create a federated share." : "Federation ermöglicht 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. Es ist nicht erforderlich einen Server als vertrauenswürdig hinzuzufügen, um eine \"federated\" Freigabe zu erstellen.", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", "Add" : "Hinzufügen" diff --git a/apps/federation/l10n/de.json b/apps/federation/l10n/de.json index 29109675428..ded6f6cdbf1 100644 --- a/apps/federation/l10n/de.json +++ b/apps/federation/l10n/de.json @@ -6,8 +6,8 @@ "Trusted servers" : "Vertrauenswürdige Server", "Federation" : "Federation", "Federation allows you to connect with other trusted servers to exchange the user directory." : "Federation ermöglicht die Verbindung mit anderen vertrauenswürdigen Servern um das Nutzerverzeichnis auszutauschen.", - "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.", - "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. It is not necessary to add a server as trusted server in order to create a federated share." : "Federation ermöglicht 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. Es ist nicht erforderlich einen Server als vertrauenswürdig hinzuzufügen, um eine \"federated\" Freigabe zu erstellen.", + "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.", + "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. It is not necessary to add a server as trusted server in order to create a federated share." : "Federation ermöglicht 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. Es ist nicht erforderlich einen Server als vertrauenswürdig hinzuzufügen, um eine \"federated\" Freigabe zu erstellen.", "+ Add trusted server" : "+ Vertrauenswürdigen Server hinzufügen", "Trusted server" : "Vertrauenswürdiger Server", "Add" : "Hinzufügen" diff --git a/apps/federation/l10n/es_SV.js b/apps/federation/l10n/es_SV.js index 0f7a9f0c13c..fd15730d295 100644 --- a/apps/federation/l10n/es_SV.js +++ b/apps/federation/l10n/es_SV.js @@ -12,4 +12,4 @@ OC.L10N.register( "Trusted server" : "Servidor de confianza", "Add" : "Agregar" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/federation/l10n/es_SV.json b/apps/federation/l10n/es_SV.json index c964b453e44..605cca34ce5 100644 --- a/apps/federation/l10n/es_SV.json +++ b/apps/federation/l10n/es_SV.json @@ -9,5 +9,5 @@ "+ Add trusted server" : "+ Agregar servidor de confianza", "Trusted server" : "Servidor de confianza", "Add" : "Agregar" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/federation/lib/BackgroundJob/GetSharedSecret.php b/apps/federation/lib/BackgroundJob/GetSharedSecret.php index 75faa7ce1d9..3ca3e0a906b 100644 --- a/apps/federation/lib/BackgroundJob/GetSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/GetSharedSecret.php @@ -39,7 +39,6 @@ use OCP\BackgroundJob\Job; use OCP\Http\Client\IClient; use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; -use OCP\ILogger; use OCP\IURLGenerator; use OCP\OCS\IDiscoveryService; use Psr\Log\LoggerInterface; @@ -60,7 +59,6 @@ class GetSharedSecret extends Job { private LoggerInterface $logger; protected bool $retainJob = false; private string $defaultEndPoint = '/ocs/v2.php/apps/federation/api/v1/shared-secret'; - /** 30 day = 2592000sec */ private int $maxLifespan = 2592000; @@ -83,16 +81,13 @@ class GetSharedSecret extends Job { } /** - * run the job, then remove it from the joblist - * - * @param IJobList $jobList - * @param ILogger|null $logger + * Run the job, then remove it from the joblist */ - public function execute(IJobList $jobList, ILogger $logger = null) { + public function start(IJobList $jobList): void { $target = $this->argument['url']; // only execute if target is still in the list of trusted domains if ($this->trustedServers->isTrustedServer($target)) { - $this->parentExecute($jobList, $logger); + $this->parentStart($jobList); } $jobList->remove($this, $this->argument); @@ -102,14 +97,8 @@ class GetSharedSecret extends Job { } } - /** - * Call execute() method of parent - * - * @param IJobList $jobList - * @param ILogger $logger - */ - protected function parentExecute($jobList, $logger = null) { - parent::execute($jobList, $logger); + protected function parentStart(IJobList $jobList): void { + parent::start($jobList); } protected function run($argument) { @@ -162,12 +151,10 @@ class GetSharedSecret extends Job { $status = -1; // There is no status code if we could not connect $this->logger->info('Could not connect to ' . $target, [ 'exception' => $e, - 'app' => 'federation', ]); } catch (\Throwable $e) { $status = Http::STATUS_INTERNAL_SERVER_ERROR; $this->logger->error($e->getMessage(), [ - 'app' => 'federation', 'exception' => $e, ]); } @@ -190,8 +177,8 @@ class GetSharedSecret extends Job { ); } else { $this->logger->error( - 'remote server "' . $target . '"" does not return a valid shared secret. Received data: ' . $body, - ['app' => 'federation'] + 'remote server "' . $target . '"" does not return a valid shared secret. Received data: ' . $body, + ['app' => 'federation'] ); $this->trustedServers->setServerStatus($target, TrustedServers::STATUS_FAILURE); } @@ -199,13 +186,13 @@ class GetSharedSecret extends Job { } /** - * re-add background job + * Re-add background job * * @param array $argument */ protected function reAddJob(array $argument): void { $url = $argument['url']; - $created = isset($argument['created']) ? (int)$argument['created'] : $this->time->getTime(); + $created = $argument['created'] ?? $this->time->getTime(); $token = $argument['token']; $this->jobList->add( GetSharedSecret::class, diff --git a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php index 5344736b7f9..c0316b8247f 100644 --- a/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php +++ b/apps/federation/tests/BackgroundJob/GetSharedSecretTest.php @@ -76,8 +76,7 @@ class GetSharedSecretTest extends TestCase { /** @var \PHPUnit\Framework\MockObject\MockObject|ITimeFactory */ private $timeFactory; - /** @var GetSharedSecret */ - private $getSharedSecret; + private GetSharedSecret $getSharedSecret; protected function setUp(): void { parent::setUp(); @@ -113,9 +112,9 @@ class GetSharedSecretTest extends TestCase { * @param bool $isTrustedServer * @param bool $retainBackgroundJob */ - public function testExecute($isTrustedServer, $retainBackgroundJob) { + public function testExecute(bool $isTrustedServer, bool $retainBackgroundJob): void { /** @var GetSharedSecret |\PHPUnit\Framework\MockObject\MockObject $getSharedSecret */ - $getSharedSecret = $this->getMockBuilder('OCA\Federation\BackgroundJob\GetSharedSecret') + $getSharedSecret = $this->getMockBuilder(GetSharedSecret::class) ->setConstructorArgs( [ $this->httpClientService, @@ -126,15 +125,15 @@ class GetSharedSecretTest extends TestCase { $this->discoverService, $this->timeFactory ] - )->setMethods(['parentExecute'])->getMock(); + )->setMethods(['parentStart'])->getMock(); $this->invokePrivate($getSharedSecret, 'argument', [['url' => 'url', 'token' => 'token']]); $this->trustedServers->expects($this->once())->method('isTrustedServer') ->with('url')->willReturn($isTrustedServer); if ($isTrustedServer) { - $getSharedSecret->expects($this->once())->method('parentExecute'); + $getSharedSecret->expects($this->once())->method('parentStart'); } else { - $getSharedSecret->expects($this->never())->method('parentExecute'); + $getSharedSecret->expects($this->never())->method('parentStart'); } $this->invokePrivate($getSharedSecret, 'retainJob', [$retainBackgroundJob]); $this->jobList->expects($this->once())->method('remove'); diff --git a/apps/files/composer/composer/installed.php b/apps/files/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/files/composer/composer/installed.php +++ b/apps/files/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/files/css/files.css b/apps/files/css/files.css index 83ad47713f4..bdedc9de95d 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -111,13 +111,13 @@ .newFileMenu .error, .newFileMenu .error + .icon-confirm, -#fileList .error { +.files-fileList .error { color: var(--color-error); border-color: var(--color-error); } /* FILE TABLE */ -#filestable { +.files-filestable { position: relative; width: 100%; min-width: 250px; @@ -127,31 +127,31 @@ * This is a dirty hack as the sticky header requires us to use a different display type on the table element */ } -#emptycontent:not(.hidden) ~ #filestable { +.emptycontent:not(.hidden) ~ .files-filestable { display: none; } -#filestable thead { +.files-filestable thead { position: -webkit-sticky; position: sticky; - top: 50px; + top: 44px; z-index: 60; display: block; background-color: var(--color-main-background-translucent); } -#filestable tbody { +.files-filestable tbody { display: table; width: 100%; } -#filestable tbody tr[data-permissions="0"], -#filestable tbody tr[data-permissions="16"] { +.files-filestable tbody tr[data-permissions="0"], +.files-filestable tbody tr[data-permissions="16"] { background-color: var(--color-background-dark); } -#filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext, -#filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext { +.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext, +.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext { color: var(--color-text-maxcontrast); } -#filestable.hidden { +.files-filestable.hidden { display: none; } @@ -165,7 +165,7 @@ width: calc(100% - 300px); } -.file-drag, .file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover { +.file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover { background-color: var(--color-primary-light) !important; } @@ -173,11 +173,11 @@ background-color: var(--color-main-background) !important; } -.file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover { +.file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover { background-color: transparent !important; } -.app-files #app-content.dir-drop #filestable tbody tr.dropping-to-dir { +.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir { background-color: var(--color-primary-light) !important; } @@ -256,23 +256,23 @@ opacity: 0.3; } -#filestable tbody tr { +.files-filestable tbody tr { height: 51px; } -#filestable tbody tr:hover, -#filestable tbody tr:focus, -#filestable tbody .name:focus, -#filestable tbody tr:hover .filename form, +.files-filestable tbody tr:hover, +.files-filestable tbody tr:focus, +.files-filestable tbody .name:focus, +.files-filestable tbody tr:hover .filename form, table tr.mouseOver td { background-color: var(--color-background-hover); } -#filestable tbody tr:active, -#filestable tbody tr.highlighted, -#filestable tbody tr.highlighted .name:focus, -#filestable tbody tr.selected, -#filestable tbody tr.searchresult { +.files-filestable tbody tr:active, +.files-filestable tbody tr.highlighted, +.files-filestable tbody tr.highlighted .name:focus, +.files-filestable tbody tr.selected, +.files-filestable tbody tr.searchresult { background-color: var(--color-primary-light); } @@ -373,50 +373,44 @@ table td { background-repeat: no-repeat; } -table th#headerName { +table th.column-name { position: relative; width: 9999px; /* not really sure why this works better than 100% … table styling */ padding: 0; } -#headerName-container { +.column-name-container { position: relative; height: 50px; } -table th#headerSelection { +table th.column-selection { padding-top: 2px; } -table th#headerSize, table td.filesize { +table th.column-size, table td.filesize { text-align: right; } -table th#headerDate, table td.date, +table th.column-mtime, table td.date, table th.column-last, table td.column-last { -moz-box-sizing: border-box; box-sizing: border-box; position: relative; /* this can not be just width, both need to be set … table styling */ min-width: 130px; - max-width: 130px; } -#app-content-files thead, -#app-content-trashbin thead { - top: 94px; -} - -#app-content-recent, -#app-content-favorites, -#app-content-shareoverview, -#app-content-sharingout, -#app-content-sharingin, -#app-content-sharinglinks, -#app-content-deletedshares, -#app-content-pendingshares { - margin-top: 22px; +#app-content-recent thead, +#app-content-favorites thead, +#app-content-shareoverview thead, +#app-content-sharingout thead, +#app-content-sharingin thead, +#app-content-sharinglinks thead, +#app-content-deletedshares thead, +#app-content-pendingshares thead { + top: 0; } table.multiselect thead th { @@ -428,13 +422,13 @@ table.multiselect thead th { margin-right: 27%; } -table.multiselect #headerName { +table.multiselect .column-name { position: relative; width: 9999px; /* when we use 100%, the styling breaks on mobile … table styling */ } -table.multiselect #modified { +table.multiselect .column-mtime > a { display: none; } @@ -537,19 +531,19 @@ table td.filename .nametext { padding: 0 20px 0 0; } -.hide-hidden-files #filestable #fileList tr.hidden-file, -.hide-hidden-files #filestable #fileList tr.hidden-file.dragging { +.hide-hidden-files .files-filestable .files-fileList tr.hidden-file, +.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging { display: none; } -#fileList tr.animate-opacity { +.files-fileList tr.animate-opacity { -webkit-transition: opacity 250ms; -moz-transition: opacity 250ms; -o-transition: opacity 250ms; transition: opacity 250ms; } -#fileList tr.dragging { +.files-fileList tr.dragging { opacity: 0.2; } @@ -582,30 +576,30 @@ table td.selection { } /* File checkboxes */ -#fileList tr td.selection > .selectCheckBox + label:before { +.files-fileList tr td.selection > .selectCheckBox + label:before { opacity: 0.3; margin-right: 0; } /* Show checkbox with full opacity when hovering, checked, or selected */ -#fileList tr:hover td.selection > .selectCheckBox + label:before, -#fileList tr:focus td.selection > .selectCheckBox + label:before, -#fileList tr td.selection > .selectCheckBox:checked + label:before, -#fileList tr.selected td.selection > .selectCheckBox + label:before { +.files-fileList tr:hover td.selection > .selectCheckBox + label:before, +.files-fileList tr:focus td.selection > .selectCheckBox + label:before, +.files-fileList tr td.selection > .selectCheckBox:checked + label:before, +.files-fileList tr.selected td.selection > .selectCheckBox + label:before { opacity: 1; } /* Show checkbox with half opacity when selecting range */ -#fileList tr.halfselected td.selection > .selectCheckBox + label:before { +.files-fileList tr.halfselected td.selection > .selectCheckBox + label:before { opacity: 0.5; } /* Use label to have bigger clickable size for checkbox */ -#fileList tr td.selection > .selectCheckBox + label, +.files-fileList tr td.selection > .selectCheckBox + label, .select-all + label { padding: 16px; } -#fileList tr td.selection > .selectCheckBox:focus + label, +.files-fileList tr td.selection > .selectCheckBox:focus + label, .select-all:focus + label { background-color: var(--color-background-hover); border-radius: var(--border-radius-pill); @@ -614,12 +608,12 @@ table td.selection { padding: 14px; } -#fileList tr td.selection > .selectCheckBox:focus-visible + label, +.files-fileList tr td.selection > .selectCheckBox:focus-visible + label, .select-all:focus-visible + label { outline-offset: 0px; } -#fileList tr td.filename { +.files-fileList tr td.filename { position: relative; width: 100%; padding-left: 0; @@ -630,19 +624,19 @@ table td.selection { transition: background-image 500ms; } -#fileList tr td.filename a.name label, -#fileList tr td.filename p.name label { +.files-fileList tr td.filename a.name label, +.files-fileList tr td.filename p.name label { position: absolute; width: 80%; height: 50px; } -#fileList tr td.filename .favorite { +.files-fileList tr td.filename .favorite { display: inline-block; float: left; } -#fileList tr td.filename .favorite-mark { +.files-fileList tr td.filename .favorite-mark { position: absolute; display: block; top: -6px; @@ -672,25 +666,25 @@ table td.selection { } /* force show the loading icon, not only on hover */ -#fileList .icon-loading-small { +.files-fileList .icon-loading-small { opacity: 1 !important; display: inline !important; } -#fileList .action.action-share-notification span, #fileList a.name { +.files-fileList .action.action-share-notification span, .files-fileList a.name { cursor: default !important; } /* * Make the disabled link look not like a link in file list rows */ -#fileList a.name.disabled * { +.files-fileList a.name.disabled * { cursor: default; } -#fileList a.name.disabled a, #fileList a.name.disabled a * { +.files-fileList a.name.disabled a, .files-fileList a.name.disabled a * { cursor: pointer; } -#fileList a.name.disabled:focus { +.files-fileList a.name.disabled:focus { background: none; } @@ -731,16 +725,16 @@ a.action > img { margin-top: -3px; } -#fileList td a a.action { +.files-fileList td a a.action { display: inline; padding: 17px 8px; line-height: 50px; opacity: 0.3; } -#fileList td a a.action.action-share { +.files-fileList td a a.action.action-share { padding: 17px 14px; } -#fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared + span { +.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared + span { /* hide text of the share action */ /* .hidden-visually for accessbility */ position: absolute; @@ -750,44 +744,44 @@ a.action > img { height: 1px; overflow: hidden; } -#fileList td a a.action.action-share .avatar { +.files-fileList td a a.action.action-share .avatar { display: inline-block; vertical-align: middle; } -#fileList td a a.action.action-menu { +.files-fileList td a a.action.action-menu { padding-top: 17px; padding-bottom: 17px; padding-left: 14px; padding-right: 14px; } -#fileList td a a.action.no-permission:hover, #fileList td a a.action.no-permission:focus { +.files-fileList td a a.action.no-permission:hover, .files-fileList td a a.action.no-permission:focus { opacity: 0.3; } -#fileList td a a.action.disabled:hover, #fileList td a a.action.disabled:focus, -#fileList td a a.action.disabled img { +.files-fileList td a a.action.disabled:hover, .files-fileList td a a.action.disabled:focus, +.files-fileList td a a.action.disabled img { opacity: 0.3; } -#fileList td a a.action.disabled.action-download { +.files-fileList td a a.action.disabled.action-download { opacity: 0.7; } -#fileList td a a.action.disabled.action-download:hover, #fileList td a a.action.disabled.action-download:focus { +.files-fileList td a a.action.disabled.action-download:hover, .files-fileList td a a.action.disabled.action-download:focus { opacity: 0.7; } -#fileList td a a.action:hover, #fileList td a a.action:focus { +.files-fileList td a a.action:hover, .files-fileList td a a.action:focus { opacity: 1; } -#fileList td a a.action:focus { +.files-fileList td a a.action:focus { background-color: var(--color-background-hover); border-radius: var(--border-radius-pill); } -#fileList td a .fileActionsMenu a.action, #fileList td a a.action.action-share.shared-style { +.files-fileList td a .fileActionsMenu a.action, .files-fileList td a a.action.action-share.shared-style { opacity: 0.7; } -#fileList td a .fileActionsMenu .action.permanent { +.files-fileList td a .fileActionsMenu .action.permanent { opacity: 1; } -#fileList .action.action-share.permanent.shared-style span:not(.icon) { +.files-fileList .action.action-share.permanent.shared-style span:not(.icon) { display: inline-block; max-width: 70px; overflow: hidden; @@ -796,31 +790,31 @@ a.action > img { margin-left: 6px; } -#fileList .remoteAddress .userDomain { +.files-fileList .remoteAddress .userDomain { margin-left: 0 !important; } -#fileList .favorite-mark.permanent { +.files-fileList .favorite-mark.permanent { opacity: 1; } -#fileList .fileActionsMenu a.action:hover, -#fileList .fileActionsMenu a.action:focus, -#fileList a.action.action-share.shared-style:hover, -#fileList a.action.action-share.shared-style:focus { +.files-fileList .fileActionsMenu a.action:hover, +.files-fileList .fileActionsMenu a.action:focus, +.files-fileList a.action.action-share.shared-style:hover, +.files-fileList a.action.action-share.shared-style:focus { opacity: 1; } -#fileList tr a.action.disabled { +.files-fileList tr a.action.disabled { background: none; } -#selectedActionsList a.download.disabled, -#fileList tr a.action.action-download.disabled { +.selectedActions a.download.disabled, +.files-fileList tr a.action.action-download.disabled { color: #000000; } -#fileList tr:hover a.action.disabled:hover * { +.files-fileList tr:hover a.action.disabled:hover * { cursor: default; } @@ -830,7 +824,7 @@ a.action > img { height: 330px; } -#filestable .filesummary { +.files-filestable .summary .filesummary { width: 100%; /* Width of checkbox and file preview */ padding-left: 101px; @@ -916,32 +910,68 @@ table.dragshadow td.size { left: 57px !important; } -#filestable .filename .action .icon, -#filestable .selectedActions a .icon, -#filestable .filename .favorite-mark .icon, -#controls .actions .button .icon { +.files-controls { + box-sizing: border-box; + position: -webkit-sticky; + position: sticky; + height: 54px; + padding: 0; + margin: 0; + background-color: var(--color-main-background-translucent); + z-index: 62; + /* must be above the filelist sticky header and texteditor menubar */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + display: flex; + top: 0; +} +.files-controls .actions > div > .button, .files-controls .actions > div button, .files-controls .actions > .button, .files-controls .actions button { + box-sizing: border-box; + display: inline-block; + display: flex; + height: 44px; + width: 44px; + padding: 9px; + align-items: center; + justify-content: center; +} +.files-controls .actions > div .button.hidden, .files-controls .actions .button.hidden { + display: none; +} + +/* position controls for apps with app-navigation */ +.viewer-mode #app-navigation + #app-content .files-controls { + left: 0; +} + +.files-filestable .filename .action .icon, +.files-filestable .selectedActions a .icon, +.files-filestable .filename .favorite-mark .icon, +.files-controls .actions .button .icon { display: inline-block; vertical-align: middle; background-size: 16px 16px; } -#filestable .filename .favorite-mark .icon-star { +.files-filestable .filename .favorite-mark .icon-star { background-image: none; } -#filestable .filename .favorite-mark .icon-starred { +.files-filestable .filename .favorite-mark .icon-starred { /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */ background-image: var(--icon-star-dark-yellow); } -#filestable .filename .action .icon.hidden, -#filestable .selectedActions a .icon.hidden, -#controls .actions .button .icon.hidden { +.files-filestable .filename .action .icon.hidden, +.files-filestable .selectedActions a .icon.hidden, +.files-controls .actions .button .icon.hidden { display: none; } -#filestable .filename .action .icon.loading, -#filestable .selectedActions a .icon.loading, -#controls .actions .button .icon.loading { +.files-filestable .filename .action .icon.loading, +.files-filestable .selectedActions a .icon.loading, +.files-controls .actions .button .icon.loading { width: 15px; height: 15px; } @@ -950,12 +980,15 @@ table.dragshadow td.size { position: relative; } +.breadcrumb { + align-items: center; +} .breadcrumb .icon-home { border-radius: var(--border-radius); } .breadcrumb .canDrop > a, -#filestable tbody tr.canDrop { +.files-filestable tbody tr.canDrop { background-color: rgba(0, 130, 201, 0.3); } @@ -1006,62 +1039,62 @@ table.dragshadow td.size { } /* GRID */ -#filestable.view-grid:not(.hidden) { +.files-filestable.view-grid:not(.hidden) { /* HEADER and MULTISELECT */ /* MAIN FILE LIST */ /* Center align the footer file number & size summary */ } -#filestable.view-grid:not(.hidden) thead tr { +.files-filestable.view-grid:not(.hidden) thead tr { display: block; border-bottom: 1px solid var(--color-border); background-color: var(--color-main-background-translucent); } -#filestable.view-grid:not(.hidden) thead tr th { +.files-filestable.view-grid:not(.hidden) thead tr th { width: auto; border: none; } -#filestable.view-grid:not(.hidden) tbody { +.files-filestable.view-grid:not(.hidden) tbody { display: grid; grid-template-columns: repeat(auto-fill, 160px); justify-content: space-around; row-gap: 15px; margin: 15px 0; } -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) { +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) { display: block; position: relative; height: 190px; border-radius: var(--border-radius); } -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted { +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted { background-color: transparent; } -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions { +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions { background-color: var(--color-background-hover); } -#filestable.view-grid:not(.hidden) tbody td { +.files-filestable.view-grid:not(.hidden) tbody td { display: inline; border-bottom: none; /* No space for filesize and date in grid view */ /* Position actions menu below file */ } -#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper { +.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper { min-width: 0; max-width: none; position: absolute; @@ -1072,7 +1105,7 @@ table.dragshadow td.size { left: 0; z-index: -1; } -#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail { +.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail { width: calc(100% - 2 * 14px); height: calc(100% - 2 * 14px); background-size: contain; @@ -1084,13 +1117,13 @@ table.dragshadow td.size { * Position is inherited from the selection while in grid view */ } -#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark { +.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark { padding: 14px; left: auto; top: -22px; right: -22px; } -#filestable.view-grid:not(.hidden) tbody td.filename .uploadtext { +.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext { width: 100%; margin: 0; top: 0; @@ -1099,13 +1132,13 @@ table.dragshadow td.size { padding-top: 4px; padding-left: 28px; } -#filestable.view-grid:not(.hidden) tbody td.filename .name { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name { height: 100%; border-radius: var(--border-radius); overflow: hidden; cursor: pointer !important; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext { display: flex; height: 44px; margin-top: 146px; @@ -1114,27 +1147,27 @@ table.dragshadow td.size { padding: 0; /* No space for extension in grid view */ } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext { display: inline-block; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before { content: ""; flex: 1; min-width: 14px; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after { content: ""; flex: 1; min-width: 44px; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension { display: none; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions { height: initial; margin-top: 146px; display: flex; @@ -1142,7 +1175,7 @@ table.dragshadow td.size { position: absolute; right: 0; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action { padding: 14px; width: 44px; height: 44px; @@ -1150,34 +1183,34 @@ table.dragshadow td.size { align-items: center; justify-content: center; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu) { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu) { display: none; } -#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden { +.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden { display: block !important; } -#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img { +.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img { padding: 6px; border-radius: 50%; } -#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden { +.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden { display: block !important; } -#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden { +.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden { display: block !important; } -#filestable.view-grid:not(.hidden) tbody td.filename form { +.files-filestable.view-grid:not(.hidden) tbody td.filename form { padding: 3px 14px; border-radius: var(--border-radius); } -#filestable.view-grid:not(.hidden) tbody td.filename form input.filename { +.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename { width: 100%; margin-left: 0; } -#filestable.view-grid:not(.hidden) tbody td.filesize, #filestable.view-grid:not(.hidden) tbody td.date { +.files-filestable.view-grid:not(.hidden) tbody td.filesize, .files-filestable.view-grid:not(.hidden) tbody td.date { display: none; } -#filestable.view-grid:not(.hidden) tbody td.selection, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark { +.files-filestable.view-grid:not(.hidden) tbody td.selection, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark { position: absolute; top: -8px; left: -8px; @@ -1187,45 +1220,45 @@ table.dragshadow td.size { z-index: 10; background: transparent; } -#filestable.view-grid:not(.hidden) tbody td.selection label, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label { +.files-filestable.view-grid:not(.hidden) tbody td.selection label, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label { width: 44px; height: 44px; display: inline-flex; padding: 14px; } -#filestable.view-grid:not(.hidden) tbody td.selection label::before, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before { +.files-filestable.view-grid:not(.hidden) tbody td.selection label::before, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before { margin: 0; width: 14px; height: 14px; } -#filestable.view-grid:not(.hidden) tbody td .popovermenu { +.files-filestable.view-grid:not(.hidden) tbody td .popovermenu { left: 0; width: 150px; margin: 0 5px; /* Ellipsize long entries, normally menu width is adjusted but for grid we use fixed width. */ } -#filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon) { +.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon) { overflow: hidden; text-overflow: ellipsis; } -#filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension { +.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension { display: block; } -#filestable.view-grid:not(.hidden) tfoot { +.files-filestable.view-grid:not(.hidden) tfoot { display: grid; } -#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) { +.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) { display: inline-block; margin: 0 auto; height: 418px; } -#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td { +.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td { padding-top: 50px; } -#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child, #filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date { +.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child, .files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date { display: none; } -#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info { +.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info { margin-left: 0; } @@ -1237,7 +1270,8 @@ table.dragshadow td.size { padding: 22px; opacity: 0.5; position: fixed; - right: 0; + right: calc(var(--default-grid-baseline) * 4); + top: calc(var(--header-height) + var(--default-grid-baseline)); z-index: 100; } #view-toggle:hover, #view-toggle:focus, #showgridview:focus + #view-toggle { @@ -1261,14 +1295,14 @@ table.dragshadow td.size { #body-public { /* Right-align view toggle on link share page */ } -#body-public #filestable.view-grid:not(.hidden) tbody td { +#body-public .files-filestable.view-grid:not(.hidden) tbody td { /* More space for filename since there is no share icon */ /* Position actions menu correctly below 3-dot-menu */ } -#body-public #filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext { +#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext { max-width: 124px; } -#body-public #filestable.view-grid:not(.hidden) tbody td .popovermenu { +#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu { left: -80px; } #body-public #view-toggle { diff --git a/apps/files/css/files.css.map b/apps/files/css/files.css.map index 286ffe89d45..e5fd5828e4d 100644 --- a/apps/files/css/files.css.map +++ b/apps/files/css/files.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","files.scss","../../../core/css/functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADxCA;AACA;EACC;EACA;EACA;EACA;;;AAED;EAAoD;EAAU;;;AAC9D;EAAqB;;;AACrB;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AAiBA;AAAA;AAAA;;AAfA;EACC;;AAGD;EACC;EACA;EAEA,KDoCc;EClCd;EACA;EACA;;AAMD;EACC;EACA;;AAEA;AAAA;EAEC;;AAEA;AAAA;EACC;;;AAMJ;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EAGC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;AClEC;EAEA;;;ADmED;ACrEC;EAEA;;;ADsED;ACxEC;EAEA;;;ADyED;AAAA;AAAA;AAAA;AC3EC;EAEA;;;AD+ED;ACjFC;EAEA;;;ADkFD;ACpFC;EAEA;;;ADqFD;ACvFC;EAEA;;;ADwFD;AC1FC;EAEA;;;AD2FD;AC7FC;EAEA;;;AD8FD;AChGC;EAEA;;;ADkGD;EACC;;;AAED;AACA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAGD;EAAU;;;AAEV;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;;;AAED;AAAA;EAEC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;AAAe;EACf;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;AAAA;EAEC;EACA;EACA;AACA;EACA;EACA;;;AAGD;AAAA;EAEC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;AAAe;;;AAEhB;EACC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;EACA;AAAmB;EACnB;EACA;EACA;EACA;EACA;;;AAED;AACC;EACA;EACA;EACA;EACA;;;AAGA;EACC;;AAED;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAID;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EAA6H;;;AAC7H;EAAwE;EAAY;;;AAEpF;EACC;EACA;EACA;EACA;;;AAGD;AAEC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;EAIC;;;AAGD;AACA;EACC;;;AAGD;AAGC;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAA2C;EAAwC;EAAsC;;;AAG1H;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAAsC;;;AAEtC;AACA;EACC;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;EACA;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIC;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACC;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;;AACA;EACC;;AACA;AACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAGA;EACC;;AAID;AAAA;EAEC;;AAED;EACC;;AACA;EACC;;AAIH;EACC;;AAED;EACC;EACA;;AAGF;EACC;;AAED;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAKC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;AACA;EAEA;;;AAED;EACC;AACA;EACA;;;AAED;AAAA;AAAA;AAGA;EACC;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;AAEA;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;;AAIF;AAAA;AAAA;AAAA;EAIC;EACA;EACA;;;AAMA;EACC;;AAED;AChwBA;EAEA;;;ADmwBD;AAAA;AAAA;EAGC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAED;EACC;;AACA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKA;EACC;;AAIF;EACC;EACA;;;AAIF;AACA;AAIC;AAaA;AAoOA;;AA/OC;EACC;EACA;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;AAAA;EAKC;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAKH;EACC;EACA;AAmJA;AA8BA;;AA9KC;EACC;EACA;EACA;EACA,OAvDQ;EAwDR,QAxDQ;EAyDR,SAxDO;EAyDP;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACC,SA1EK;EA2EL;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;EAIA;EAKA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;AAoBA;;AAlBA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAID;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,SApJK;EAqJL;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAQH;EACC;;AAEA;EACC;EACA;;AAIF;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;;AAMH;EAEC;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAvNO;;AAwNP;EACC;EACA,OA1NM;EA2NN,QA3NM;;AAiOT;EACC;EACA;EACA;AAEA;;AACA;EACC;EACA;;AAMJ;EACC;;AAID;EACC;;AAEA;EACC;EACA;EAEA;;AAEA;EACC;;AAEA;EAEC;;AAGD;EACI;;;AAOR;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;;AAGD;EAEC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;EACA;;;AAGD;AACA;AAaC;;AAZA;AACC;AAKA;;AAJA;EACC;;AAID;EACC;;AAKF;EACC;EACA;;;AAIF;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA","file":"files.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","files.scss","../../../core/css/functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADxCA;AACA;EACC;EACA;EACA;EACA;;;AAED;EAAoD;EAAU;;;AAC9D;EAAqB;;;AACrB;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AAiBA;AAAA;AAAA;;AAfA;EACC;;AAGD;EACC;EACA;EAEA;EAEA;EACA;EACA;;AAMD;EACC;EACA;;AAEA;AAAA;EAEC;;AAEA;AAAA;EACC;;;AAMJ;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EAGC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;AClEC;EAEA;;;ADmED;ACrEC;EAEA;;;ADsED;ACxEC;EAEA;;;ADyED;AAAA;AAAA;AAAA;AC3EC;EAEA;;;AD+ED;ACjFC;EAEA;;;ADkFD;ACpFC;EAEA;;;ADqFD;ACvFC;EAEA;;;ADwFD;AC1FC;EAEA;;;AD2FD;AC7FC;EAEA;;;AD8FD;AChGC;EAEA;;;ADkGD;EACC;;;AAED;AACA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAGD;EAAU;;;AAEV;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;;;AAED;AAAA;EAEC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;AAAe;EACf;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;AAAA;EAEC;EACA;EACA;AACA;EACA;;;AAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;AAAe;;;AAEhB;EACC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;EACA;AAAmB;EACnB;EACA;EACA;EACA;EACA;;;AAED;AACC;EACA;EACA;EACA;EACA;;;AAGA;EACC;;AAED;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAID;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EAA6H;;;AAC7H;EAAwE;EAAY;;;AAEpF;EACC;EACA;EACA;EACA;;;AAGD;AAEC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;EAIC;;;AAGD;AACA;EACC;;;AAGD;AAGC;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAA2C;EAAwC;EAAsC;;;AAG1H;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAAsC;;;AAEtC;AACA;EACC;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;EACA;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIC;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACC;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;;AACA;EACC;;AACA;AACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAGA;EACC;;AAID;AAAA;EAEC;;AAED;EACC;;AACA;EACC;;AAIH;EACC;;AAED;EACC;EACA;;AAGF;EACC;;AAED;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAKC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;AACA;EAEA;;;AAED;EACC;AACA;EACA;;;AAED;AAAA;AAAA;AAGA;EACC;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;AAEA;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA;;AAKE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAMJ;AAEA;EACC;;;AAGD;AAAA;AAAA;AAAA;EAIC;EACA;EACA;;;AAMA;EACC;;AAED;ACvyBA;EAEA;;;AD0yBD;AAAA;AAAA;EAGC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAIF;AAAA;EAEC;;;AAED;EACC;;AACA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKA;EACC;;AAIF;EACC;EACA;;;AAIF;AACA;AAIC;AAaA;AAoOA;;AA/OC;EACC;EACA;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;AAAA;EAKC;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAKH;EACC;EACA;AAmJA;AA8BA;;AA9KC;EACC;EACA;EACA;EACA,OAvDQ;EAwDR,QAxDQ;EAyDR,SAxDO;EAyDP;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACC,SA1EK;EA2EL;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;EAIA;EAKA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;AAoBA;;AAlBA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAID;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,SApJK;EAqJL;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAQH;EACC;;AAEA;EACC;EACA;;AAIF;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;;AAMH;EAEC;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAvNO;;AAwNP;EACC;EACA,OA1NM;EA2NN,QA3NM;;AAiOT;EACC;EACA;EACA;AAEA;;AACA;EACC;EACA;;AAMJ;EACC;;AAID;EACC;;AAEA;EACC;EACA;EAEA;;AAEA;EACC;;AAEA;EAEC;;AAGD;EACI;;;AAOR;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;;AAGD;EAEC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;EACA;;;AAGD;AACA;AAaC;;AAZA;AACC;AAKA;;AAJA;EACC;;AAID;EACC;;AAKF;EACC;EACA;;;AAIF;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA","file":"files.css"}
\ No newline at end of file diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss index 6242eb4a5c0..075646cae80 100644 --- a/apps/files/css/files.scss +++ b/apps/files/css/files.scss @@ -48,28 +48,28 @@ .newFileMenu .error, .newFileMenu .error + .icon-confirm, -#fileList .error { +.files-fileList .error { color: var(--color-error); border-color: var(--color-error); } /* FILE TABLE */ -#filestable { +.files-filestable { position: relative; width: 100%; min-width: 250px; display: block; flex-direction: column; // hide table if emptycontent is not hidden - #emptycontent:not(.hidden) ~ & { + .emptycontent:not(.hidden) ~ & { display: none; } // floating header thead { position: -webkit-sticky; position: sticky; - // header + breadcrumbs - top: variables.$header-height; + // breadcrumbs + top: 44px; // under breadcrumbs, over file list z-index: 60; display: block; @@ -94,7 +94,7 @@ } } -#filestable.hidden { +.files-filestable.hidden { display: none; } @@ -110,7 +110,7 @@ width: calc(100% - 300px); } -.file-drag, .file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover { +.file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover { background-color: var(--color-primary-light) !important; } @@ -118,11 +118,11 @@ background-color: var(--color-main-background) !important; } -.file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover{ +.file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover{ background-color: transparent !important; } -.app-files #app-content.dir-drop #filestable tbody tr.dropping-to-dir{ +.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{ background-color: var(--color-primary-light) !important; } @@ -181,21 +181,21 @@ opacity: 0.3; } -#filestable tbody tr { +.files-filestable tbody tr { height: 51px; } -#filestable tbody tr:hover, -#filestable tbody tr:focus, -#filestable tbody .name:focus, -#filestable tbody tr:hover .filename form, +.files-filestable tbody tr:hover, +.files-filestable tbody tr:focus, +.files-filestable tbody .name:focus, +.files-filestable tbody tr:hover .filename form, table tr.mouseOver td { background-color: var(--color-background-hover); } -#filestable tbody tr:active, -#filestable tbody tr.highlighted, -#filestable tbody tr.highlighted .name:focus, -#filestable tbody tr.selected, -#filestable tbody tr.searchresult { +.files-filestable tbody tr:active, +.files-filestable tbody tr.highlighted, +.files-filestable tbody tr.highlighted .name:focus, +.files-filestable tbody tr.selected, +.files-filestable tbody tr.searchresult { background-color: var(--color-primary-light); } @@ -283,47 +283,43 @@ table td { background-position: 8px center; background-repeat: no-repeat; } -table th#headerName { +table th.column-name { position: relative; width: 9999px; /* not really sure why this works better than 100% … table styling */ padding: 0; } -#headerName-container { +.column-name-container { position: relative; height: 50px; } -table th#headerSelection { +table th.column-selection { padding-top: 2px; } -table th#headerSize, table td.filesize { +table th.column-size, table td.filesize { text-align: right; } -table th#headerDate, table td.date, +table th.column-mtime, table td.date, table th.column-last, table td.column-last { -moz-box-sizing: border-box; box-sizing: border-box; position: relative; /* this can not be just width, both need to be set … table styling */ min-width: 130px; - max-width: 130px; } -#app-content-files thead, -#app-content-trashbin thead { - top: 94px; -} - -#app-content-recent, -#app-content-favorites, -#app-content-shareoverview, +#app-content-recent, +#app-content-favorites, +#app-content-shareoverview, #app-content-sharingout, #app-content-sharingin, #app-content-sharinglinks, #app-content-deletedshares, #app-content-pendingshares { - margin-top: 22px; + thead { + top: 0; + } } table.multiselect thead th { @@ -335,11 +331,11 @@ table.multiselect thead th { margin-right: 27%; } -table.multiselect #headerName { +table.multiselect .column-name { position: relative; width: 9999px; /* when we use 100%, the styling breaks on mobile … table styling */ } -table.multiselect #modified { +table.multiselect .column-mtime>a { display: none; } @@ -434,18 +430,18 @@ table { } } -.hide-hidden-files #filestable #fileList tr.hidden-file, -.hide-hidden-files #filestable #fileList tr.hidden-file.dragging { +.hide-hidden-files .files-filestable .files-fileList tr.hidden-file, +.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging { display: none; } -#fileList tr.animate-opacity { +.files-fileList tr.animate-opacity { -webkit-transition:opacity 250ms; -moz-transition:opacity 250ms; -o-transition:opacity 250ms; transition:opacity 250ms; } -#fileList tr.dragging { +.files-fileList tr.dragging { opacity: 0.2; } @@ -482,26 +478,26 @@ table td.selection { } /* File checkboxes */ -#fileList tr td.selection>.selectCheckBox + label:before { +.files-fileList tr td.selection>.selectCheckBox + label:before { opacity: 0.3; margin-right: 0; } /* Show checkbox with full opacity when hovering, checked, or selected */ -#fileList tr:hover td.selection>.selectCheckBox + label:before, -#fileList tr:focus td.selection>.selectCheckBox + label:before, -#fileList tr td.selection>.selectCheckBox:checked + label:before, -#fileList tr.selected td.selection>.selectCheckBox + label:before { +.files-fileList tr:hover td.selection>.selectCheckBox + label:before, +.files-fileList tr:focus td.selection>.selectCheckBox + label:before, +.files-fileList tr td.selection>.selectCheckBox:checked + label:before, +.files-fileList tr.selected td.selection>.selectCheckBox + label:before { opacity: 1; } /* Show checkbox with half opacity when selecting range */ -#fileList tr.halfselected td.selection>.selectCheckBox + label:before { +.files-fileList tr.halfselected td.selection>.selectCheckBox + label:before { opacity: 0.5; } /* Use label to have bigger clickable size for checkbox */ -#fileList tr td.selection>.selectCheckBox, +.files-fileList tr td.selection>.selectCheckBox, .select-all { & + label { padding: 16px; @@ -516,12 +512,12 @@ table td.selection { } } -#fileList tr td.selection>.selectCheckBox:focus-visible + label, +.files-fileList tr td.selection>.selectCheckBox:focus-visible + label, .select-all:focus-visible + label { outline-offset: 0px; } -#fileList tr td.filename { +.files-fileList tr td.filename { position: relative; width: 100%; padding-left: 0; @@ -529,18 +525,18 @@ table td.selection { -webkit-transition:background-image 500ms; -moz-transition:background-image 500ms; -o-transition:background-image 500ms; transition:background-image 500ms; } -#fileList tr td.filename a.name label, -#fileList tr td.filename p.name label { +.files-fileList tr td.filename a.name label, +.files-fileList tr td.filename p.name label { position: absolute; width: 80%; height: 50px; } -#fileList tr td.filename .favorite { +.files-fileList tr td.filename .favorite { display: inline-block; float: left; } -#fileList tr td.filename .favorite-mark { +.files-fileList tr td.filename .favorite-mark { position: absolute; display: block; top: -6px; @@ -568,19 +564,19 @@ table td.selection { } /* force show the loading icon, not only on hover */ -#fileList .icon-loading-small { +.files-fileList .icon-loading-small { opacity: 1 !important; display: inline !important; } -#fileList .action.action-share-notification span, #fileList a.name { +.files-fileList .action.action-share-notification span, .files-fileList a.name { cursor: default !important; } /* * Make the disabled link look not like a link in file list rows */ -#fileList a.name.disabled { +.files-fileList a.name.disabled { * { cursor: default; } @@ -628,7 +624,7 @@ a.action > img { margin-top: -3px; } -#fileList td a { +.files-fileList td a { a.action { display: inline; padding: 17px 8px; @@ -691,7 +687,7 @@ a.action > img { } // Ellipsize long sharer names -#fileList .action.action-share.permanent.shared-style span:not(.icon) { +.files-fileList .action.action-share.permanent.shared-style span:not(.icon) { display: inline-block; max-width: 70px; overflow: hidden; @@ -700,42 +696,42 @@ a.action > img { margin-left: 6px; } -#fileList .remoteAddress .userDomain { +.files-fileList .remoteAddress .userDomain { margin-left: 0 !important; } -#fileList .favorite-mark.permanent { +.files-fileList .favorite-mark.permanent { opacity: 1; } -#fileList .fileActionsMenu a.action:hover, -#fileList .fileActionsMenu a.action:focus, +.files-fileList .fileActionsMenu a.action:hover, +.files-fileList .fileActionsMenu a.action:focus, /* show share action of shared items darker to distinguish from non-shared */ -#fileList a.action.action-share.shared-style:hover, -#fileList a.action.action-share.shared-style:focus { +.files-fileList a.action.action-share.shared-style:hover, +.files-fileList a.action.action-share.shared-style:focus { opacity: 1; } -#fileList tr a.action.disabled { +.files-fileList tr a.action.disabled { background: none; } -#selectedActionsList a.download.disabled, -#fileList tr a.action.action-download.disabled { +.selectedActions a.download.disabled, +.files-fileList tr a.action.action-download.disabled { color: #000000; } -#fileList tr:hover a.action.disabled:hover * { +.files-fileList tr:hover a.action.disabled:hover * { cursor: default; } .summary { color: var(--color-text-maxcontrast); /* add whitespace to bottom of files list to correctly show dropdowns */ - $action-menu-items-count: 7; // list view has currently max 7 items in its action menu + $action-menu-items-count: 7; // list view has currently max 7 items in its action menu height: 44px * ($action-menu-items-count + 0.5); // 0.5 is added to show some whitespace below } -#filestable .filesummary { +.files-filestable .summary .filesummary { width: 100%; /* Width of checkbox and file preview */ padding-left: 101px; @@ -814,16 +810,59 @@ table.dragshadow td.size { } } -#filestable .filename .action .icon, -#filestable .selectedActions a .icon, -#filestable .filename .favorite-mark .icon, -#controls .actions .button .icon { + +.files-controls { + box-sizing: border-box; + position: -webkit-sticky; + position: sticky; + height: 54px; + padding: 0; + margin: 0; + background-color: var(--color-main-background-translucent); + z-index: 62; /* must be above the filelist sticky header and texteditor menubar */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + display: flex; + top: 0; + + .actions { + > div, + & { + > .button, button { + box-sizing: border-box; + display: inline-block; + display: flex; + height: 44px; + width: 44px; + padding: 9px; // width - border - icon width = 18px + align-items: center; + justify-content: center; + } + .button.hidden { + display: none; + } + } + } +} + +/* position controls for apps with app-navigation */ + +.viewer-mode #app-navigation + #app-content .files-controls { + left: 0; +} + +.files-filestable .filename .action .icon, +.files-filestable .selectedActions a .icon, +.files-filestable .filename .favorite-mark .icon, +.files-controls .actions .button .icon { display: inline-block; vertical-align: middle; background-size: 16px 16px; } -#filestable .filename .favorite-mark { +.files-filestable .filename .favorite-mark { // Override default icons to always hide the star icon and always show the // starred icon even when hovered or focused. & .icon-star { @@ -834,15 +873,15 @@ table.dragshadow td.size { } } -#filestable .filename .action .icon.hidden, -#filestable .selectedActions a .icon.hidden, -#controls .actions .button .icon.hidden { +.files-filestable .filename .action .icon.hidden, +.files-filestable .selectedActions a .icon.hidden, +.files-controls .actions .button .icon.hidden { display: none; } -#filestable .filename .action .icon.loading, -#filestable .selectedActions a .icon.loading, -#controls .actions .button .icon.loading { +.files-filestable .filename .action .icon.loading, +.files-filestable .selectedActions a .icon.loading, +.files-controls .actions .button .icon.loading { width: 15px; height: 15px; } @@ -851,12 +890,16 @@ table.dragshadow td.size { position: relative; } -.breadcrumb .icon-home { - border-radius: var(--border-radius); +.breadcrumb { + align-items: center; + + .icon-home { + border-radius: var(--border-radius); + } } .breadcrumb .canDrop > a, -#filestable tbody tr.canDrop { +.files-filestable tbody tr.canDrop { background-color: rgba( variables.$color-primary, .3 ); } .dropzone-background { @@ -874,7 +917,7 @@ table.dragshadow td.size { overflow: auto; min-width: 160px; height: 54px; - + &:not(.hidden) { display: flex; } @@ -914,7 +957,7 @@ table.dragshadow td.size { } /* GRID */ -#filestable.view-grid:not(.hidden) { +.files-filestable.view-grid:not(.hidden) { $grid-size: 160px; $grid-pad: 14px; @@ -1193,7 +1236,8 @@ table.dragshadow td.size { padding: 22px; opacity: .5; position: fixed; - right: 0; + right: calc(var(--default-grid-baseline) * 4); + top: calc(var(--header-height) + var(--default-grid-baseline)); z-index: 100; &:hover, @@ -1220,7 +1264,7 @@ table.dragshadow td.size { /* Adjustments for link share page */ #body-public { - #filestable.view-grid:not(.hidden) tbody td { + .files-filestable.view-grid:not(.hidden) tbody td { /* More space for filename since there is no share icon */ &.filename .name .nametext .innernametext { max-width: 124px; diff --git a/apps/files/css/merged.css b/apps/files/css/merged.css index 7696875d849..67bd022cf11 100644 --- a/apps/files/css/merged.css +++ b/apps/files/css/merged.css @@ -111,13 +111,13 @@ .newFileMenu .error, .newFileMenu .error + .icon-confirm, -#fileList .error { +.files-fileList .error { color: var(--color-error); border-color: var(--color-error); } /* FILE TABLE */ -#filestable { +.files-filestable { position: relative; width: 100%; min-width: 250px; @@ -127,31 +127,31 @@ * This is a dirty hack as the sticky header requires us to use a different display type on the table element */ } -#emptycontent:not(.hidden) ~ #filestable { +.emptycontent:not(.hidden) ~ .files-filestable { display: none; } -#filestable thead { +.files-filestable thead { position: -webkit-sticky; position: sticky; - top: 50px; + top: 44px; z-index: 60; display: block; background-color: var(--color-main-background-translucent); } -#filestable tbody { +.files-filestable tbody { display: table; width: 100%; } -#filestable tbody tr[data-permissions="0"], -#filestable tbody tr[data-permissions="16"] { +.files-filestable tbody tr[data-permissions="0"], +.files-filestable tbody tr[data-permissions="16"] { background-color: var(--color-background-dark); } -#filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext, -#filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext { +.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext, +.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext { color: var(--color-text-maxcontrast); } -#filestable.hidden { +.files-filestable.hidden { display: none; } @@ -165,7 +165,7 @@ width: calc(100% - 300px); } -.file-drag, .file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover { +.file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover { background-color: var(--color-primary-light) !important; } @@ -173,11 +173,11 @@ background-color: var(--color-main-background) !important; } -.file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover { +.file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover { background-color: transparent !important; } -.app-files #app-content.dir-drop #filestable tbody tr.dropping-to-dir { +.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir { background-color: var(--color-primary-light) !important; } @@ -256,23 +256,23 @@ opacity: 0.3; } -#filestable tbody tr { +.files-filestable tbody tr { height: 51px; } -#filestable tbody tr:hover, -#filestable tbody tr:focus, -#filestable tbody .name:focus, -#filestable tbody tr:hover .filename form, +.files-filestable tbody tr:hover, +.files-filestable tbody tr:focus, +.files-filestable tbody .name:focus, +.files-filestable tbody tr:hover .filename form, table tr.mouseOver td { background-color: var(--color-background-hover); } -#filestable tbody tr:active, -#filestable tbody tr.highlighted, -#filestable tbody tr.highlighted .name:focus, -#filestable tbody tr.selected, -#filestable tbody tr.searchresult { +.files-filestable tbody tr:active, +.files-filestable tbody tr.highlighted, +.files-filestable tbody tr.highlighted .name:focus, +.files-filestable tbody tr.selected, +.files-filestable tbody tr.searchresult { background-color: var(--color-primary-light); } @@ -373,50 +373,44 @@ table td { background-repeat: no-repeat; } -table th#headerName { +table th.column-name { position: relative; width: 9999px; /* not really sure why this works better than 100% … table styling */ padding: 0; } -#headerName-container { +.column-name-container { position: relative; height: 50px; } -table th#headerSelection { +table th.column-selection { padding-top: 2px; } -table th#headerSize, table td.filesize { +table th.column-size, table td.filesize { text-align: right; } -table th#headerDate, table td.date, +table th.column-mtime, table td.date, table th.column-last, table td.column-last { -moz-box-sizing: border-box; box-sizing: border-box; position: relative; /* this can not be just width, both need to be set … table styling */ min-width: 130px; - max-width: 130px; } -#app-content-files thead, -#app-content-trashbin thead { - top: 94px; -} - -#app-content-recent, -#app-content-favorites, -#app-content-shareoverview, -#app-content-sharingout, -#app-content-sharingin, -#app-content-sharinglinks, -#app-content-deletedshares, -#app-content-pendingshares { - margin-top: 22px; +#app-content-recent thead, +#app-content-favorites thead, +#app-content-shareoverview thead, +#app-content-sharingout thead, +#app-content-sharingin thead, +#app-content-sharinglinks thead, +#app-content-deletedshares thead, +#app-content-pendingshares thead { + top: 0; } table.multiselect thead th { @@ -428,13 +422,13 @@ table.multiselect thead th { margin-right: 27%; } -table.multiselect #headerName { +table.multiselect .column-name { position: relative; width: 9999px; /* when we use 100%, the styling breaks on mobile … table styling */ } -table.multiselect #modified { +table.multiselect .column-mtime > a { display: none; } @@ -537,19 +531,19 @@ table td.filename .nametext { padding: 0 20px 0 0; } -.hide-hidden-files #filestable #fileList tr.hidden-file, -.hide-hidden-files #filestable #fileList tr.hidden-file.dragging { +.hide-hidden-files .files-filestable .files-fileList tr.hidden-file, +.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging { display: none; } -#fileList tr.animate-opacity { +.files-fileList tr.animate-opacity { -webkit-transition: opacity 250ms; -moz-transition: opacity 250ms; -o-transition: opacity 250ms; transition: opacity 250ms; } -#fileList tr.dragging { +.files-fileList tr.dragging { opacity: 0.2; } @@ -582,30 +576,30 @@ table td.selection { } /* File checkboxes */ -#fileList tr td.selection > .selectCheckBox + label:before { +.files-fileList tr td.selection > .selectCheckBox + label:before { opacity: 0.3; margin-right: 0; } /* Show checkbox with full opacity when hovering, checked, or selected */ -#fileList tr:hover td.selection > .selectCheckBox + label:before, -#fileList tr:focus td.selection > .selectCheckBox + label:before, -#fileList tr td.selection > .selectCheckBox:checked + label:before, -#fileList tr.selected td.selection > .selectCheckBox + label:before { +.files-fileList tr:hover td.selection > .selectCheckBox + label:before, +.files-fileList tr:focus td.selection > .selectCheckBox + label:before, +.files-fileList tr td.selection > .selectCheckBox:checked + label:before, +.files-fileList tr.selected td.selection > .selectCheckBox + label:before { opacity: 1; } /* Show checkbox with half opacity when selecting range */ -#fileList tr.halfselected td.selection > .selectCheckBox + label:before { +.files-fileList tr.halfselected td.selection > .selectCheckBox + label:before { opacity: 0.5; } /* Use label to have bigger clickable size for checkbox */ -#fileList tr td.selection > .selectCheckBox + label, +.files-fileList tr td.selection > .selectCheckBox + label, .select-all + label { padding: 16px; } -#fileList tr td.selection > .selectCheckBox:focus + label, +.files-fileList tr td.selection > .selectCheckBox:focus + label, .select-all:focus + label { background-color: var(--color-background-hover); border-radius: var(--border-radius-pill); @@ -614,12 +608,12 @@ table td.selection { padding: 14px; } -#fileList tr td.selection > .selectCheckBox:focus-visible + label, +.files-fileList tr td.selection > .selectCheckBox:focus-visible + label, .select-all:focus-visible + label { outline-offset: 0px; } -#fileList tr td.filename { +.files-fileList tr td.filename { position: relative; width: 100%; padding-left: 0; @@ -630,19 +624,19 @@ table td.selection { transition: background-image 500ms; } -#fileList tr td.filename a.name label, -#fileList tr td.filename p.name label { +.files-fileList tr td.filename a.name label, +.files-fileList tr td.filename p.name label { position: absolute; width: 80%; height: 50px; } -#fileList tr td.filename .favorite { +.files-fileList tr td.filename .favorite { display: inline-block; float: left; } -#fileList tr td.filename .favorite-mark { +.files-fileList tr td.filename .favorite-mark { position: absolute; display: block; top: -6px; @@ -672,25 +666,25 @@ table td.selection { } /* force show the loading icon, not only on hover */ -#fileList .icon-loading-small { +.files-fileList .icon-loading-small { opacity: 1 !important; display: inline !important; } -#fileList .action.action-share-notification span, #fileList a.name { +.files-fileList .action.action-share-notification span, .files-fileList a.name { cursor: default !important; } /* * Make the disabled link look not like a link in file list rows */ -#fileList a.name.disabled * { +.files-fileList a.name.disabled * { cursor: default; } -#fileList a.name.disabled a, #fileList a.name.disabled a * { +.files-fileList a.name.disabled a, .files-fileList a.name.disabled a * { cursor: pointer; } -#fileList a.name.disabled:focus { +.files-fileList a.name.disabled:focus { background: none; } @@ -731,16 +725,16 @@ a.action > img { margin-top: -3px; } -#fileList td a a.action { +.files-fileList td a a.action { display: inline; padding: 17px 8px; line-height: 50px; opacity: 0.3; } -#fileList td a a.action.action-share { +.files-fileList td a a.action.action-share { padding: 17px 14px; } -#fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared + span { +.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared + span { /* hide text of the share action */ /* .hidden-visually for accessbility */ position: absolute; @@ -750,44 +744,44 @@ a.action > img { height: 1px; overflow: hidden; } -#fileList td a a.action.action-share .avatar { +.files-fileList td a a.action.action-share .avatar { display: inline-block; vertical-align: middle; } -#fileList td a a.action.action-menu { +.files-fileList td a a.action.action-menu { padding-top: 17px; padding-bottom: 17px; padding-left: 14px; padding-right: 14px; } -#fileList td a a.action.no-permission:hover, #fileList td a a.action.no-permission:focus { +.files-fileList td a a.action.no-permission:hover, .files-fileList td a a.action.no-permission:focus { opacity: 0.3; } -#fileList td a a.action.disabled:hover, #fileList td a a.action.disabled:focus, -#fileList td a a.action.disabled img { +.files-fileList td a a.action.disabled:hover, .files-fileList td a a.action.disabled:focus, +.files-fileList td a a.action.disabled img { opacity: 0.3; } -#fileList td a a.action.disabled.action-download { +.files-fileList td a a.action.disabled.action-download { opacity: 0.7; } -#fileList td a a.action.disabled.action-download:hover, #fileList td a a.action.disabled.action-download:focus { +.files-fileList td a a.action.disabled.action-download:hover, .files-fileList td a a.action.disabled.action-download:focus { opacity: 0.7; } -#fileList td a a.action:hover, #fileList td a a.action:focus { +.files-fileList td a a.action:hover, .files-fileList td a a.action:focus { opacity: 1; } -#fileList td a a.action:focus { +.files-fileList td a a.action:focus { background-color: var(--color-background-hover); border-radius: var(--border-radius-pill); } -#fileList td a .fileActionsMenu a.action, #fileList td a a.action.action-share.shared-style { +.files-fileList td a .fileActionsMenu a.action, .files-fileList td a a.action.action-share.shared-style { opacity: 0.7; } -#fileList td a .fileActionsMenu .action.permanent { +.files-fileList td a .fileActionsMenu .action.permanent { opacity: 1; } -#fileList .action.action-share.permanent.shared-style span:not(.icon) { +.files-fileList .action.action-share.permanent.shared-style span:not(.icon) { display: inline-block; max-width: 70px; overflow: hidden; @@ -796,31 +790,31 @@ a.action > img { margin-left: 6px; } -#fileList .remoteAddress .userDomain { +.files-fileList .remoteAddress .userDomain { margin-left: 0 !important; } -#fileList .favorite-mark.permanent { +.files-fileList .favorite-mark.permanent { opacity: 1; } -#fileList .fileActionsMenu a.action:hover, -#fileList .fileActionsMenu a.action:focus, -#fileList a.action.action-share.shared-style:hover, -#fileList a.action.action-share.shared-style:focus { +.files-fileList .fileActionsMenu a.action:hover, +.files-fileList .fileActionsMenu a.action:focus, +.files-fileList a.action.action-share.shared-style:hover, +.files-fileList a.action.action-share.shared-style:focus { opacity: 1; } -#fileList tr a.action.disabled { +.files-fileList tr a.action.disabled { background: none; } -#selectedActionsList a.download.disabled, -#fileList tr a.action.action-download.disabled { +.selectedActions a.download.disabled, +.files-fileList tr a.action.action-download.disabled { color: #000000; } -#fileList tr:hover a.action.disabled:hover * { +.files-fileList tr:hover a.action.disabled:hover * { cursor: default; } @@ -830,7 +824,7 @@ a.action > img { height: 330px; } -#filestable .filesummary { +.files-filestable .summary .filesummary { width: 100%; /* Width of checkbox and file preview */ padding-left: 101px; @@ -916,32 +910,68 @@ table.dragshadow td.size { left: 57px !important; } -#filestable .filename .action .icon, -#filestable .selectedActions a .icon, -#filestable .filename .favorite-mark .icon, -#controls .actions .button .icon { +.files-controls { + box-sizing: border-box; + position: -webkit-sticky; + position: sticky; + height: 54px; + padding: 0; + margin: 0; + background-color: var(--color-main-background-translucent); + z-index: 62; + /* must be above the filelist sticky header and texteditor menubar */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + display: flex; + top: 0; +} +.files-controls .actions > div > .button, .files-controls .actions > div button, .files-controls .actions > .button, .files-controls .actions button { + box-sizing: border-box; + display: inline-block; + display: flex; + height: 44px; + width: 44px; + padding: 9px; + align-items: center; + justify-content: center; +} +.files-controls .actions > div .button.hidden, .files-controls .actions .button.hidden { + display: none; +} + +/* position controls for apps with app-navigation */ +.viewer-mode #app-navigation + #app-content .files-controls { + left: 0; +} + +.files-filestable .filename .action .icon, +.files-filestable .selectedActions a .icon, +.files-filestable .filename .favorite-mark .icon, +.files-controls .actions .button .icon { display: inline-block; vertical-align: middle; background-size: 16px 16px; } -#filestable .filename .favorite-mark .icon-star { +.files-filestable .filename .favorite-mark .icon-star { background-image: none; } -#filestable .filename .favorite-mark .icon-starred { +.files-filestable .filename .favorite-mark .icon-starred { /* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */ background-image: var(--icon-star-dark-yellow); } -#filestable .filename .action .icon.hidden, -#filestable .selectedActions a .icon.hidden, -#controls .actions .button .icon.hidden { +.files-filestable .filename .action .icon.hidden, +.files-filestable .selectedActions a .icon.hidden, +.files-controls .actions .button .icon.hidden { display: none; } -#filestable .filename .action .icon.loading, -#filestable .selectedActions a .icon.loading, -#controls .actions .button .icon.loading { +.files-filestable .filename .action .icon.loading, +.files-filestable .selectedActions a .icon.loading, +.files-controls .actions .button .icon.loading { width: 15px; height: 15px; } @@ -950,12 +980,15 @@ table.dragshadow td.size { position: relative; } +.breadcrumb { + align-items: center; +} .breadcrumb .icon-home { border-radius: var(--border-radius); } .breadcrumb .canDrop > a, -#filestable tbody tr.canDrop { +.files-filestable tbody tr.canDrop { background-color: rgba(0, 130, 201, 0.3); } @@ -1006,62 +1039,62 @@ table.dragshadow td.size { } /* GRID */ -#filestable.view-grid:not(.hidden) { +.files-filestable.view-grid:not(.hidden) { /* HEADER and MULTISELECT */ /* MAIN FILE LIST */ /* Center align the footer file number & size summary */ } -#filestable.view-grid:not(.hidden) thead tr { +.files-filestable.view-grid:not(.hidden) thead tr { display: block; border-bottom: 1px solid var(--color-border); background-color: var(--color-main-background-translucent); } -#filestable.view-grid:not(.hidden) thead tr th { +.files-filestable.view-grid:not(.hidden) thead tr th { width: auto; border: none; } -#filestable.view-grid:not(.hidden) tbody { +.files-filestable.view-grid:not(.hidden) tbody { display: grid; grid-template-columns: repeat(auto-fill, 160px); justify-content: space-around; row-gap: 15px; margin: 15px 0; } -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) { +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) { display: block; position: relative; height: 190px; border-radius: var(--border-radius); } -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted { +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted { background-color: transparent; } -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext, -#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions { +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext, +.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions { background-color: var(--color-background-hover); } -#filestable.view-grid:not(.hidden) tbody td { +.files-filestable.view-grid:not(.hidden) tbody td { display: inline; border-bottom: none; /* No space for filesize and date in grid view */ /* Position actions menu below file */ } -#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper { +.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper { min-width: 0; max-width: none; position: absolute; @@ -1072,7 +1105,7 @@ table.dragshadow td.size { left: 0; z-index: -1; } -#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail { +.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail { width: calc(100% - 2 * 14px); height: calc(100% - 2 * 14px); background-size: contain; @@ -1084,13 +1117,13 @@ table.dragshadow td.size { * Position is inherited from the selection while in grid view */ } -#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark { +.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark { padding: 14px; left: auto; top: -22px; right: -22px; } -#filestable.view-grid:not(.hidden) tbody td.filename .uploadtext { +.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext { width: 100%; margin: 0; top: 0; @@ -1099,13 +1132,13 @@ table.dragshadow td.size { padding-top: 4px; padding-left: 28px; } -#filestable.view-grid:not(.hidden) tbody td.filename .name { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name { height: 100%; border-radius: var(--border-radius); overflow: hidden; cursor: pointer !important; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext { display: flex; height: 44px; margin-top: 146px; @@ -1114,27 +1147,27 @@ table.dragshadow td.size { padding: 0; /* No space for extension in grid view */ } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext { display: inline-block; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before { content: ""; flex: 1; min-width: 14px; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after { content: ""; flex: 1; min-width: 44px; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension { display: none; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions { height: initial; margin-top: 146px; display: flex; @@ -1142,7 +1175,7 @@ table.dragshadow td.size { position: absolute; right: 0; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action { padding: 14px; width: 44px; height: 44px; @@ -1150,34 +1183,34 @@ table.dragshadow td.size { align-items: center; justify-content: center; } -#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu) { +.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu) { display: none; } -#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden { +.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden { display: block !important; } -#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img { +.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img { padding: 6px; border-radius: 50%; } -#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden { +.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden { display: block !important; } -#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden { +.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden { display: block !important; } -#filestable.view-grid:not(.hidden) tbody td.filename form { +.files-filestable.view-grid:not(.hidden) tbody td.filename form { padding: 3px 14px; border-radius: var(--border-radius); } -#filestable.view-grid:not(.hidden) tbody td.filename form input.filename { +.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename { width: 100%; margin-left: 0; } -#filestable.view-grid:not(.hidden) tbody td.filesize, #filestable.view-grid:not(.hidden) tbody td.date { +.files-filestable.view-grid:not(.hidden) tbody td.filesize, .files-filestable.view-grid:not(.hidden) tbody td.date { display: none; } -#filestable.view-grid:not(.hidden) tbody td.selection, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark { +.files-filestable.view-grid:not(.hidden) tbody td.selection, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark { position: absolute; top: -8px; left: -8px; @@ -1187,45 +1220,45 @@ table.dragshadow td.size { z-index: 10; background: transparent; } -#filestable.view-grid:not(.hidden) tbody td.selection label, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label { +.files-filestable.view-grid:not(.hidden) tbody td.selection label, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label { width: 44px; height: 44px; display: inline-flex; padding: 14px; } -#filestable.view-grid:not(.hidden) tbody td.selection label::before, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before { +.files-filestable.view-grid:not(.hidden) tbody td.selection label::before, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before { margin: 0; width: 14px; height: 14px; } -#filestable.view-grid:not(.hidden) tbody td .popovermenu { +.files-filestable.view-grid:not(.hidden) tbody td .popovermenu { left: 0; width: 150px; margin: 0 5px; /* Ellipsize long entries, normally menu width is adjusted but for grid we use fixed width. */ } -#filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon) { +.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon) { overflow: hidden; text-overflow: ellipsis; } -#filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension { +.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension { display: block; } -#filestable.view-grid:not(.hidden) tfoot { +.files-filestable.view-grid:not(.hidden) tfoot { display: grid; } -#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) { +.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) { display: inline-block; margin: 0 auto; height: 418px; } -#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td { +.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td { padding-top: 50px; } -#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child, #filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date { +.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child, .files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date { display: none; } -#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info { +.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info { margin-left: 0; } @@ -1237,7 +1270,8 @@ table.dragshadow td.size { padding: 22px; opacity: 0.5; position: fixed; - right: 0; + right: calc(var(--default-grid-baseline) * 4); + top: calc(var(--header-height) + var(--default-grid-baseline)); z-index: 100; } #view-toggle:hover, #view-toggle:focus, #showgridview:focus + #view-toggle { @@ -1261,14 +1295,14 @@ table.dragshadow td.size { #body-public { /* Right-align view toggle on link share page */ } -#body-public #filestable.view-grid:not(.hidden) tbody td { +#body-public .files-filestable.view-grid:not(.hidden) tbody td { /* More space for filename since there is no share icon */ /* Position actions menu correctly below 3-dot-menu */ } -#body-public #filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext { +#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext { max-width: 124px; } -#body-public #filestable.view-grid:not(.hidden) tbody td .popovermenu { +#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu { left: -80px; } #body-public #view-toggle { @@ -1338,18 +1372,18 @@ table.dragshadow td.size { overflow: visible; } -#uploadprogresswrapper, #uploadprogresswrapper * { +.uploadprogresswrapper, .uploadprogresswrapper * { box-sizing: border-box; } -#uploadprogresswrapper { +.uploadprogresswrapper { display: inline-block; vertical-align: top; height: 36px; margin-left: 3px; } -#uploadprogresswrapper > input[type=button] { +.uploadprogresswrapper > input[type=button] { height: 36px; margin-left: 3px; } @@ -1591,9 +1625,9 @@ table.dragshadow td.size { background-color: rgb(255, 255, 255) !important; } - table th#headerSize, + table th.column-size, table td.filesize, -table th#headerDate, +table th.column-mtime, table td.date { display: none; } @@ -1608,17 +1642,17 @@ table td.date { padding-left: 0; } - #fileList a.action.action-menu img { + .fileList a.action.action-menu img { padding-left: 0; } - #fileList .fileActionsMenu { + .fileList .fileActionsMenu { margin-right: 6px; } /* hide text of the share action on mobile */ /* .hidden-visually for accessbility */ - #fileList a.action-share span:not(.icon):not(.avatar) { + .fileList a.action-share span:not(.icon):not(.avatar) { position: absolute; left: -10000px; top: auto; @@ -1627,11 +1661,6 @@ table td.date { overflow: hidden; } - /* proper notification area for multi line messages */ - #notification-container { - display: flex; - } - /* shorten elements for mobile */ #uploadprogressbar, #uploadprogressbar .label.inner { width: 50px; diff --git a/apps/files/css/merged.css.map b/apps/files/css/merged.css.map index d207afde234..f2d0648398a 100644 --- a/apps/files/css/merged.css.map +++ b/apps/files/css/merged.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADxCA;AACA;EACC;EACA;EACA;EACA;;;AAED;EAAoD;EAAU;;;AAC9D;EAAqB;;;AACrB;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AAiBA;AAAA;AAAA;;AAfA;EACC;;AAGD;EACC;EACA;EAEA,KDoCc;EClCd;EACA;EACA;;AAMD;EACC;EACA;;AAEA;AAAA;EAEC;;AAEA;AAAA;EACC;;;AAMJ;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EAGC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;AClEC;EAEA;;;ADmED;ACrEC;EAEA;;;ADsED;ACxEC;EAEA;;;ADyED;AAAA;AAAA;AAAA;AC3EC;EAEA;;;AD+ED;ACjFC;EAEA;;;ADkFD;ACpFC;EAEA;;;ADqFD;ACvFC;EAEA;;;ADwFD;AC1FC;EAEA;;;AD2FD;AC7FC;EAEA;;;AD8FD;AChGC;EAEA;;;ADkGD;EACC;;;AAED;AACA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAGD;EAAU;;;AAEV;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;;;AAED;AAAA;EAEC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;AAAe;EACf;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;AAAA;EAEC;EACA;EACA;AACA;EACA;EACA;;;AAGD;AAAA;EAEC;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;AAAe;;;AAEhB;EACC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;EACA;AAAmB;EACnB;EACA;EACA;EACA;EACA;;;AAED;AACC;EACA;EACA;EACA;EACA;;;AAGA;EACC;;AAED;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAID;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EAA6H;;;AAC7H;EAAwE;EAAY;;;AAEpF;EACC;EACA;EACA;EACA;;;AAGD;AAEC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;EAIC;;;AAGD;AACA;EACC;;;AAGD;AAGC;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAA2C;EAAwC;EAAsC;;;AAG1H;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAAsC;;;AAEtC;AACA;EACC;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;EACA;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIC;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACC;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;;AACA;EACC;;AACA;AACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAGA;EACC;;AAID;AAAA;EAEC;;AAED;EACC;;AACA;EACC;;AAIH;EACC;;AAED;EACC;EACA;;AAGF;EACC;;AAED;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAKC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;AACA;EAEA;;;AAED;EACC;AACA;EACA;;;AAED;AAAA;AAAA;AAGA;EACC;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;AAEA;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;;AAIF;AAAA;AAAA;AAAA;EAIC;EACA;EACA;;;AAMA;EACC;;AAED;AChwBA;EAEA;;;ADmwBD;AAAA;AAAA;EAGC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAED;EACC;;AACA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKA;EACC;;AAIF;EACC;EACA;;;AAIF;AACA;AAIC;AAaA;AAoOA;;AA/OC;EACC;EACA;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;AAAA;EAKC;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAKH;EACC;EACA;AAmJA;AA8BA;;AA9KC;EACC;EACA;EACA;EACA,OAvDQ;EAwDR,QAxDQ;EAyDR,SAxDO;EAyDP;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACC,SA1EK;EA2EL;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;EAIA;EAKA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;AAoBA;;AAlBA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAID;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,SApJK;EAqJL;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAQH;EACC;;AAEA;EACC;EACA;;AAIF;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;;AAMH;EAEC;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAvNO;;AAwNP;EACC;EACA,OA1NM;EA2NN,QA3NM;;AAiOT;EACC;EACA;EACA;AAEA;;AACA;EACC;EACA;;AAMJ;EACC;;AAID;EACC;;AAEA;EACC;EACA;EAEA;;AAEA;EACC;;AAEA;EAEC;;AAGD;EACI;;;AAOR;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;;AAGD;EAEC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;EACA;;;AAGD;AACA;AAaC;;AAZA;AACC;AAKA;;AAJA;EACC;;AAID;EACC;;AAKF;EACC;EACA;;;AAIF;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;;;AE/uCF;EACC;EACA;EACA;EACA;AAAuB;EACvB;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EAAsB;;;AACtB;EAAoB;EAAgB;EAAY;EAAU;EAAW;EAAgB;;;AAErF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AHjNT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AIEA;AAAA;AAAA;AAIA;EAEA;IACC;;;EAGD;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAGD;IACC;;;EAGD;IACC;;;AAED;AACA;EACA;IACC;IACA;IACA;IACA;IACA;IACA;;;AAID;EACA;IACC;;;AAGD;EACA;IACC;;;AAED;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAID;AACC;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;ACvFF;EACC;EACA;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EAEC;;;AAGF;EACC;EACA;;;AAGD;EACC;EACA;AAAqB;EACrB;;;AAGD;EACC;AAAW;;;AAGZ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;AAAwB;;;AAGzB;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;AAA0B;EAC1B;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AC/HD;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE","file":"merged.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADxCA;AACA;EACC;EACA;EACA;EACA;;;AAED;EAAoD;EAAU;;;AAC9D;EAAqB;;;AACrB;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AAiBA;AAAA;AAAA;;AAfA;EACC;;AAGD;EACC;EACA;EAEA;EAEA;EACA;EACA;;AAMD;EACC;EACA;;AAEA;AAAA;EAEC;;AAEA;AAAA;EACC;;;AAMJ;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EAGC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;AClEC;EAEA;;;ADmED;ACrEC;EAEA;;;ADsED;ACxEC;EAEA;;;ADyED;AAAA;AAAA;AAAA;AC3EC;EAEA;;;AD+ED;ACjFC;EAEA;;;ADkFD;ACpFC;EAEA;;;ADqFD;ACvFC;EAEA;;;ADwFD;AC1FC;EAEA;;;AD2FD;AC7FC;EAEA;;;AD8FD;AChGC;EAEA;;;ADkGD;EACC;;;AAED;AACA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAGD;EAAU;;;AAEV;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;;;AAED;AAAA;EAEC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;AAAe;EACf;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;AAAA;EAEC;EACA;EACA;AACA;EACA;;;AAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;AAAe;;;AAEhB;EACC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;EACA;AAAmB;EACnB;EACA;EACA;EACA;EACA;;;AAED;AACC;EACA;EACA;EACA;EACA;;;AAGA;EACC;;AAED;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAID;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EAA6H;;;AAC7H;EAAwE;EAAY;;;AAEpF;EACC;EACA;EACA;EACA;;;AAGD;AAEC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;EAIC;;;AAGD;AACA;EACC;;;AAGD;AAGC;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAA2C;EAAwC;EAAsC;;;AAG1H;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAAsC;;;AAEtC;AACA;EACC;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;EACA;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIC;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACC;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;;AACA;EACC;;AACA;AACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAGA;EACC;;AAID;AAAA;EAEC;;AAED;EACC;;AACA;EACC;;AAIH;EACC;;AAED;EACC;EACA;;AAGF;EACC;;AAED;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAKC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;AACA;EAEA;;;AAED;EACC;AACA;EACA;;;AAED;AAAA;AAAA;AAGA;EACC;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;AAEA;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA;;AAKE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAMJ;AAEA;EACC;;;AAGD;AAAA;AAAA;AAAA;EAIC;EACA;EACA;;;AAMA;EACC;;AAED;ACvyBA;EAEA;;;AD0yBD;AAAA;AAAA;EAGC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAIF;AAAA;EAEC;;;AAED;EACC;;AACA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKA;EACC;;AAIF;EACC;EACA;;;AAIF;AACA;AAIC;AAaA;AAoOA;;AA/OC;EACC;EACA;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;AAAA;EAKC;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAKH;EACC;EACA;AAmJA;AA8BA;;AA9KC;EACC;EACA;EACA;EACA,OAvDQ;EAwDR,QAxDQ;EAyDR,SAxDO;EAyDP;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACC,SA1EK;EA2EL;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;EAIA;EAKA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;AAoBA;;AAlBA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAID;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,SApJK;EAqJL;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAQH;EACC;;AAEA;EACC;EACA;;AAIF;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;;AAMH;EAEC;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAvNO;;AAwNP;EACC;EACA,OA1NM;EA2NN,QA3NM;;AAiOT;EACC;EACA;EACA;AAEA;;AACA;EACC;EACA;;AAMJ;EACC;;AAID;EACC;;AAEA;EACC;EACA;EAEA;;AAEA;EACC;;AAEA;EAEC;;AAGD;EACI;;;AAOR;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;;AAGD;EAEC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;EACA;;;AAGD;AACA;AAaC;;AAZA;AACC;AAKA;;AAJA;EACC;;AAID;EACC;;AAKF;EACC;EACA;;;AAIF;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;;;AE3xCF;EACC;EACA;EACA;EACA;AAAuB;EACvB;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EAAsB;;;AACtB;EAAoB;EAAgB;EAAY;EAAU;EAAW;EAAgB;;;AAErF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AHjNT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AIEA;AAAA;AAAA;AAIA;EAEA;IACC;;;EAGD;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAGD;IACC;;;EAGD;IACC;;;AAED;AACA;EACA;IACC;IACA;IACA;IACA;IACA;IACA;;;AAID;EACA;IACC;;;AAED;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAID;AACC;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;AClFF;EACC;EACA;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EAEC;;;AAGF;EACC;EACA;;;AAGD;EACC;EACA;AAAqB;EACrB;;;AAGD;EACC;AAAW;;;AAGZ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;AAAwB;;;AAGzB;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;AAA0B;EAC1B;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AC/HD;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE","file":"merged.css"}
\ No newline at end of file diff --git a/apps/files/css/mobile.css b/apps/files/css/mobile.css index 9cdbad85156..1cd122d60ec 100644 --- a/apps/files/css/mobile.css +++ b/apps/files/css/mobile.css @@ -28,9 +28,9 @@ background-color: rgb(255, 255, 255) !important; } - table th#headerSize, + table th.column-size, table td.filesize, -table th#headerDate, +table th.column-mtime, table td.date { display: none; } @@ -45,17 +45,17 @@ table td.date { padding-left: 0; } - #fileList a.action.action-menu img { + .fileList a.action.action-menu img { padding-left: 0; } - #fileList .fileActionsMenu { + .fileList .fileActionsMenu { margin-right: 6px; } /* hide text of the share action on mobile */ /* .hidden-visually for accessbility */ - #fileList a.action-share span:not(.icon):not(.avatar) { + .fileList a.action-share span:not(.icon):not(.avatar) { position: absolute; left: -10000px; top: auto; @@ -64,11 +64,6 @@ table td.date { overflow: hidden; } - /* proper notification area for multi line messages */ - #notification-container { - display: flex; - } - /* shorten elements for mobile */ #uploadprogressbar, #uploadprogressbar .label.inner { width: 50px; diff --git a/apps/files/css/mobile.css.map b/apps/files/css/mobile.css.map index 83b1e827b33..11729879c85 100644 --- a/apps/files/css/mobile.css.map +++ b/apps/files/css/mobile.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAAA;AAAA;AAIA;EAEA;IACC;;;EAGD;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAGD;IACC;;;EAGD;IACC;;;AAED;AACA;EACA;IACC;IACA;IACA;IACA;IACA;IACA;;;AAID;EACA;IACC;;;AAGD;EACA;IACC;;;AAED;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAID;AACC;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC","file":"mobile.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAAA;AAAA;AAIA;EAEA;IACC;;;EAGD;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAGD;IACC;;;EAGD;IACC;;;AAED;AACA;EACA;IACC;IACA;IACA;IACA;IACA;IACA;;;AAID;EACA;IACC;;;AAED;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAID;AACC;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC","file":"mobile.css"}
\ No newline at end of file diff --git a/apps/files/css/mobile.scss b/apps/files/css/mobile.scss index 7c5fc8fe4a2..ffaf5c68965 100644 --- a/apps/files/css/mobile.scss +++ b/apps/files/css/mobile.scss @@ -10,9 +10,9 @@ $min-table-width: 688px; background-color: rgba(255, 255, 255, 1)!important; } -table th#headerSize, +table th.column-size, table td.filesize, -table th#headerDate, +table th.column-mtime, table td.date { display: none; } @@ -27,16 +27,16 @@ table.multiselect thead { padding-left: 0; } -#fileList a.action.action-menu img { +.fileList a.action.action-menu img { padding-left: 0; } -#fileList .fileActionsMenu { +.fileList .fileActionsMenu { margin-right: 6px; } /* hide text of the share action on mobile */ /* .hidden-visually for accessbility */ -#fileList a.action-share span:not(.icon):not(.avatar) { +.fileList a.action-share span:not(.icon):not(.avatar) { position: absolute; left:-10000px; top: auto; @@ -46,11 +46,6 @@ table.multiselect thead { } -/* proper notification area for multi line messages */ -#notification-container { - display: flex; -} - /* shorten elements for mobile */ #uploadprogressbar, #uploadprogressbar .label.inner { width: 50px; diff --git a/apps/files/css/upload.css b/apps/files/css/upload.css index dc90f5a793e..b5e3624052b 100644 --- a/apps/files/css/upload.css +++ b/apps/files/css/upload.css @@ -36,18 +36,18 @@ overflow: visible; } -#uploadprogresswrapper, #uploadprogresswrapper * { +.uploadprogresswrapper, .uploadprogresswrapper * { box-sizing: border-box; } -#uploadprogresswrapper { +.uploadprogresswrapper { display: inline-block; vertical-align: top; height: 36px; margin-left: 3px; } -#uploadprogresswrapper > input[type=button] { +.uploadprogresswrapper > input[type=button] { height: 36px; margin-left: 3px; } diff --git a/apps/files/css/upload.scss b/apps/files/css/upload.scss index e7c1e9442e2..35fc763100e 100644 --- a/apps/files/css/upload.scss +++ b/apps/files/css/upload.scss @@ -23,17 +23,17 @@ .file_upload_target { display:none; } .file_upload_form { display:inline; float:left; margin:0; padding:0; cursor:pointer; overflow:visible; } -#uploadprogresswrapper, #uploadprogresswrapper * { +.uploadprogresswrapper, .uploadprogresswrapper * { box-sizing: border-box; } -#uploadprogresswrapper { +.uploadprogresswrapper { display: inline-block; vertical-align: top; height: 36px; margin-left: 3px; } -#uploadprogresswrapper > input[type='button'] { +.uploadprogresswrapper > input[type='button'] { height: 36px; margin-left: 3px; } diff --git a/apps/files/js/favoritesfilelist.js b/apps/files/js/favoritesfilelist.js index 737f2fd6e96..7ea41da8143 100644 --- a/apps/files/js/favoritesfilelist.js +++ b/apps/files/js/favoritesfilelist.js @@ -18,7 +18,7 @@ window.addEventListener('DOMContentLoaded', function() { * @classdesc Favorites file list. * Displays the list of files marked as favorites * - * @param $el container element with existing markup for the #controls + * @param $el container element with existing markup for the .files-controls * and a table * @param [options] map of options, see other parameters */ @@ -48,8 +48,8 @@ window.addEventListener('DOMContentLoaded', function() { var dir = this.getCurrentDirectory(); if (dir === '/') { // root has special permissions - this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty); + this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); + this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); } else { OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments); diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index 648a5a0307b..dc38f731108 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -1030,7 +1030,7 @@ OC.Uploader.prototype = _.extend({ // check free space if (!self.fileList || upload.getTargetFolder() === self.fileList.getCurrentDirectory()) { // Use global free space if there is no file list to check or the current directory is the target - freeSpace = $('#free_space').val() + freeSpace = $('input[name=free_space]').val() } else if (upload.getTargetFolder().indexOf(self.fileList.getCurrentDirectory()) === 0) { // Check subdirectory free space if file is uploaded there // Retrieve the folder destination name @@ -1266,7 +1266,7 @@ OC.Uploader.prototype = _.extend({ }); fileupload.on('fileuploaddragover', function(e){ $('#app-content').addClass('file-drag'); - $('#emptycontent .icon-folder').addClass('icon-filetype-folder-drag-accept'); + $('.emptyfilelist.emptycontent .icon-folder').addClass('icon-filetype-folder-drag-accept'); var filerow = $(e.delegatedEvent.target).closest('tr'); diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 8790eae9c98..f342f21a4fb 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -370,6 +370,7 @@ var menu; var $trigger = context.$file.closest('tr').find('.fileactions .action-menu'); $trigger.addClass('open'); + $trigger.attr('aria-expanded', 'true'); menu = new OCA.Files.FileActionsMenu(); @@ -378,6 +379,7 @@ menu.$el.on('afterHide', function() { context.$file.removeClass('mouseOver'); $trigger.removeClass('open'); + $trigger.attr('aria-expanded', 'false'); menu.remove(); }); @@ -404,6 +406,7 @@ }, false, context); $el.addClass('permanent'); + $el.attr('aria-expanded', 'false'); }, @@ -670,6 +673,9 @@ displayName: function(context) { var permissions = context.fileInfoModel.attributes.permissions; if (permissions & OC.PERMISSION_UPDATE) { + if (!context.fileInfoModel.canDownload()) { + return t('files', 'Move'); + } return t('files', 'Move or copy'); } return t('files', 'Copy'); @@ -682,7 +688,11 @@ var permissions = context.fileInfoModel.attributes.permissions; var actions = OC.dialogs.FILEPICKER_TYPE_COPY; if (permissions & OC.PERMISSION_UPDATE) { - actions = OC.dialogs.FILEPICKER_TYPE_COPY_MOVE; + if (!context.fileInfoModel.canDownload()) { + actions = OC.dialogs.FILEPICKER_TYPE_MOVE; + } else { + actions = OC.dialogs.FILEPICKER_TYPE_COPY_MOVE; + } } var dialogDir = context.dir; if (typeof context.fileList.dirInfo.dirLastCopiedTo !== 'undefined') { diff --git a/apps/files/js/fileinfomodel.js b/apps/files/js/fileinfomodel.js index 8e7b399544c..79575109656 100644 --- a/apps/files/js/fileinfomodel.js +++ b/apps/files/js/fileinfomodel.js @@ -84,6 +84,15 @@ }, /** + * Returns the mimetype of the file + * + * @return {string} mimetype + */ + getMimeType: function() { + return this.get('mimetype'); + }, + + /** * Reloads missing properties from server and set them in the model. * @param properties array of properties to be reloaded * @return ajax call object @@ -117,7 +126,18 @@ }); return deferred.promise(); - } + }, + + canDownload: function() { + for (const i in this.attributes.shareAttributes) { + const attr = this.attributes.shareAttributes[i] + if (attr.scope === 'permissions' && attr.key === 'download') { + return attr.enabled + } + } + + return true + }, }); if (!OCA.Files) { diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 42afe792142..d60def34ebf 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -18,7 +18,7 @@ * A file list view consists of a controls bar and * a file list table. * - * @param $el container element with existing markup for the #controls + * @param $el container element with existing markup for the .files-controls * and a table * @param {Object} [options] map of options, see other parameters * @param {Object} [options.scrollContainer] scrollable container, defaults to $(window) @@ -224,13 +224,14 @@ /** * Initialize the file list and its components * - * @param $el container element with existing markup for the #controls + * @param $el container element with existing markup for the .files-controls * and a table * @param options map of options, see other parameters * @param options.scrollContainer scrollable container, defaults to $(window) * @param options.dragOptions drag options, disabled by default * @param options.folderDropOptions folder drop options, disabled by default * @param options.scrollTo name of file to scroll to after the first load + * @param [options.dir='/'] current directory * @param {OC.Files.Client} [options.filesClient] files API client * @param {OC.Backbone.Model} [options.filesConfig] files app configuration * @private @@ -274,11 +275,11 @@ if (options.id) { this.id = options.id; } - this.$container = options.scrollContainer || $(window); + this.$container = options.scrollContainer || $('#app-content'); this.$table = $el.find('table:first'); - this.$fileList = $el.find('#fileList'); - this.$header = $el.find('#filelist-header'); - this.$footer = $el.find('#filelist-footer'); + this.$fileList = $el.find('.files-fileList'); + this.$header = $el.find('.filelist-header'); + this.$footer = $el.find('.filelist-footer'); if (!_.isUndefined(this._filesConfig)) { this._filesConfig.on('change:showhidden', function() { @@ -357,7 +358,7 @@ } this.breadcrumb = new OCA.Files.BreadCrumb(breadcrumbOptions); - var $controls = this.$el.find('#controls'); + var $controls = this.$el.find('.files-controls'); if ($controls.length > 0) { $controls.prepend(this.breadcrumb.$el); this.$table.addClass('has-controls'); @@ -414,6 +415,10 @@ }); } + if (!_.isUndefined(options.dir)) { + this._setCurrentDir(options.dir || '/', false); + } + if(options.openFile) { // Wait for some initialisation process to be over before triggering the default action. _.defer(() => { @@ -735,7 +740,7 @@ _onResize: function() { var containerWidth = this.$el.width(); var actionsWidth = 0; - $.each(this.$el.find('#controls .actions'), function(index, action) { + $.each(this.$el.find('.files-controls .actions'), function(index, action) { actionsWidth += $(action).outerWidth(); }); @@ -763,7 +768,7 @@ isGridView ? t('files', 'Show list view') : t('files', 'Show grid view'), ) - $('.list-container').toggleClass('view-grid', isGridView); + this.$table.toggleClass('view-grid', isGridView); if (isGridView) { // If switching into grid view from list view, too few files might be displayed // Try rendering the next page @@ -1689,7 +1694,7 @@ td.append( '<input id="select-' + this.id + '-' + fileData.id + - '" type="checkbox" class="selectCheckBox checkbox"/><label for="select-' + this.id + '-' + fileData.id + '">' + + '" type="checkbox" class="selectCheckBox checkbox" aria-describedby="innernametext_' + fileData.id + '" /><label for="select-' + this.id + '-' + fileData.id + '">' + '<span class="hidden-visually">' + (fileData.type === 'dir' ? t('files', 'Select directory "{dirName}"', {dirName: name}) : t('files', 'Select file "{fileName}"', {fileName: name})) + '</span>' + @@ -1739,8 +1744,9 @@ basename = name; extension = false; } - var nameSpan=$('<span></span>').addClass('nametext'); - var innernameSpan = $('<span></span>').addClass('innernametext').text(basename).prop('title', basename); + var nameSpan=$('<span></span>').addClass('nametext') + + var innernameSpan = $('<span></span>').addClass('innernametext').text(basename).prop('title', basename).prop('id', `innernametext_${fileData.id}`); var conflictingItems = this.$fileList.find('tr[data-file="' + this._jqSelEscape(name) + '"]'); @@ -1787,8 +1793,11 @@ td.append(linkElem); tr.append(td); - var enabledThemes = window.OCA?.Theming?.enabledThemes || [] - var isDarkTheme = enabledThemes.join('').indexOf('dark') !== -1 + const enabledThemes = window.OCA?.Theming?.enabledThemes || [] + // Check enabled themes, if system default is selected check the browser + const isDarkTheme = (enabledThemes.length === 0 || enabledThemes[0] === 'default') + ? window.matchMedia('(prefers-color-scheme: dark)').matches + : enabledThemes.join('').indexOf('dark') !== -1 try { var maxContrastHex = window.getComputedStyle(document.documentElement) @@ -1898,6 +1907,7 @@ * @return new tr element (not appended to the table) */ add: function(fileData, options) { + var self = this; var index; var $tr; var $rows; @@ -1940,7 +1950,7 @@ $tr.addClass('appear transparent'); window.setTimeout(function() { $tr.removeClass('transparent'); - $("#fileList tr").removeClass('mouseOver'); + self.$fileList.find('tr').removeClass('mouseOver'); $tr.addClass('mouseOver'); }); } @@ -2048,7 +2058,7 @@ * @return current directory */ getCurrentDirectory: function(){ - return this._currentDirectory || this.$el.find('#dir').val() || '/'; + return this._currentDirectory || '/'; }, /** * Returns the directory permissions @@ -2130,9 +2140,6 @@ } this._currentDirectory = targetDir; - // legacy stuff - this.$el.find('#dir').val(targetDir); - if (changeUrl !== false) { var params = { dir: targetDir, @@ -2472,7 +2479,7 @@ * @param show true for enabling, false for disabling */ showActions: function(show){ - this.$el.find('.actions,#file_action_panel').toggleClass('hidden', !show); + this.$el.find('.actions').toggleClass('hidden', !show); if (show){ // make sure to display according to permissions var permissions = this.getDirectoryPermissions(); @@ -2480,7 +2487,7 @@ this.$el.find('.creatable').toggleClass('hidden', !isCreatable); this.$el.find('.notCreatable').toggleClass('hidden', isCreatable); // remove old style breadcrumbs (some apps might create them) - this.$el.find('#controls .crumb').remove(); + this.$el.find('.files-controls .crumb').remove(); // refresh breadcrumbs in case it was replaced by an app this.breadcrumb.render(); } @@ -2496,7 +2503,7 @@ */ setViewerMode: function(show){ this.showActions(!show); - this.$el.find('#filestable').toggleClass('hidden', show); + this.$el.find('.files-filestable').toggleClass('hidden', show); this.$el.trigger(new $.Event('changeViewerMode', {viewerModeEnabled: show})); }, /** @@ -3304,11 +3311,11 @@ updateEmptyContent: function() { var permissions = this.getDirectoryPermissions(); var isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0; - this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('#emptycontent .uploadmessage').toggleClass('hidden', !isCreatable || !this.isEmpty); - this.$el.find('#filestable').toggleClass('hidden', this.isEmpty); - this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty); + this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); + this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); + this.$el.find('.emptyfilelist.emptycontent .uploadmessage').toggleClass('hidden', !isCreatable || !this.isEmpty); + this.$el.find('.files-filestable').toggleClass('hidden', this.isEmpty); + this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); }, /** * Shows the loading mask. @@ -3323,7 +3330,7 @@ } this.$table.addClass('hidden'); - this.$el.find('#emptycontent').addClass('hidden'); + this.$el.find('.emptyfilelist.emptycontent').addClass('hidden'); $mask = $('<div class="mask transparent icon-loading"></div>'); @@ -3408,8 +3415,8 @@ }, hideIrrelevantUIWhenNoFilesMatch:function() { if (this._filter && this.fileSummary.summary.totalDirs + this.fileSummary.summary.totalFiles === 0) { - this.$el.find('#filestable thead th').addClass('hidden'); - this.$el.find('#emptycontent').addClass('hidden'); + this.$el.find('.files-filestable thead th').addClass('hidden'); + this.$el.find('.emptyfilelist.emptycontent').addClass('hidden'); $('#searchresults').addClass('filter-empty'); $('#searchresults .emptycontent').addClass('emptycontent-search'); if ( $('#searchresults').length === 0 || $('#searchresults').hasClass('hidden') ) { @@ -3425,9 +3432,9 @@ } else { $('#searchresults').removeClass('filter-empty'); $('#searchresults .emptycontent').removeClass('emptycontent-search'); - this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty); + this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); if (!this.$el.find('.mask').exists()) { - this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty); + this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); } this.$el.find('.nofilterresults').addClass('hidden'); } @@ -3449,15 +3456,15 @@ var showHidden = !!this._filesConfig.get('showhidden'); if (summary.totalFiles === 0 && summary.totalDirs === 0) { - this.$el.find('#headerName a.name>span:first').text(t('files','Name')); - this.$el.find('#headerSize a>span:first').text(t('files','Size')); - this.$el.find('#modified a>span:first').text(t('files','Modified')); + this.$el.find('.column-name a.name>span:first').text(t('files','Name')); + this.$el.find('.column-size a>span:first').text(t('files','Size')); + this.$el.find('.column-mtime a>span:first').text(t('files','Modified')); this.$el.find('table').removeClass('multiselect'); this.$el.find('.selectedActions').addClass('hidden'); } else { this.$el.find('.selectedActions').removeClass('hidden'); - this.$el.find('#headerSize a>span:first').text(OC.Util.humanFileSize(summary.totalSize)); + this.$el.find('.column-size a>span:first').text(OC.Util.humanFileSize(summary.totalSize)); var directoryInfo = n('files', '%n folder', '%n folders', summary.totalDirs); var fileInfo = n('files', '%n file', '%n files', summary.totalFiles); @@ -3479,8 +3486,8 @@ selection += ' (' + hiddenInfo + ')'; } - this.$el.find('#headerName a.name>span:first').text(selection); - this.$el.find('#modified a>span:first').text(''); + this.$el.find('.column-name a.name>span:first').text(selection); + this.$el.find('.column-mtime a>span:first').text(''); this.$el.find('table').addClass('multiselect'); if (this.fileMultiSelectMenu) { @@ -3792,7 +3799,7 @@ } var currentOffset = this.$container.scrollTop(); - var additionalOffset = this.$el.find("#controls").height()+this.$el.find("#controls").offset().top; + var additionalOffset = this.$el.find(".files-controls").height()+this.$el.find(".files-controls").offset().top; // Animation var _this = this; @@ -3835,18 +3842,18 @@ _renderNewButton: function() { // if an upload button (legacy) already exists or no actions container exist, skip - var $actionsContainer = this.$el.find('#controls .actions'); + var $actionsContainer = this.$el.find('.files-controls .actions'); if (!$actionsContainer.length || this.$el.find('.button.upload').length) { return; } var $newButton = $(OCA.Files.Templates['template_addbutton']({ - addText: t('files', 'New'), - iconClass: 'icon-add' + addText: t('files', 'New file/folder menu'), + iconClass: 'icon-add', })); $actionsContainer.prepend($newButton); $newButton.tooltip({'placement': 'bottom'}); - + $newButton.attr('aria-expanded', 'false'); $newButton.click(_.bind(this._onClickNewButton, this)); this._newButton = $newButton; }, @@ -3857,6 +3864,7 @@ $target = $target.closest('.button'); } this._newButton.tooltip('hide'); + $target.attr('aria-expanded', 'true'); event.preventDefault(); if ($target.hasClass('disabled')) { return false; diff --git a/apps/files/js/files.js b/apps/files/js/files.js index 5f00ce2cb22..614186bc86a 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -98,14 +98,15 @@ } if (response.data !== undefined && response.data.quota !== undefined + && response.data.total !== undefined && response.data.used !== undefined && response.data.usedSpacePercent !== undefined) { var humanUsed = OC.Util.humanFileSize(response.data.used, true); - var humanQuota = OC.Util.humanFileSize(response.data.quota, true); + var humanTotal = OC.Util.humanFileSize(response.data.total, true); if (response.data.quota > 0) { - $('#quota').attr('data-original-title', Math.floor(response.data.used/response.data.quota*1000)/10 + '%'); + $('#quota').attr('data-original-title', t('files', '{used}%', {used: Math.round(response.data.usedSpacePercent)})); $('#quota progress').val(response.data.usedSpacePercent); - $('#quotatext').html(t('files', '{used} of {quota} used', {used: humanUsed, quota: humanQuota})); + $('#quotatext').html(t('files', '{used} of {quota} used', {used: humanUsed, quota: humanTotal})); } else { $('#quotatext').html(t('files', '{used} used', {used: humanUsed})); } @@ -306,9 +307,6 @@ initialize: function() { Files.bindKeyboardShortcuts(document, $); - // TODO: move file list related code (upload) to OCA.Files.FileList - $('#file_action_panel').attr('activeAction', false); - // drag&drop support using jquery.fileupload // TODO use OC.dialogs $(document).bind('drop dragover', function (e) { @@ -486,7 +484,7 @@ var dragOptions={ $('.crumbmenu').removeClass('canDropChildren'); }, drag: function(event, ui) { - var scrollingArea = window; + var scrollingArea = FileList.$container; var currentScrollTop = $(scrollingArea).scrollTop(); var scrollArea = Math.min(Math.floor($(window).innerHeight() / 2), 100); diff --git a/apps/files/js/keyboardshortcuts.js b/apps/files/js/keyboardshortcuts.js index b2f2cd0e582..0e716fc6d37 100644 --- a/apps/files/js/keyboardshortcuts.js +++ b/apps/files/js/keyboardshortcuts.js @@ -57,21 +57,21 @@ } function esc() { - $("#controls").trigger('click'); + $(".files-controls").trigger('click'); } function down() { var select = -1; - $("#fileList tr").each(function(index) { + $(".files-fileList tr").each(function(index) { if ($(this).hasClass("mouseOver")) { select = index + 1; $(this).removeClass("mouseOver"); } }); if (select === -1) { - $("#fileList tr:first").addClass("mouseOver"); + $(".files-fileList tr:first").addClass("mouseOver"); } else { - $("#fileList tr").each(function(index) { + $(".files-fileList tr").each(function(index) { if (index === select) { $(this).addClass("mouseOver"); } @@ -81,16 +81,16 @@ function up() { var select = -1; - $("#fileList tr").each(function(index) { + $(".files-fileList tr").each(function(index) { if ($(this).hasClass("mouseOver")) { select = index - 1; $(this).removeClass("mouseOver"); } }); if (select === -1) { - $("#fileList tr:last").addClass("mouseOver"); + $(".files-fileList tr:last").addClass("mouseOver"); } else { - $("#fileList tr").each(function(index) { + $(".files-fileList tr").each(function(index) { if (index === select) { $(this).addClass("mouseOver"); } @@ -99,7 +99,7 @@ } function enter() { - $("#fileList tr").each(function(index) { + $(".files-fileList tr").each(function(index) { if ($(this).hasClass("mouseOver")) { $(this).removeClass("mouseOver"); $(this).find("span.nametext").trigger('click'); @@ -108,7 +108,7 @@ } function del() { - $("#fileList tr").each(function(index) { + $(".files-fileList tr").each(function(index) { if ($(this).hasClass("mouseOver")) { $(this).removeClass("mouseOver"); $(this).find("a.action.delete").trigger('click'); @@ -117,7 +117,7 @@ } function rename() { - $("#fileList tr").each(function(index) { + $(".files-fileList tr").each(function(index) { if ($(this).hasClass("mouseOver")) { $(this).removeClass("mouseOver"); $(this).find("a[data-action='Rename']").trigger('click'); diff --git a/apps/files/js/navigation.js b/apps/files/js/navigation.js index f8f15394ef0..d7ae7dd7fee 100644 --- a/apps/files/js/navigation.js +++ b/apps/files/js/navigation.js @@ -141,13 +141,13 @@ } return; } - this.$el.find('li a').removeClass('active'); + this.$el.find('li a').removeClass('active').removeAttr('aria-current'); if (this.$currentContent) { this.$currentContent.addClass('hidden'); this.$currentContent.trigger(jQuery.Event('hide')); } this._activeItem = itemId; - currentItem.children('a').addClass('active'); + currentItem.children('a').addClass('active').attr('aria-current', 'page'); this.$currentContent = $('#app-content-' + (typeof itemView === 'string' && itemView !== '' ? itemView : itemId)); this.$currentContent.removeClass('hidden'); if (!options || !options.silent) { @@ -200,6 +200,13 @@ if ($menu.hasClass('collapsible') && $menu.data('expandedstate')) { $menu.toggleClass('open'); + var targetAriaExpanded = $target.attr('aria-expanded'); + if (targetAriaExpanded === 'false') { + $target.attr('aria-expanded', 'true'); + } else if (targetAriaExpanded === 'true') { + $target.attr('aria-expanded', 'false'); + } + $menu.toggleAttr('data-expanded', 'true', 'false'); var show = $menu.hasClass('open') ? 1 : 0; var key = $menu.data('expandedstate'); $.post(OC.generateUrl("/apps/files/api/v1/toggleShowFolder/" + key), {show: show}); diff --git a/apps/files/js/newfilemenu.js b/apps/files/js/newfilemenu.js index faebc305c6d..67ca8934549 100644 --- a/apps/files/js/newfilemenu.js +++ b/apps/files/js/newfilemenu.js @@ -245,7 +245,7 @@ */ showAt: function($target) { this.render(); - OC.showMenu(null, this.$el); + OC.showMenu($target, this.$el); } }); diff --git a/apps/files/js/recentfilelist.js b/apps/files/js/recentfilelist.js index 78eaa0b6858..3b7cd035f2a 100644 --- a/apps/files/js/recentfilelist.js +++ b/apps/files/js/recentfilelist.js @@ -18,7 +18,7 @@ window.addEventListener('DOMContentLoaded', function () { * @classdesc Recent file list. * Displays the list of recently modified files * - * @param $el container element with existing markup for the #controls + * @param $el container element with existing markup for the .files-controls * and a table * @param [options] map of options, see other parameters */ @@ -53,8 +53,8 @@ window.addEventListener('DOMContentLoaded', function () { var dir = this.getCurrentDirectory(); if (dir === '/') { // root has special permissions - this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty); + this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); + this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); } else { OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments); diff --git a/apps/files/l10n/af.js b/apps/files/l10n/af.js index 198278b9b0e..0a2aab943dc 100644 --- a/apps/files/l10n/af.js +++ b/apps/files/l10n/af.js @@ -26,6 +26,7 @@ OC.L10N.register( "Target folder does not exist any more" : "Teikengids bestaan nie meer nie", "Actions" : "Aksies", "Rename" : "Hernoem", + "Move" : "Skuif", "Copy" : "Kopieer", "Choose target folder" : "Kies teikenvouer", "Open" : "Open", @@ -61,7 +62,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} en {files}", "_including %n hidden_::_including %n hidden_" : ["insluitend %n verborge","insluitende %n verborge"], "_Uploading %n file_::_Uploading %n files_" : ["Laai tans %n lêer op ","Laai tans %n lêers op"], - "New" : "Nuwe", "{used} of {quota} used" : "{used} van {quota} gebruik", "{used} used" : "{used} gebruik", "\"{name}\" is an invalid file name." : "\"{name}\" is nie 'n geldige lêer naam nie.", @@ -133,6 +133,7 @@ OC.L10N.register( "New text file.txt" : "Nuwe tekslêer.txt", "Select" : "Kies", "You don’t have permission to upload or create files here" : "U het nie toestemming om lêers hier op te laai of te skep nie", + "New" : "Nuwe", "Settings" : "Instellings" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/af.json b/apps/files/l10n/af.json index 65030dfefe0..0bdb6316145 100644 --- a/apps/files/l10n/af.json +++ b/apps/files/l10n/af.json @@ -24,6 +24,7 @@ "Target folder does not exist any more" : "Teikengids bestaan nie meer nie", "Actions" : "Aksies", "Rename" : "Hernoem", + "Move" : "Skuif", "Copy" : "Kopieer", "Choose target folder" : "Kies teikenvouer", "Open" : "Open", @@ -59,7 +60,6 @@ "{dirs} and {files}" : "{dirs} en {files}", "_including %n hidden_::_including %n hidden_" : ["insluitend %n verborge","insluitende %n verborge"], "_Uploading %n file_::_Uploading %n files_" : ["Laai tans %n lêer op ","Laai tans %n lêers op"], - "New" : "Nuwe", "{used} of {quota} used" : "{used} van {quota} gebruik", "{used} used" : "{used} gebruik", "\"{name}\" is an invalid file name." : "\"{name}\" is nie 'n geldige lêer naam nie.", @@ -131,6 +131,7 @@ "New text file.txt" : "Nuwe tekslêer.txt", "Select" : "Kies", "You don’t have permission to upload or create files here" : "U het nie toestemming om lêers hier op te laai of te skep nie", + "New" : "Nuwe", "Settings" : "Instellings" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js index 15c99453c43..faa01dee219 100644 --- a/apps/files/l10n/ar.js +++ b/apps/files/l10n/ar.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "خطأ عند تجميع القطع، حالة الخطأ {status}", "Actions" : "الإجراءات", "Rename" : "إعادة التسمية", + "Move" : "نقل", "Copy" : "نسخ", "Choose target folder" : "اختر مكان المجلد", "Open" : "افتح", @@ -71,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} و {files}", "_including %n hidden_::_including %n hidden_" : ["يشمل %n مخفي","يشمل %n مخفي","يشمل %n مخفي","يشمل %n مخفي","يشمل %n مخفي","يشمل %n مخفي"], "_Uploading %n file_::_Uploading %n files_" : ["لا يوجد ملفات %n لتحميلها","تحميل 1 ملف %n","تحميل 2 ملف %n","يتم تحميل عدد قليل من ملفات %n","يتم تحميل عدد كبير من ملفات %n","يتم تحميل ملفات %n"], - "New" : "جديد", "Select file range" : "حدد نطاق الملف", "{used} of {quota} used" : "{used} من {quota} مستخدم", "{used} used" : "{used} مستخدم", @@ -182,7 +182,6 @@ OC.L10N.register( "Templates" : "القوالب", "Unable to initialize the templates directory" : "تعذر تهيئة دليل القوالب", "%s used" : "%s مُستخدَم", - "%s%% of %s used" : "%s%% من %s قيد الاستخدام", "%1$s of %2$s used" : "تم استخدام %1$s من %2$s", "Show hidden files" : "عرض الملفات المخفية", "Crop image previews" : "اقتصاص صورة العروض", @@ -209,7 +208,9 @@ OC.L10N.register( "New text file.txt" : "ملف نصي جديد fille.txt", "Select" : "إختر", "You don’t have permission to upload or create files here" : "لا تملك الصلاحية لرفع او انشاء ملف هنا ", + "New" : "جديد", "Cannot transfer ownership of a file or folder you don't own" : "لا يمكنك تحويل ملكية ملف أو مجلد ليس ملكك", + "%s%% of %s used" : "%s%% من %s قيد الاستخدام", "Settings" : "الإعدادات" }, "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json index c39498918ab..c1dbad2921a 100644 --- a/apps/files/l10n/ar.json +++ b/apps/files/l10n/ar.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "خطأ عند تجميع القطع، حالة الخطأ {status}", "Actions" : "الإجراءات", "Rename" : "إعادة التسمية", + "Move" : "نقل", "Copy" : "نسخ", "Choose target folder" : "اختر مكان المجلد", "Open" : "افتح", @@ -69,7 +70,6 @@ "{dirs} and {files}" : "{dirs} و {files}", "_including %n hidden_::_including %n hidden_" : ["يشمل %n مخفي","يشمل %n مخفي","يشمل %n مخفي","يشمل %n مخفي","يشمل %n مخفي","يشمل %n مخفي"], "_Uploading %n file_::_Uploading %n files_" : ["لا يوجد ملفات %n لتحميلها","تحميل 1 ملف %n","تحميل 2 ملف %n","يتم تحميل عدد قليل من ملفات %n","يتم تحميل عدد كبير من ملفات %n","يتم تحميل ملفات %n"], - "New" : "جديد", "Select file range" : "حدد نطاق الملف", "{used} of {quota} used" : "{used} من {quota} مستخدم", "{used} used" : "{used} مستخدم", @@ -180,7 +180,6 @@ "Templates" : "القوالب", "Unable to initialize the templates directory" : "تعذر تهيئة دليل القوالب", "%s used" : "%s مُستخدَم", - "%s%% of %s used" : "%s%% من %s قيد الاستخدام", "%1$s of %2$s used" : "تم استخدام %1$s من %2$s", "Show hidden files" : "عرض الملفات المخفية", "Crop image previews" : "اقتصاص صورة العروض", @@ -207,7 +206,9 @@ "New text file.txt" : "ملف نصي جديد fille.txt", "Select" : "إختر", "You don’t have permission to upload or create files here" : "لا تملك الصلاحية لرفع او انشاء ملف هنا ", + "New" : "جديد", "Cannot transfer ownership of a file or folder you don't own" : "لا يمكنك تحويل ملكية ملف أو مجلد ليس ملكك", + "%s%% of %s used" : "%s%% من %s قيد الاستخدام", "Settings" : "الإعدادات" },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" }
\ No newline at end of file diff --git a/apps/files/l10n/bg.js b/apps/files/l10n/bg.js index 461a602cd4b..1d5fc17b58b 100644 --- a/apps/files/l10n/bg.js +++ b/apps/files/l10n/bg.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Грешка при асемлиране на парчетата, код {status}", "Actions" : "Действия", "Rename" : "Преименувай", + "Move" : "Преместване", "Copy" : "Копирай", "Choose target folder" : "Избор на папка", "Open" : "Отвори", @@ -77,7 +78,7 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["включително %n скрит","включително %n скрити"], "You do not have permission to upload or create files here" : "Нямате право да качвате или създавате файлове тук", "_Uploading %n file_::_Uploading %n files_" : ["Качване на %n файл","Качване на %n файла"], - "New" : "Създай", + "New file/folder menu" : "Ново меню за файл/папка", "Select file range" : "Избери от файловете", "{used} of {quota} used" : "{used} от {quota} използвани", "{used} used" : "{used} използвани", @@ -189,8 +190,8 @@ OC.L10N.register( "Templates" : "Шаблони", "Unable to initialize the templates directory" : "Неуспешно инициализиране на директорията с шаблони", "%s used" : "%s използвани", - "%s%% of %s used" : "%s%% от %s използвани", "%1$s of %2$s used" : "%1$s от %2$s използвани", + "Files settings" : "Настройки на файловете", "Show hidden files" : "Показвай и скрити файлове", "Crop image previews" : "Изрязване на визуализациите на изображение", "WebDAV" : "WebDAV", @@ -216,7 +217,9 @@ OC.L10N.register( "New text file.txt" : "Текстов файл.txt", "Select" : "Избери", "You don’t have permission to upload or create files here" : "Нямаш разрешение да създаваш или качваш файлове тук.", + "New" : "Създай", "Cannot transfer ownership of a file or folder you don't own" : "Не можете да прехвърляте собственост върху файл или папка, които не притежавате", + "%s%% of %s used" : "%s%% от %s използвани", "Settings" : "Настройки" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/bg.json b/apps/files/l10n/bg.json index d355f821d03..d015419d71e 100644 --- a/apps/files/l10n/bg.json +++ b/apps/files/l10n/bg.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Грешка при асемлиране на парчетата, код {status}", "Actions" : "Действия", "Rename" : "Преименувай", + "Move" : "Преместване", "Copy" : "Копирай", "Choose target folder" : "Избор на папка", "Open" : "Отвори", @@ -75,7 +76,7 @@ "_including %n hidden_::_including %n hidden_" : ["включително %n скрит","включително %n скрити"], "You do not have permission to upload or create files here" : "Нямате право да качвате или създавате файлове тук", "_Uploading %n file_::_Uploading %n files_" : ["Качване на %n файл","Качване на %n файла"], - "New" : "Създай", + "New file/folder menu" : "Ново меню за файл/папка", "Select file range" : "Избери от файловете", "{used} of {quota} used" : "{used} от {quota} използвани", "{used} used" : "{used} използвани", @@ -187,8 +188,8 @@ "Templates" : "Шаблони", "Unable to initialize the templates directory" : "Неуспешно инициализиране на директорията с шаблони", "%s used" : "%s използвани", - "%s%% of %s used" : "%s%% от %s използвани", "%1$s of %2$s used" : "%1$s от %2$s използвани", + "Files settings" : "Настройки на файловете", "Show hidden files" : "Показвай и скрити файлове", "Crop image previews" : "Изрязване на визуализациите на изображение", "WebDAV" : "WebDAV", @@ -214,7 +215,9 @@ "New text file.txt" : "Текстов файл.txt", "Select" : "Избери", "You don’t have permission to upload or create files here" : "Нямаш разрешение да създаваш или качваш файлове тук.", + "New" : "Създай", "Cannot transfer ownership of a file or folder you don't own" : "Не можете да прехвърляте собственост върху файл или папка, които не притежавате", + "%s%% of %s used" : "%s%% от %s използвани", "Settings" : "Настройки" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/br.js b/apps/files/l10n/br.js index cdcc0e0173f..3c2b15867f5 100644 --- a/apps/files/l10n/br.js +++ b/apps/files/l10n/br.js @@ -28,6 +28,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Ur fazi zo bet en ur dolpañ ar blokoù, kod stad {status}", "Actions" : "Oberoù", "Rename" : "Adenvel", + "Move" : "Diplasañ", "Copy" : "Eilañ", "Choose target folder" : "Dibab an teuliad moned", "Open" : "Digeriñ", @@ -68,7 +69,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} ha {files}", "_including %n hidden_::_including %n hidden_" : [" %n koachet en o zouez","%n goachet en o zouez","koachet en o zouez","koachet en o zouez","koachet en o zouez %n"], "_Uploading %n file_::_Uploading %n files_" : ["%n restr o vezañ karget","%n restr o vezañ karget","restroù zo o vezañ karget","an darn vrasañ eus ar restroù o vezañ karget","%n restr o vezañ karget"], - "New" : "Nevez", "Select file range" : "Dibab un tachad restroù", "{used} of {quota} used" : "{used} diwar {quota} implijet", "{used} used" : "{used} implijet", @@ -158,7 +158,6 @@ OC.L10N.register( "Cancel" : "Arrest", "Create" : "Krouiñ", "%s used" : "%s implijet", - "%s%% of %s used" : "%s%% diwar %s implijet", "%1$s of %2$s used" : "%1$s diwar%2$s implijet", "Show hidden files" : "Diskouez ar restroù koachet", "WebDAV" : "WebDAV", @@ -183,7 +182,9 @@ OC.L10N.register( "New text file.txt" : "Restr testenn nevez rest.txt", "Select" : "Dibab", "You don’t have permission to upload or create files here" : "N'och ket aotreet kas pe krouiñ restroù amañ", + "New" : "Nevez", "Cannot transfer ownership of a file or folder you don't own" : "N'hallit ket treuzkas perc'henniezh ur restr pe un teuliad ma n'oc'h ket e berc'henn", + "%s%% of %s used" : "%s%% diwar %s implijet", "Settings" : "Arventennoù" }, "nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"); diff --git a/apps/files/l10n/br.json b/apps/files/l10n/br.json index bedf76f771c..34a829e417d 100644 --- a/apps/files/l10n/br.json +++ b/apps/files/l10n/br.json @@ -26,6 +26,7 @@ "Error when assembling chunks, status code {status}" : "Ur fazi zo bet en ur dolpañ ar blokoù, kod stad {status}", "Actions" : "Oberoù", "Rename" : "Adenvel", + "Move" : "Diplasañ", "Copy" : "Eilañ", "Choose target folder" : "Dibab an teuliad moned", "Open" : "Digeriñ", @@ -66,7 +67,6 @@ "{dirs} and {files}" : "{dirs} ha {files}", "_including %n hidden_::_including %n hidden_" : [" %n koachet en o zouez","%n goachet en o zouez","koachet en o zouez","koachet en o zouez","koachet en o zouez %n"], "_Uploading %n file_::_Uploading %n files_" : ["%n restr o vezañ karget","%n restr o vezañ karget","restroù zo o vezañ karget","an darn vrasañ eus ar restroù o vezañ karget","%n restr o vezañ karget"], - "New" : "Nevez", "Select file range" : "Dibab un tachad restroù", "{used} of {quota} used" : "{used} diwar {quota} implijet", "{used} used" : "{used} implijet", @@ -156,7 +156,6 @@ "Cancel" : "Arrest", "Create" : "Krouiñ", "%s used" : "%s implijet", - "%s%% of %s used" : "%s%% diwar %s implijet", "%1$s of %2$s used" : "%1$s diwar%2$s implijet", "Show hidden files" : "Diskouez ar restroù koachet", "WebDAV" : "WebDAV", @@ -181,7 +180,9 @@ "New text file.txt" : "Restr testenn nevez rest.txt", "Select" : "Dibab", "You don’t have permission to upload or create files here" : "N'och ket aotreet kas pe krouiñ restroù amañ", + "New" : "Nevez", "Cannot transfer ownership of a file or folder you don't own" : "N'hallit ket treuzkas perc'henniezh ur restr pe un teuliad ma n'oc'h ket e berc'henn", + "%s%% of %s used" : "%s%% diwar %s implijet", "Settings" : "Arventennoù" },"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);" }
\ No newline at end of file diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index b3870617496..1a18e8c22fe 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "S'ha produït un error en recopilar els fragments, el codi d'estat és {status}", "Actions" : "Accions", "Rename" : "Canvia el nom", + "Move" : "Mou", "Copy" : "Copia", "Choose target folder" : "Trieu la carpeta de destinació", "Open" : "Obre", @@ -39,6 +40,8 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "No s'ha pogut carregar la informació del fitxer «{file}»", "Files" : "Fitxers", "Details" : "Detalls", + "Show list view" : "Mostra en vista de llista", + "Show grid view" : "Mostra en vista de graella", "Please select tag(s) to add to the selection" : "Seleccioneu les etiquetes que voleu afegir a la selecció", "Apply tag(s) to selection" : "Aplica les etiquetes a la selecció", "Select directory \"{dirName}\"" : "Selecciona la carpeta «{dirName}»", @@ -74,7 +77,6 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["incloent-hi %n element ocult","incloent-hi %n elements ocults"], "You do not have permission to upload or create files here" : "No teniu permís per a pujar o crear fitxers aquí", "_Uploading %n file_::_Uploading %n files_" : ["S'està pujant %n fitxer","S'estan pujant %n fitxers"], - "New" : "Nou", "Select file range" : "Selecciona un interval de fitxers", "{used} of {quota} used" : "{used} de {quota} en ús", "{used} used" : "{used} en ús", @@ -186,7 +188,6 @@ OC.L10N.register( "Templates" : "Plantilles", "Unable to initialize the templates directory" : "No s'ha pogut inicialitzar la carpeta de plantilles", "%s used" : "%s en ús", - "%s%% of %s used" : "%s%% de %s en ús", "%1$s of %2$s used" : "%1$s de %2$s en ús", "Show hidden files" : "Mostra els fitxers ocults", "Crop image previews" : "Retalla les previsualitzacions de les imatges", @@ -213,7 +214,9 @@ OC.L10N.register( "New text file.txt" : "Fitxer de text nou.txt", "Select" : "Selecciona", "You don’t have permission to upload or create files here" : "No teniu permís per a pujar o crear fitxers aquí", + "New" : "Nou", "Cannot transfer ownership of a file or folder you don't own" : "No es pot transferir la propietat d'un fitxer o carpeta que no és vostre", + "%s%% of %s used" : "%s%% de %s en ús", "Settings" : "Paràmetres" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index 3a0a077f021..4b8d96459a9 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "S'ha produït un error en recopilar els fragments, el codi d'estat és {status}", "Actions" : "Accions", "Rename" : "Canvia el nom", + "Move" : "Mou", "Copy" : "Copia", "Choose target folder" : "Trieu la carpeta de destinació", "Open" : "Obre", @@ -37,6 +38,8 @@ "Could not load info for file \"{file}\"" : "No s'ha pogut carregar la informació del fitxer «{file}»", "Files" : "Fitxers", "Details" : "Detalls", + "Show list view" : "Mostra en vista de llista", + "Show grid view" : "Mostra en vista de graella", "Please select tag(s) to add to the selection" : "Seleccioneu les etiquetes que voleu afegir a la selecció", "Apply tag(s) to selection" : "Aplica les etiquetes a la selecció", "Select directory \"{dirName}\"" : "Selecciona la carpeta «{dirName}»", @@ -72,7 +75,6 @@ "_including %n hidden_::_including %n hidden_" : ["incloent-hi %n element ocult","incloent-hi %n elements ocults"], "You do not have permission to upload or create files here" : "No teniu permís per a pujar o crear fitxers aquí", "_Uploading %n file_::_Uploading %n files_" : ["S'està pujant %n fitxer","S'estan pujant %n fitxers"], - "New" : "Nou", "Select file range" : "Selecciona un interval de fitxers", "{used} of {quota} used" : "{used} de {quota} en ús", "{used} used" : "{used} en ús", @@ -184,7 +186,6 @@ "Templates" : "Plantilles", "Unable to initialize the templates directory" : "No s'ha pogut inicialitzar la carpeta de plantilles", "%s used" : "%s en ús", - "%s%% of %s used" : "%s%% de %s en ús", "%1$s of %2$s used" : "%1$s de %2$s en ús", "Show hidden files" : "Mostra els fitxers ocults", "Crop image previews" : "Retalla les previsualitzacions de les imatges", @@ -211,7 +212,9 @@ "New text file.txt" : "Fitxer de text nou.txt", "Select" : "Selecciona", "You don’t have permission to upload or create files here" : "No teniu permís per a pujar o crear fitxers aquí", + "New" : "Nou", "Cannot transfer ownership of a file or folder you don't own" : "No es pot transferir la propietat d'un fitxer o carpeta que no és vostre", + "%s%% of %s used" : "%s%% de %s en ús", "Settings" : "Paràmetres" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index 6a27cafae30..bbcaf2cdb7e 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Chyba při kompletaci shluků, kód chyby {status}", "Actions" : "Akce", "Rename" : "Přejmenovat", + "Move" : "Přesunout", "Copy" : "Kopírovat", "Choose target folder" : "Zvolte cílovou složku", "Open" : "Otevřít", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["včetně %n skrytého","včetně %n skrytých","včetně %n skrytých","včetně %n skrytých"], "You do not have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory", "_Uploading %n file_::_Uploading %n files_" : ["Nahrává se %n soubor","Nahrávají se %n soubory","Nahrává se %n souborů","Nahrávají se %n soubory"], - "New" : "Nový", + "New file/folder menu" : "Nabídka souboru/složky", "Select file range" : "Vybrat rozsah souborů", + "{used}%" : "{used}%", "{used} of {quota} used" : "Využito {used} z {quota} ", "{used} used" : "{used} využito", "\"{name}\" is an invalid file name." : "„{name}“ není platným názvem souboru.", @@ -189,8 +191,9 @@ OC.L10N.register( "Templates" : "Šablony", "Unable to initialize the templates directory" : "Nepodařilo se vytvořit složku pro šablony", "%s used" : "%s použito", - "%s%% of %s used" : "%s%% z %s použito", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s z %2$s použito", + "Files settings" : "Nastavení pro Soubory", "Show hidden files" : "Zobrazit skryté soubory", "Crop image previews" : "Oříznout náhledy obrázků", "WebDAV" : "WebDAV", @@ -216,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "Nový textový soubor.txt", "Select" : "Vybrat", "You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory", + "New" : "Nový", "Cannot transfer ownership of a file or folder you don't own" : "Není možné převést vlastnictví souboru či složky, které nejste vlastníky", + "%s%% of %s used" : "%s%% z %s použito", "Settings" : "Nastavení" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index 1823646cf0f..17d8580ed96 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Chyba při kompletaci shluků, kód chyby {status}", "Actions" : "Akce", "Rename" : "Přejmenovat", + "Move" : "Přesunout", "Copy" : "Kopírovat", "Choose target folder" : "Zvolte cílovou složku", "Open" : "Otevřít", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["včetně %n skrytého","včetně %n skrytých","včetně %n skrytých","včetně %n skrytých"], "You do not have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory", "_Uploading %n file_::_Uploading %n files_" : ["Nahrává se %n soubor","Nahrávají se %n soubory","Nahrává se %n souborů","Nahrávají se %n soubory"], - "New" : "Nový", + "New file/folder menu" : "Nabídka souboru/složky", "Select file range" : "Vybrat rozsah souborů", + "{used}%" : "{used}%", "{used} of {quota} used" : "Využito {used} z {quota} ", "{used} used" : "{used} využito", "\"{name}\" is an invalid file name." : "„{name}“ není platným názvem souboru.", @@ -187,8 +189,9 @@ "Templates" : "Šablony", "Unable to initialize the templates directory" : "Nepodařilo se vytvořit složku pro šablony", "%s used" : "%s použito", - "%s%% of %s used" : "%s%% z %s použito", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s z %2$s použito", + "Files settings" : "Nastavení pro Soubory", "Show hidden files" : "Zobrazit skryté soubory", "Crop image previews" : "Oříznout náhledy obrázků", "WebDAV" : "WebDAV", @@ -214,7 +217,9 @@ "New text file.txt" : "Nový textový soubor.txt", "Select" : "Vybrat", "You don’t have permission to upload or create files here" : "Nemáte oprávnění sem nahrávat nebo zde vytvářet soubory", + "New" : "Nový", "Cannot transfer ownership of a file or folder you don't own" : "Není možné převést vlastnictví souboru či složky, které nejste vlastníky", + "%s%% of %s used" : "%s%% z %s použito", "Settings" : "Nastavení" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js index af44f3e6903..35ff8977dd3 100644 --- a/apps/files/l10n/da.js +++ b/apps/files/l10n/da.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Fejl ved montering af klumper, statuskode {status}", "Actions" : "Handlinger", "Rename" : "Omdøb", + "Move" : "Flyt", "Copy" : "Kopier", "Choose target folder" : "Vælg destinationsmappe", "Open" : "Åbn", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["%n skujlte inkluderet","%n skujlte inkluderet"], "You do not 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", + "New file/folder menu" : "Ny fil/mappe menu", "Select file range" : "Vælg filområde", + "{used}%" : "{used}%", "{used} of {quota} used" : "{used} af {quota} brugt", "{used} used" : "{used} brugt", "\"{name}\" is an invalid file name." : "'{name}' er et ugyldigt filnavn.", @@ -189,8 +191,9 @@ OC.L10N.register( "Templates" : "Skabeloner", "Unable to initialize the templates directory" : "Kan ikke initialisere skabelonmappen", "%s used" : "%s brugt", - "%s%% of %s used" : "%s%% af %s brugt", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s af %2$s brugt", + "Files settings" : "indstillinger for filer", "Show hidden files" : "Vis skjulte filer", "Crop image previews" : "Beskær forhåndsvisninger af billeder", "WebDAV" : "WebDAV", @@ -216,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "Ny tekst file.txt", "Select" : "Vælg", "You don’t have permission to upload or create files here" : "Du har ikke tilladelse til at uploade eller oprette filer her", + "New" : "Ny", "Cannot transfer ownership of a file or folder you don't own" : "Kan ikke overføre ejerskab af en fil eller mappe, du ikke ejer", + "%s%% of %s used" : "%s%% af %s brugt", "Settings" : "Indstillinger" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json index b6ca6a7b62e..34d292fef1d 100644 --- a/apps/files/l10n/da.json +++ b/apps/files/l10n/da.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Fejl ved montering af klumper, statuskode {status}", "Actions" : "Handlinger", "Rename" : "Omdøb", + "Move" : "Flyt", "Copy" : "Kopier", "Choose target folder" : "Vælg destinationsmappe", "Open" : "Åbn", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["%n skujlte inkluderet","%n skujlte inkluderet"], "You do not 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", + "New file/folder menu" : "Ny fil/mappe menu", "Select file range" : "Vælg filområde", + "{used}%" : "{used}%", "{used} of {quota} used" : "{used} af {quota} brugt", "{used} used" : "{used} brugt", "\"{name}\" is an invalid file name." : "'{name}' er et ugyldigt filnavn.", @@ -187,8 +189,9 @@ "Templates" : "Skabeloner", "Unable to initialize the templates directory" : "Kan ikke initialisere skabelonmappen", "%s used" : "%s brugt", - "%s%% of %s used" : "%s%% af %s brugt", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s af %2$s brugt", + "Files settings" : "indstillinger for filer", "Show hidden files" : "Vis skjulte filer", "Crop image previews" : "Beskær forhåndsvisninger af billeder", "WebDAV" : "WebDAV", @@ -214,7 +217,9 @@ "New text file.txt" : "Ny tekst file.txt", "Select" : "Vælg", "You don’t have permission to upload or create files here" : "Du har ikke tilladelse til at uploade eller oprette filer her", + "New" : "Ny", "Cannot transfer ownership of a file or folder you don't own" : "Kan ikke overføre ejerskab af en fil eller mappe, du ikke ejer", + "%s%% of %s used" : "%s%% af %s brugt", "Settings" : "Indstillinger" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js index 91659da8b84..dd37bcf0f58 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -17,7 +17,7 @@ OC.L10N.register( "Processing files …" : "Dateien werden verarbeitet…", "…" : "…", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Die Datei {filename} kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist", - "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nicht genügend freier Speicherplatz, Du möchtest{size1} hochladen, es sind jedoch nur noch {size2} verfügbar.", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nicht genügend freier Speicherplatz, du möchtest{size1} hochladen, es sind jedoch nur noch {size2} verfügbar.", "Target folder \"{dir}\" does not exist any more" : "Ziel-Verzeichnis \"{dir}\" existiert nicht mehr", "Not enough free space" : "Nicht genügend freier Speicherplatz", "An unknown error has occurred" : "Es ist ein unbekannter Fehler aufgetreten", @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Fehler beim Zusammenführen der Teile (Chunks), Fehlermeldung {status}", "Actions" : "Aktionen", "Rename" : "Umbenennen", + "Move" : "Verschieben", "Copy" : "Kopieren", "Choose target folder" : "Zielordner wählen", "Open" : "Öffnen", @@ -42,7 +43,7 @@ OC.L10N.register( "Details" : "Details", "Show list view" : "Listenansicht anzeigen", "Show grid view" : "Rasteransicht anzeigen", - "Please select tag(s) to add to the selection" : "Bitte wähle das/die Schlagwort(e) aus, das/die Du zur Auswahl hinzufügen möchtest", + "Please select tag(s) to add to the selection" : "Bitte wähle das/die Schlagwort(e) aus, das/die du zur Auswahl hinzufügen möchtest", "Apply tag(s) to selection" : "Schlagwort(e) auf die Auswahl anwenden", "Select directory \"{dirName}\"" : "Verzeichnis \"{dirName}\" auswählen", "Select file \"{fileName}\"" : "Datei \"{fileName}\" auswählen", @@ -77,7 +78,6 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["%n versteckte eingeschlossen","%n versteckte eingeschlossen"], "You do not have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen", "_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hochgeladen","%n Dateien werden hochgeladen"], - "New" : "Neu", "Select file range" : "Dateibereich auswählen", "{used} of {quota} used" : "{used} von {quota} verwendet", "{used} used" : "{used} verwendet", @@ -111,8 +111,8 @@ OC.L10N.register( "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten", "Added to favorites" : "Zu den Favoriten hinzugefügt", "Removed from favorites" : "Aus den Favoriten entfernt", - "You added {file} to your favorites" : "Du hast {file} zu Deinen Favoriten hinzugefügt", - "You removed {file} from your favorites" : "Du hast {file} aus Deinen Favoriten entfernt", + "You added {file} to your favorites" : "Du hast {file} zu deinen Favoriten hinzugefügt", + "You removed {file} from your favorites" : "Du hast {file} aus deinen Favoriten entfernt", "File changes" : "Dateiänderungen", "Created by {user}" : "Erstellt durch {user}", "Changed by {user}" : "Geändert durch {user}", @@ -146,7 +146,7 @@ OC.L10N.register( "{user} renamed {oldfile} to {newfile}" : "{user} hat {oldfile} in {newfile} umbenannt", "You moved {oldfile} to {newfile}" : "Du hast {oldfile} nach {newfile} verschoben", "{user} moved {oldfile} to {newfile}" : "{user} hat {oldfile} nach {newfile} verschoben", - "A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde Deinen <strong>Favoriten</strong> hinzugefügt oder daraus entfernt", + "A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde deinen <strong>Favoriten</strong> hinzugefügt oder daraus entfernt", "A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Eine favorisierte Datei oder ein Ordner wurde <strong>geändert</strong>", "All files" : "Alle Dateien", @@ -174,7 +174,7 @@ OC.L10N.register( "Transfer {path} to {userid}" : "Übertrage {path} an {userid}", "Invalid path selected" : "Ungültiger Dateipfad ausgewählt", "Ownership transfer request sent" : "Anforderung für die Übertragung des Besitzes versandt", - "Cannot transfer ownership of a file or folder you do not own" : "Der Besitz an einer Datei oder einem Ordner, der Dir nicht gehört, kann nicht übertragen werden", + "Cannot transfer ownership of a file or folder you do not own" : "Der Besitz an einer Datei oder einem Ordner, der dir nicht gehört, kann nicht übertragen werden", "Tags" : "Schlagworte", "Unable to change the favourite state of the file" : "Der favorisierte Status der Datei konnte nicht geändert werden", "Error while loading the file data" : "Fehler beim Laden der Datei-Daten", @@ -189,16 +189,16 @@ OC.L10N.register( "Templates" : "Vorlagen", "Unable to initialize the templates directory" : "Der Vorlagenordner konnte nicht initialisiert werden", "%s used" : "%s verwendet", - "%s%% of %s used" : "%s%% von %s verwendet", "%1$s of %2$s used" : "%1$s von %2$s verwendet", + "Files settings" : "Dateien-Einstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", "WebDAV" : "WebDAV", - "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf Deine Dateien zuzugreifen", + "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf deine Dateien zuzugreifen", "Toggle %1$s sublist" : "Unterliste %1$s umschalten", "Toggle grid view" : "Rasteransicht umschalten", "No files in here" : "Keine Dateien vorhanden", - "Upload some content or sync with your devices!" : "Inhalte hochladen oder mit Deinen Geräten synchronisieren!", + "Upload some content or sync with your devices!" : "Inhalte hochladen oder mit deinen Geräten synchronisieren!", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Select all" : "Alle auswählen", "Upload too large" : "Der Upload ist zu groß", @@ -208,7 +208,7 @@ OC.L10N.register( "Deleted files" : "Gelöschte Dateien", "Shares" : "Freigaben", "Shared with others" : "Mit anderen geteilt", - "Shared with you" : "Mit Dir geteilt", + "Shared with you" : "Mit dir geteilt", "Shared by link" : "Über einen Link geteilt", "Deleted shares" : "Gelöschte Freigaben", "Pending shares" : "Ausstehende Freigaben", @@ -216,7 +216,9 @@ OC.L10N.register( "New text file.txt" : "Neue Textdatei file.txt", "Select" : "Auswählen", "You don’t have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen", - "Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den Du nicht besitzt, kann nicht übertragen werden", + "New" : "Neu", + "Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den du nicht besitzt, kann nicht übertragen werden", + "%s%% of %s used" : "%s%% von %s verwendet", "Settings" : "Einstellungen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index c2ccc3e9ffd..57c15d65ad3 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -15,7 +15,7 @@ "Processing files …" : "Dateien werden verarbeitet…", "…" : "…", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Die Datei {filename} kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist", - "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nicht genügend freier Speicherplatz, Du möchtest{size1} hochladen, es sind jedoch nur noch {size2} verfügbar.", + "Not enough free space, you are uploading {size1} but only {size2} is left" : "Nicht genügend freier Speicherplatz, du möchtest{size1} hochladen, es sind jedoch nur noch {size2} verfügbar.", "Target folder \"{dir}\" does not exist any more" : "Ziel-Verzeichnis \"{dir}\" existiert nicht mehr", "Not enough free space" : "Nicht genügend freier Speicherplatz", "An unknown error has occurred" : "Es ist ein unbekannter Fehler aufgetreten", @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Fehler beim Zusammenführen der Teile (Chunks), Fehlermeldung {status}", "Actions" : "Aktionen", "Rename" : "Umbenennen", + "Move" : "Verschieben", "Copy" : "Kopieren", "Choose target folder" : "Zielordner wählen", "Open" : "Öffnen", @@ -40,7 +41,7 @@ "Details" : "Details", "Show list view" : "Listenansicht anzeigen", "Show grid view" : "Rasteransicht anzeigen", - "Please select tag(s) to add to the selection" : "Bitte wähle das/die Schlagwort(e) aus, das/die Du zur Auswahl hinzufügen möchtest", + "Please select tag(s) to add to the selection" : "Bitte wähle das/die Schlagwort(e) aus, das/die du zur Auswahl hinzufügen möchtest", "Apply tag(s) to selection" : "Schlagwort(e) auf die Auswahl anwenden", "Select directory \"{dirName}\"" : "Verzeichnis \"{dirName}\" auswählen", "Select file \"{fileName}\"" : "Datei \"{fileName}\" auswählen", @@ -75,7 +76,6 @@ "_including %n hidden_::_including %n hidden_" : ["%n versteckte eingeschlossen","%n versteckte eingeschlossen"], "You do not have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen", "_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hochgeladen","%n Dateien werden hochgeladen"], - "New" : "Neu", "Select file range" : "Dateibereich auswählen", "{used} of {quota} used" : "{used} von {quota} verwendet", "{used} used" : "{used} verwendet", @@ -109,8 +109,8 @@ "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten", "Added to favorites" : "Zu den Favoriten hinzugefügt", "Removed from favorites" : "Aus den Favoriten entfernt", - "You added {file} to your favorites" : "Du hast {file} zu Deinen Favoriten hinzugefügt", - "You removed {file} from your favorites" : "Du hast {file} aus Deinen Favoriten entfernt", + "You added {file} to your favorites" : "Du hast {file} zu deinen Favoriten hinzugefügt", + "You removed {file} from your favorites" : "Du hast {file} aus deinen Favoriten entfernt", "File changes" : "Dateiänderungen", "Created by {user}" : "Erstellt durch {user}", "Changed by {user}" : "Geändert durch {user}", @@ -144,7 +144,7 @@ "{user} renamed {oldfile} to {newfile}" : "{user} hat {oldfile} in {newfile} umbenannt", "You moved {oldfile} to {newfile}" : "Du hast {oldfile} nach {newfile} verschoben", "{user} moved {oldfile} to {newfile}" : "{user} hat {oldfile} nach {newfile} verschoben", - "A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde Deinen <strong>Favoriten</strong> hinzugefügt oder daraus entfernt", + "A file has been added to or removed from your <strong>favorites</strong>" : "Eine Datei wurde deinen <strong>Favoriten</strong> hinzugefügt oder daraus entfernt", "A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Eine favorisierte Datei oder ein Ordner wurde <strong>geändert</strong>", "All files" : "Alle Dateien", @@ -172,7 +172,7 @@ "Transfer {path} to {userid}" : "Übertrage {path} an {userid}", "Invalid path selected" : "Ungültiger Dateipfad ausgewählt", "Ownership transfer request sent" : "Anforderung für die Übertragung des Besitzes versandt", - "Cannot transfer ownership of a file or folder you do not own" : "Der Besitz an einer Datei oder einem Ordner, der Dir nicht gehört, kann nicht übertragen werden", + "Cannot transfer ownership of a file or folder you do not own" : "Der Besitz an einer Datei oder einem Ordner, der dir nicht gehört, kann nicht übertragen werden", "Tags" : "Schlagworte", "Unable to change the favourite state of the file" : "Der favorisierte Status der Datei konnte nicht geändert werden", "Error while loading the file data" : "Fehler beim Laden der Datei-Daten", @@ -187,16 +187,16 @@ "Templates" : "Vorlagen", "Unable to initialize the templates directory" : "Der Vorlagenordner konnte nicht initialisiert werden", "%s used" : "%s verwendet", - "%s%% of %s used" : "%s%% von %s verwendet", "%1$s of %2$s used" : "%1$s von %2$s verwendet", + "Files settings" : "Dateien-Einstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", "WebDAV" : "WebDAV", - "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf Deine Dateien zuzugreifen", + "Use this address to access your Files via WebDAV" : "Diese Adresse benutzen, um über WebDAV auf deine Dateien zuzugreifen", "Toggle %1$s sublist" : "Unterliste %1$s umschalten", "Toggle grid view" : "Rasteransicht umschalten", "No files in here" : "Keine Dateien vorhanden", - "Upload some content or sync with your devices!" : "Inhalte hochladen oder mit Deinen Geräten synchronisieren!", + "Upload some content or sync with your devices!" : "Inhalte hochladen oder mit deinen Geräten synchronisieren!", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Select all" : "Alle auswählen", "Upload too large" : "Der Upload ist zu groß", @@ -206,7 +206,7 @@ "Deleted files" : "Gelöschte Dateien", "Shares" : "Freigaben", "Shared with others" : "Mit anderen geteilt", - "Shared with you" : "Mit Dir geteilt", + "Shared with you" : "Mit dir geteilt", "Shared by link" : "Über einen Link geteilt", "Deleted shares" : "Gelöschte Freigaben", "Pending shares" : "Ausstehende Freigaben", @@ -214,7 +214,9 @@ "New text file.txt" : "Neue Textdatei file.txt", "Select" : "Auswählen", "You don’t have permission to upload or create files here" : "Du hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen", - "Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den Du nicht besitzt, kann nicht übertragen werden", + "New" : "Neu", + "Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den du nicht besitzt, kann nicht übertragen werden", + "%s%% of %s used" : "%s%% von %s verwendet", "Settings" : "Einstellungen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index 3ebc703236a..a058980db3d 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Fehler beim Zusammenführen der Teile (Chunks), Fehlermeldung {status}", "Actions" : "Aktionen", "Rename" : "Umbenennen", + "Move" : "Verschieben", "Copy" : "Kopieren", "Choose target folder" : "Zielordner auswählen", "Open" : "Öffnen", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["%n versteckte eingeschlossen","%n versteckte eingeschlossen"], "You do not have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen", "_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hoch geladen","%n Dateien werden hochgeladen"], - "New" : "Neu", + "New file/folder menu" : "Menü für neue Datei/Ordner", "Select file range" : "Dateibereich auswählen", + "{used}%" : "{used}%", "{used} of {quota} used" : "{used} von {quota} verwendet", "{used} used" : "{used} verwendet", "\"{name}\" is an invalid file name." : "„{name}“ ist kein gültiger Dateiname.", @@ -189,9 +191,9 @@ OC.L10N.register( "Templates" : "Vorlagen", "Unable to initialize the templates directory" : "Der Vorlagenordner kann nicht initialisiert werden", "%s used" : "%s verwendet", - "%s%% of %s used" : "%s%% von %s verwendet", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s von %2$s verwendet", - "Files settings" : "Dateieinstellungen", + "Files settings" : "Dateien-Einstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", "WebDAV" : "WebDAV", @@ -217,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "Neue Textdatei file.txt", "Select" : "Auswählen", "You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen", + "New" : "Neu", "Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den Sie nicht besitzen, kann nicht übertragen werden", + "%s%% of %s used" : "%s%% von %s verwendet", "Settings" : "Einstellungen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 3b58df0fc7f..aa1b1556f61 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Fehler beim Zusammenführen der Teile (Chunks), Fehlermeldung {status}", "Actions" : "Aktionen", "Rename" : "Umbenennen", + "Move" : "Verschieben", "Copy" : "Kopieren", "Choose target folder" : "Zielordner auswählen", "Open" : "Öffnen", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["%n versteckte eingeschlossen","%n versteckte eingeschlossen"], "You do not have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen", "_Uploading %n file_::_Uploading %n files_" : ["%n Datei wird hoch geladen","%n Dateien werden hochgeladen"], - "New" : "Neu", + "New file/folder menu" : "Menü für neue Datei/Ordner", "Select file range" : "Dateibereich auswählen", + "{used}%" : "{used}%", "{used} of {quota} used" : "{used} von {quota} verwendet", "{used} used" : "{used} verwendet", "\"{name}\" is an invalid file name." : "„{name}“ ist kein gültiger Dateiname.", @@ -187,9 +189,9 @@ "Templates" : "Vorlagen", "Unable to initialize the templates directory" : "Der Vorlagenordner kann nicht initialisiert werden", "%s used" : "%s verwendet", - "%s%% of %s used" : "%s%% von %s verwendet", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s von %2$s verwendet", - "Files settings" : "Dateieinstellungen", + "Files settings" : "Dateien-Einstellungen", "Show hidden files" : "Versteckte Dateien anzeigen", "Crop image previews" : "Bildvorschauen zuschneiden", "WebDAV" : "WebDAV", @@ -215,7 +217,9 @@ "New text file.txt" : "Neue Textdatei file.txt", "Select" : "Auswählen", "You don’t have permission to upload or create files here" : "Sie haben keine Berechtigung, hier Dateien hochzuladen oder zu erstellen", + "New" : "Neu", "Cannot transfer ownership of a file or folder you don't own" : "Der Besitz einer Datei oder eines Ordners, den Sie nicht besitzen, kann nicht übertragen werden", + "%s%% of %s used" : "%s%% von %s verwendet", "Settings" : "Einstellungen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js index 8fdd636abad..8dac1746018 100644 --- a/apps/files/l10n/el.js +++ b/apps/files/l10n/el.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Σφάλμα κατά την συλλογή τμημάτων, κωδικός κατάστασης {status}", "Actions" : "Ενέργειες", "Rename" : "Μετονομασία", + "Move" : "Μετακίνηση", "Copy" : "Αντιγραφή", "Choose target folder" : "Επιλογή φακέλου προορισμού", "Open" : "Άνοιγμα", @@ -75,7 +76,6 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["περιλαμβάνεται %n κρυφό","περιλαμβάνονται %n κρυφά"], "You do not have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ", "_Uploading %n file_::_Uploading %n files_" : ["Μεταφόρτωση %n αρχείου","Μεταφόρτωση %n αρχείων"], - "New" : "Νέο", "Select file range" : "Επιλέξτε εύρος αρχείων", "{used} of {quota} used" : "Χρήση {used} από {quota} ", "{used} used" : "Σε χρήση {used}", @@ -187,7 +187,6 @@ OC.L10N.register( "Templates" : "Πρότυπα", "Unable to initialize the templates directory" : "Δεν είναι δυνατή η προετοιμασία του καταλόγου προτύπων", "%s used" : "%s σε χρήση", - "%s%% of %s used" : "%s%% από %s σε χρήση", "%1$s of %2$s used" : "χρησιμοποιούνται %1$s από %2$s", "Show hidden files" : "Εμφάνιση κρυφών αρχείων", "Crop image previews" : "Περικοπή προεπισκόπησης εικόνας", @@ -214,7 +213,9 @@ OC.L10N.register( "New text file.txt" : "Νέο αρχείο file.txt", "Select" : "Επιλογή", "You don’t have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ", + "New" : "Νέο", "Cannot transfer ownership of a file or folder you don't own" : "Δεν μπορεί να μεταβιβαστεί η κυριότητα αρχείου ή φακέλου που δεν σας ανήκει", + "%s%% of %s used" : "%s%% από %s σε χρήση", "Settings" : "Ρυθμίσεις" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json index 22e7896cc7f..5a82b9fdcc1 100644 --- a/apps/files/l10n/el.json +++ b/apps/files/l10n/el.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Σφάλμα κατά την συλλογή τμημάτων, κωδικός κατάστασης {status}", "Actions" : "Ενέργειες", "Rename" : "Μετονομασία", + "Move" : "Μετακίνηση", "Copy" : "Αντιγραφή", "Choose target folder" : "Επιλογή φακέλου προορισμού", "Open" : "Άνοιγμα", @@ -73,7 +74,6 @@ "_including %n hidden_::_including %n hidden_" : ["περιλαμβάνεται %n κρυφό","περιλαμβάνονται %n κρυφά"], "You do not have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ", "_Uploading %n file_::_Uploading %n files_" : ["Μεταφόρτωση %n αρχείου","Μεταφόρτωση %n αρχείων"], - "New" : "Νέο", "Select file range" : "Επιλέξτε εύρος αρχείων", "{used} of {quota} used" : "Χρήση {used} από {quota} ", "{used} used" : "Σε χρήση {used}", @@ -185,7 +185,6 @@ "Templates" : "Πρότυπα", "Unable to initialize the templates directory" : "Δεν είναι δυνατή η προετοιμασία του καταλόγου προτύπων", "%s used" : "%s σε χρήση", - "%s%% of %s used" : "%s%% από %s σε χρήση", "%1$s of %2$s used" : "χρησιμοποιούνται %1$s από %2$s", "Show hidden files" : "Εμφάνιση κρυφών αρχείων", "Crop image previews" : "Περικοπή προεπισκόπησης εικόνας", @@ -212,7 +211,9 @@ "New text file.txt" : "Νέο αρχείο file.txt", "Select" : "Επιλογή", "You don’t have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ", + "New" : "Νέο", "Cannot transfer ownership of a file or folder you don't own" : "Δεν μπορεί να μεταβιβαστεί η κυριότητα αρχείου ή φακέλου που δεν σας ανήκει", + "%s%% of %s used" : "%s%% από %s σε χρήση", "Settings" : "Ρυθμίσεις" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js index 109f28ec818..40e75dfce8b 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Error when assembling chunks, status code {status}", "Actions" : "Actions", "Rename" : "Rename", + "Move" : "Move", "Copy" : "Copy", "Open" : "Open", "Delete file" : "Delete file", @@ -60,7 +61,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} and {files}", "_including %n hidden_::_including %n hidden_" : ["including %n hidden","including %n hidden"], "_Uploading %n file_::_Uploading %n files_" : ["Uploading %n file","Uploading %n files"], - "New" : "New", "{used} of {quota} used" : "{used} of {quota} used", "{used} used" : "{used} used", "\"{name}\" is an invalid file name." : "\"{name}\" is an invalid file name.", @@ -147,6 +147,7 @@ OC.L10N.register( "New text file.txt" : "New text file.txt", "Select" : "Select", "You don’t have permission to upload or create files here" : "You don’t have permission to upload or create files here", + "New" : "New", "Settings" : "Settings" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index ad1136f60cc..9a76a89ca95 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Error when assembling chunks, status code {status}", "Actions" : "Actions", "Rename" : "Rename", + "Move" : "Move", "Copy" : "Copy", "Open" : "Open", "Delete file" : "Delete file", @@ -58,7 +59,6 @@ "{dirs} and {files}" : "{dirs} and {files}", "_including %n hidden_::_including %n hidden_" : ["including %n hidden","including %n hidden"], "_Uploading %n file_::_Uploading %n files_" : ["Uploading %n file","Uploading %n files"], - "New" : "New", "{used} of {quota} used" : "{used} of {quota} used", "{used} used" : "{used} used", "\"{name}\" is an invalid file name." : "\"{name}\" is an invalid file name.", @@ -145,6 +145,7 @@ "New text file.txt" : "New text file.txt", "Select" : "Select", "You don’t have permission to upload or create files here" : "You don’t have permission to upload or create files here", + "New" : "New", "Settings" : "Settings" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/eo.js b/apps/files/l10n/eo.js index cc6ecf85b18..9a7a1007fbb 100644 --- a/apps/files/l10n/eo.js +++ b/apps/files/l10n/eo.js @@ -28,6 +28,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Eraro dum kunigo de pecoj, stata kodo {status}", "Actions" : "Agoj", "Rename" : "Alinomi", + "Move" : "Movi", "Copy" : "Kopii", "Choose target folder" : "Elekti celan dosierujon", "Open" : "Malfermi", @@ -65,7 +66,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} kaj {files}", "_including %n hidden_::_including %n hidden_" : ["inkluzive %n kaŝita","inkluzive %n kaŝita(j)"], "_Uploading %n file_::_Uploading %n files_" : ["Alŝutatas %n dosiero","Alŝutatas %n dosieroj"], - "New" : "Nova", "Select file range" : "Elekti dosierintervalon", "{used} of {quota} used" : "{used} uzataj el {quota}", "{used} used" : "{used} uzataj", @@ -135,7 +135,6 @@ OC.L10N.register( "Cancel" : "Nuligi", "Create" : "Krei", "%s used" : "%s uzataj", - "%s%% of %s used" : "%s%% el %s uzataj", "%1$s of %2$s used" : "%1$s uzataj el %2$s", "Show hidden files" : "Montri kaŝitajn dosierojn", "WebDAV" : "WebDAV", @@ -158,6 +157,8 @@ OC.L10N.register( "New text file.txt" : "Nova tekstodosiero.txt", "Select" : "Elekti", "You don’t have permission to upload or create files here" : "Vi ne permesatas alŝuti aŭ krei dosierojn ĉi tie", + "New" : "Nova", + "%s%% of %s used" : "%s%% el %s uzataj", "Settings" : "Agordo" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/eo.json b/apps/files/l10n/eo.json index 6af5880667f..7066f90e4bb 100644 --- a/apps/files/l10n/eo.json +++ b/apps/files/l10n/eo.json @@ -26,6 +26,7 @@ "Error when assembling chunks, status code {status}" : "Eraro dum kunigo de pecoj, stata kodo {status}", "Actions" : "Agoj", "Rename" : "Alinomi", + "Move" : "Movi", "Copy" : "Kopii", "Choose target folder" : "Elekti celan dosierujon", "Open" : "Malfermi", @@ -63,7 +64,6 @@ "{dirs} and {files}" : "{dirs} kaj {files}", "_including %n hidden_::_including %n hidden_" : ["inkluzive %n kaŝita","inkluzive %n kaŝita(j)"], "_Uploading %n file_::_Uploading %n files_" : ["Alŝutatas %n dosiero","Alŝutatas %n dosieroj"], - "New" : "Nova", "Select file range" : "Elekti dosierintervalon", "{used} of {quota} used" : "{used} uzataj el {quota}", "{used} used" : "{used} uzataj", @@ -133,7 +133,6 @@ "Cancel" : "Nuligi", "Create" : "Krei", "%s used" : "%s uzataj", - "%s%% of %s used" : "%s%% el %s uzataj", "%1$s of %2$s used" : "%1$s uzataj el %2$s", "Show hidden files" : "Montri kaŝitajn dosierojn", "WebDAV" : "WebDAV", @@ -156,6 +155,8 @@ "New text file.txt" : "Nova tekstodosiero.txt", "Select" : "Elekti", "You don’t have permission to upload or create files here" : "Vi ne permesatas alŝuti aŭ krei dosierojn ĉi tie", + "New" : "Nova", + "%s%% of %s used" : "%s%% el %s uzataj", "Settings" : "Agordo" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index f6a6205801f..97982e03cb9 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Error al reunir los trozos, código de estado {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Elegir carpeta de destino", "Open" : "Abrir", @@ -77,7 +78,6 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "You do not have permission to upload or create files here" : "No tienes permiso para subir o crear archivos aquí", "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos","Subiendo %n archivos"], - "New" : "Nuevo", "Select file range" : "Seleccionar el rango de archivos", "{used} of {quota} used" : "{used} usados de {quota}", "{used} used" : "{used} usados", @@ -189,7 +189,6 @@ OC.L10N.register( "Templates" : "Plantillas", "Unable to initialize the templates directory" : "No se ha podido iniciar la carpeta de plantillas", "%s used" : "usado %s", - "%s%% of %s used" : "%s%% de %s usado", "%1$s of %2$s used" : "%1$s de %2$s usados", "Show hidden files" : "Mostrar archivos ocultos", "Crop image previews" : "Recortar la previsualización de las imágenes", @@ -216,7 +215,9 @@ OC.L10N.register( "New text file.txt" : "Nuevo archivo.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí", + "New" : "Nuevo", "Cannot transfer ownership of a file or folder you don't own" : "No se puede transferir la propiedad de un archivo o carpeta que no te pertenece", + "%s%% of %s used" : "%s%% de %s usado", "Settings" : "Ajustes" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index a39bed1ac8d..78aa1febfe0 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Error al reunir los trozos, código de estado {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Elegir carpeta de destino", "Open" : "Abrir", @@ -75,7 +76,6 @@ "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "You do not have permission to upload or create files here" : "No tienes permiso para subir o crear archivos aquí", "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Subiendo %n archivos","Subiendo %n archivos"], - "New" : "Nuevo", "Select file range" : "Seleccionar el rango de archivos", "{used} of {quota} used" : "{used} usados de {quota}", "{used} used" : "{used} usados", @@ -187,7 +187,6 @@ "Templates" : "Plantillas", "Unable to initialize the templates directory" : "No se ha podido iniciar la carpeta de plantillas", "%s used" : "usado %s", - "%s%% of %s used" : "%s%% de %s usado", "%1$s of %2$s used" : "%1$s de %2$s usados", "Show hidden files" : "Mostrar archivos ocultos", "Crop image previews" : "Recortar la previsualización de las imágenes", @@ -214,7 +213,9 @@ "New text file.txt" : "Nuevo archivo.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No tiene permisos para subir o crear archivos aquí", + "New" : "Nuevo", "Cannot transfer ownership of a file or folder you don't own" : "No se puede transferir la propiedad de un archivo o carpeta que no te pertenece", + "%s%% of %s used" : "%s%% de %s usado", "Settings" : "Ajustes" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_419.js b/apps/files/l10n/es_419.js index 1f4bbbfe9d7..ed370082c60 100644 --- a/apps/files/l10n/es_419.js +++ b/apps/files/l10n/es_419.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -132,6 +132,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_419.json b/apps/files/l10n/es_419.json index 9f83d084539..d221232c632 100644 --- a/apps/files/l10n/es_419.json +++ b/apps/files/l10n/es_419.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -130,6 +130,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_AR.js b/apps/files/l10n/es_AR.js index 851846572d2..7e0dca3ba10 100644 --- a/apps/files/l10n/es_AR.js +++ b/apps/files/l10n/es_AR.js @@ -25,6 +25,7 @@ OC.L10N.register( "Target folder does not exist any more" : "La carpeta destino ya no existe", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Elegir carpeta destino", "Open" : "Abrir", @@ -59,7 +60,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -138,6 +138,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_AR.json b/apps/files/l10n/es_AR.json index e83ff1dd5b8..0b95132f35a 100644 --- a/apps/files/l10n/es_AR.json +++ b/apps/files/l10n/es_AR.json @@ -23,6 +23,7 @@ "Target folder does not exist any more" : "La carpeta destino ya no existe", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Elegir carpeta destino", "Open" : "Abrir", @@ -57,7 +58,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -136,6 +136,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "Usted no cuenta con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_CL.js b/apps/files/l10n/es_CL.js index 7672177d139..c13df4e4ec1 100644 --- a/apps/files/l10n/es_CL.js +++ b/apps/files/l10n/es_CL.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -142,6 +142,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_CL.json b/apps/files/l10n/es_CL.json index a6fc2047a0e..2560acc7961 100644 --- a/apps/files/l10n/es_CL.json +++ b/apps/files/l10n/es_CL.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -140,6 +140,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_CO.js b/apps/files/l10n/es_CO.js index 6322b958b9f..1ff67e9b811 100644 --- a/apps/files/l10n/es_CO.js +++ b/apps/files/l10n/es_CO.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -59,7 +60,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -142,6 +142,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_CO.json b/apps/files/l10n/es_CO.json index 2a335dd740c..5a6ef6437c5 100644 --- a/apps/files/l10n/es_CO.json +++ b/apps/files/l10n/es_CO.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -57,7 +58,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -140,6 +140,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_CR.js b/apps/files/l10n/es_CR.js index 36a19d1d43b..3382fd92ba9 100644 --- a/apps/files/l10n/es_CR.js +++ b/apps/files/l10n/es_CR.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -141,6 +141,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_CR.json b/apps/files/l10n/es_CR.json index 3d85f85beeb..389f8b305fd 100644 --- a/apps/files/l10n/es_CR.json +++ b/apps/files/l10n/es_CR.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -139,6 +139,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_DO.js b/apps/files/l10n/es_DO.js index 36a19d1d43b..3382fd92ba9 100644 --- a/apps/files/l10n/es_DO.js +++ b/apps/files/l10n/es_DO.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -141,6 +141,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_DO.json b/apps/files/l10n/es_DO.json index 3d85f85beeb..389f8b305fd 100644 --- a/apps/files/l10n/es_DO.json +++ b/apps/files/l10n/es_DO.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -139,6 +139,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_EC.js b/apps/files/l10n/es_EC.js index 36a19d1d43b..3382fd92ba9 100644 --- a/apps/files/l10n/es_EC.js +++ b/apps/files/l10n/es_EC.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -141,6 +141,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_EC.json b/apps/files/l10n/es_EC.json index 3d85f85beeb..389f8b305fd 100644 --- a/apps/files/l10n/es_EC.json +++ b/apps/files/l10n/es_EC.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -139,6 +139,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_GT.js b/apps/files/l10n/es_GT.js index 36a19d1d43b..3382fd92ba9 100644 --- a/apps/files/l10n/es_GT.js +++ b/apps/files/l10n/es_GT.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -141,6 +141,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_GT.json b/apps/files/l10n/es_GT.json index 3d85f85beeb..389f8b305fd 100644 --- a/apps/files/l10n/es_GT.json +++ b/apps/files/l10n/es_GT.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -139,6 +139,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_HN.js b/apps/files/l10n/es_HN.js index 1f4bbbfe9d7..ed370082c60 100644 --- a/apps/files/l10n/es_HN.js +++ b/apps/files/l10n/es_HN.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -132,6 +132,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_HN.json b/apps/files/l10n/es_HN.json index 9f83d084539..d221232c632 100644 --- a/apps/files/l10n/es_HN.json +++ b/apps/files/l10n/es_HN.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -130,6 +130,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js index e9a57743dc7..afbe2e238ef 100644 --- a/apps/files/l10n/es_MX.js +++ b/apps/files/l10n/es_MX.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -143,6 +143,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json index fd906844a3f..c95b0321ed3 100644 --- a/apps/files/l10n/es_MX.json +++ b/apps/files/l10n/es_MX.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -141,6 +141,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_NI.js b/apps/files/l10n/es_NI.js index 1f4bbbfe9d7..ed370082c60 100644 --- a/apps/files/l10n/es_NI.js +++ b/apps/files/l10n/es_NI.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -132,6 +132,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_NI.json b/apps/files/l10n/es_NI.json index 9f83d084539..d221232c632 100644 --- a/apps/files/l10n/es_NI.json +++ b/apps/files/l10n/es_NI.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -130,6 +130,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_PA.js b/apps/files/l10n/es_PA.js index 1f4bbbfe9d7..ed370082c60 100644 --- a/apps/files/l10n/es_PA.js +++ b/apps/files/l10n/es_PA.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -132,6 +132,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_PA.json b/apps/files/l10n/es_PA.json index 9f83d084539..d221232c632 100644 --- a/apps/files/l10n/es_PA.json +++ b/apps/files/l10n/es_PA.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -130,6 +130,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_PE.js b/apps/files/l10n/es_PE.js index db0a1621320..b04773454b7 100644 --- a/apps/files/l10n/es_PE.js +++ b/apps/files/l10n/es_PE.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -132,6 +132,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_PE.json b/apps/files/l10n/es_PE.json index 8d2f57aae49..a6d80e89274 100644 --- a/apps/files/l10n/es_PE.json +++ b/apps/files/l10n/es_PE.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -130,6 +130,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_PR.js b/apps/files/l10n/es_PR.js index 1f4bbbfe9d7..ed370082c60 100644 --- a/apps/files/l10n/es_PR.js +++ b/apps/files/l10n/es_PR.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -132,6 +132,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_PR.json b/apps/files/l10n/es_PR.json index 9f83d084539..d221232c632 100644 --- a/apps/files/l10n/es_PR.json +++ b/apps/files/l10n/es_PR.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -130,6 +130,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_PY.js b/apps/files/l10n/es_PY.js index 053723200b4..64dbf7742da 100644 --- a/apps/files/l10n/es_PY.js +++ b/apps/files/l10n/es_PY.js @@ -28,6 +28,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Seleccionar carpeta destino", "Open" : "Abrir", @@ -68,7 +69,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usado", "{used} used" : "{used} usado", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -147,6 +147,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_PY.json b/apps/files/l10n/es_PY.json index ac55cfc74af..931b88555ae 100644 --- a/apps/files/l10n/es_PY.json +++ b/apps/files/l10n/es_PY.json @@ -26,6 +26,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Seleccionar carpeta destino", "Open" : "Abrir", @@ -66,7 +67,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usado", "{used} used" : "{used} usado", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -145,6 +145,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_SV.js b/apps/files/l10n/es_SV.js index 6dc86130524..3382fd92ba9 100644 --- a/apps/files/l10n/es_SV.js +++ b/apps/files/l10n/es_SV.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -141,6 +141,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_SV.json b/apps/files/l10n/es_SV.json index de6806e4ab8..389f8b305fd 100644 --- a/apps/files/l10n/es_SV.json +++ b/apps/files/l10n/es_SV.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n oculto","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", @@ -139,6 +139,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/es_UY.js b/apps/files/l10n/es_UY.js index 1f4bbbfe9d7..ed370082c60 100644 --- a/apps/files/l10n/es_UY.js +++ b/apps/files/l10n/es_UY.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -132,6 +132,7 @@ OC.L10N.register( "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/es_UY.json b/apps/files/l10n/es_UY.json index 9f83d084539..d221232c632 100644 --- a/apps/files/l10n/es_UY.json +++ b/apps/files/l10n/es_UY.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "Se presentó un error al ensamblar los bloques, código de estatus {status}", "Actions" : "Acciones", "Rename" : "Renombrar", + "Move" : "Mover", "Copy" : "Copiar", "Delete file" : "Borrar archivo", "Delete folder" : "Borrar carpeta", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} y {files}", "_including %n hidden_::_including %n hidden_" : ["incluyendo %n escondido","incluyendo %n ocultos","incluyendo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["Subiendo %n archivo","Cargando %n archivos","Cargando %n archivos"], - "New" : "Nuevo", "\"{name}\" is an invalid file name." : "\"{name}\" es un nombre de archivo inválido. ", "File name cannot be empty." : "El nombre de archivo no puede estar vacío.", "\"{name}\" is not an allowed filetype" : "\"{name}\" es un tipo de archivo no permitido", @@ -130,6 +130,7 @@ "New text file.txt" : "Nuevo ArchivoDeTexto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "No cuentas con los permisos para cargar o crear archivos aquí", + "New" : "Nuevo", "Settings" : "Configuraciones " },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js index 4dd983f6c1f..60ed644c5e1 100644 --- a/apps/files/l10n/et_EE.js +++ b/apps/files/l10n/et_EE.js @@ -25,6 +25,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Tükkide kokkupanemise viga, staatus kood {status}", "Actions" : "Tegevused", "Rename" : "Nimeta ümber", + "Move" : "Liiguta", "Copy" : "Kopeeri", "Delete file" : "Kustuta fail", "Delete folder" : "Kustuta kaust", @@ -59,7 +60,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} ja {files}", "_including %n hidden_::_including %n hidden_" : ["sealhulgas %n peidetud","sealhulgas %n peidetud"], "_Uploading %n file_::_Uploading %n files_" : ["Laadin üles %n faili","Laadin üles %n faili"], - "New" : "Uus", "{used} of {quota} used" : "Kasutatud {used}/{quota}", "{used} used" : "Kasutatud {used}", "\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.", @@ -140,6 +140,7 @@ OC.L10N.register( "New text file.txt" : "Uus tekstifail.txt", "Select" : "Vali", "You don’t have permission to upload or create files here" : "Sul puuduvad õigused siia failide üleslaadimiseks või tekitamiseks", + "New" : "Uus", "Settings" : "Seaded" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json index c97af96d2a1..ede8642cf87 100644 --- a/apps/files/l10n/et_EE.json +++ b/apps/files/l10n/et_EE.json @@ -23,6 +23,7 @@ "Error when assembling chunks, status code {status}" : "Tükkide kokkupanemise viga, staatus kood {status}", "Actions" : "Tegevused", "Rename" : "Nimeta ümber", + "Move" : "Liiguta", "Copy" : "Kopeeri", "Delete file" : "Kustuta fail", "Delete folder" : "Kustuta kaust", @@ -57,7 +58,6 @@ "{dirs} and {files}" : "{dirs} ja {files}", "_including %n hidden_::_including %n hidden_" : ["sealhulgas %n peidetud","sealhulgas %n peidetud"], "_Uploading %n file_::_Uploading %n files_" : ["Laadin üles %n faili","Laadin üles %n faili"], - "New" : "Uus", "{used} of {quota} used" : "Kasutatud {used}/{quota}", "{used} used" : "Kasutatud {used}", "\"{name}\" is an invalid file name." : "\"{name}\" on vigane failinimi.", @@ -138,6 +138,7 @@ "New text file.txt" : "Uus tekstifail.txt", "Select" : "Vali", "You don’t have permission to upload or create files here" : "Sul puuduvad õigused siia failide üleslaadimiseks või tekitamiseks", + "New" : "Uus", "Settings" : "Seaded" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js index 7afa9899c10..2ec9736c92e 100644 --- a/apps/files/l10n/eu.js +++ b/apps/files/l10n/eu.js @@ -13,7 +13,7 @@ OC.L10N.register( "Favorites" : "Gogokoak", "Could not create folder \"{dir}\"" : "Ezin izan da \"{dir}\" karpeta sortu", "This will stop your current uploads." : "Honek martxan dauzkazun igoerak geldituko ditu.", - "Upload cancelled." : "Igoera bertan behera utzi da.", + "Upload cancelled." : "Karga bertan behera utzi da.", "Processing files …" : "Fitxategiak prozesatzen...", "…" : "…", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Ezin da {filename} kargatu karpeta bat delako edo 0 byte dituelako", @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Errorea zatiak elkartzean, egoera kodea {status}", "Actions" : "Ekintzak", "Rename" : "Berrizendatu", + "Move" : "Mugitu", "Copy" : "Kopiatu", "Choose target folder" : "Aukeratu helburuko karpeta", "Open" : "Ireki", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["ezkutuko %n barne","ezkutuko %n barne"], "You do not have permission to upload or create files here" : "Ez duzu hemen fitxategiak kargatzeko edo sortzeko baimenik", "_Uploading %n file_::_Uploading %n files_" : ["Fitxategi %n kargatzen","%n fitxategi kargatzen"], - "New" : "Berria", + "New file/folder menu" : "Fitxategi/karpeta berri menua", "Select file range" : "Hautatu fitxategi-barrutia", + "{used}%" : "%{used}", "{used} of {quota} used" : "{used} / {quota} erabilita", "{used} used" : "{used} erabilita", "\"{name}\" is an invalid file name." : "\"{name}\" fitxategi-izen baliogabea da.", @@ -189,8 +191,9 @@ OC.L10N.register( "Templates" : "Txantiloia", "Unable to initialize the templates directory" : "Ezin da txantiloien direktorioa hasieratu", "%s used" : "%s erabilita", - "%s%% of %s used" : "%s%% / %s erabilita", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s / %2$s erabilita", + "Files settings" : "FItxategien ezarpenak", "Show hidden files" : "Erakutsi ezkutuko fitxategiak", "Crop image previews" : "Moztu irudien aurrebistak", "WebDAV" : "WebDAV", @@ -216,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "Testu-fitxategi berria.txt", "Select" : "Hautatu", "You don’t have permission to upload or create files here" : "Ez duzu baimenik fitxategiak hona kargatu edo hemen sortzeko", + "New" : "Berria", "Cannot transfer ownership of a file or folder you don't own" : "Ezin da zurea ez den fitxategi edo karpeta baten jabetza transferitu", + "%s%% of %s used" : "%s%% / %s erabilita", "Settings" : "Ezarpenak" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json index 160d706cdf8..aab65e45c38 100644 --- a/apps/files/l10n/eu.json +++ b/apps/files/l10n/eu.json @@ -11,7 +11,7 @@ "Favorites" : "Gogokoak", "Could not create folder \"{dir}\"" : "Ezin izan da \"{dir}\" karpeta sortu", "This will stop your current uploads." : "Honek martxan dauzkazun igoerak geldituko ditu.", - "Upload cancelled." : "Igoera bertan behera utzi da.", + "Upload cancelled." : "Karga bertan behera utzi da.", "Processing files …" : "Fitxategiak prozesatzen...", "…" : "…", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Ezin da {filename} kargatu karpeta bat delako edo 0 byte dituelako", @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Errorea zatiak elkartzean, egoera kodea {status}", "Actions" : "Ekintzak", "Rename" : "Berrizendatu", + "Move" : "Mugitu", "Copy" : "Kopiatu", "Choose target folder" : "Aukeratu helburuko karpeta", "Open" : "Ireki", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["ezkutuko %n barne","ezkutuko %n barne"], "You do not have permission to upload or create files here" : "Ez duzu hemen fitxategiak kargatzeko edo sortzeko baimenik", "_Uploading %n file_::_Uploading %n files_" : ["Fitxategi %n kargatzen","%n fitxategi kargatzen"], - "New" : "Berria", + "New file/folder menu" : "Fitxategi/karpeta berri menua", "Select file range" : "Hautatu fitxategi-barrutia", + "{used}%" : "%{used}", "{used} of {quota} used" : "{used} / {quota} erabilita", "{used} used" : "{used} erabilita", "\"{name}\" is an invalid file name." : "\"{name}\" fitxategi-izen baliogabea da.", @@ -187,8 +189,9 @@ "Templates" : "Txantiloia", "Unable to initialize the templates directory" : "Ezin da txantiloien direktorioa hasieratu", "%s used" : "%s erabilita", - "%s%% of %s used" : "%s%% / %s erabilita", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s / %2$s erabilita", + "Files settings" : "FItxategien ezarpenak", "Show hidden files" : "Erakutsi ezkutuko fitxategiak", "Crop image previews" : "Moztu irudien aurrebistak", "WebDAV" : "WebDAV", @@ -214,7 +217,9 @@ "New text file.txt" : "Testu-fitxategi berria.txt", "Select" : "Hautatu", "You don’t have permission to upload or create files here" : "Ez duzu baimenik fitxategiak hona kargatu edo hemen sortzeko", + "New" : "Berria", "Cannot transfer ownership of a file or folder you don't own" : "Ezin da zurea ez den fitxategi edo karpeta baten jabetza transferitu", + "%s%% of %s used" : "%s%% / %s erabilita", "Settings" : "Ezarpenak" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/fa.js b/apps/files/l10n/fa.js index 5a5e928cf88..0e223e14053 100644 --- a/apps/files/l10n/fa.js +++ b/apps/files/l10n/fa.js @@ -28,6 +28,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "خطا هنگام جمع آوری قطعه ها، کد وضعیت {status}", "Actions" : "فعالیت ها", "Rename" : "تغییرنام", + "Move" : "انتقال", "Copy" : "کپی کردن", "Choose target folder" : "پوشه هدف را انتخاب کنید", "Open" : "باز کن...", @@ -63,7 +64,6 @@ OC.L10N.register( "_%n file_::_%n files_" : ["%n فایل","%n فایل"], "{dirs} and {files}" : "{dirs} و {files}", "_Uploading %n file_::_Uploading %n files_" : ["در حال بارگذاری %n فایل","در حال بارگذاری %n فایل"], - "New" : "جدید", "{used} of {quota} used" : "{used} از {quota} استفاده شده", "{used} used" : "{used} استفاده شده", "\"{name}\" is an invalid file name." : "\"{name}\" نامی نامعتبر برای فایل است.", @@ -126,6 +126,7 @@ OC.L10N.register( "New text file.txt" : "فایل متنی جدید .txt", "Select" : "انتخاب", "You don’t have permission to upload or create files here" : "شما دسترسی مجاز برای آپلود یا ایجاد فایل در اینجا را ندارید", + "New" : "جدید", "Settings" : "تنظیمات" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/fa.json b/apps/files/l10n/fa.json index b977cf60095..ec41893e0cb 100644 --- a/apps/files/l10n/fa.json +++ b/apps/files/l10n/fa.json @@ -26,6 +26,7 @@ "Error when assembling chunks, status code {status}" : "خطا هنگام جمع آوری قطعه ها، کد وضعیت {status}", "Actions" : "فعالیت ها", "Rename" : "تغییرنام", + "Move" : "انتقال", "Copy" : "کپی کردن", "Choose target folder" : "پوشه هدف را انتخاب کنید", "Open" : "باز کن...", @@ -61,7 +62,6 @@ "_%n file_::_%n files_" : ["%n فایل","%n فایل"], "{dirs} and {files}" : "{dirs} و {files}", "_Uploading %n file_::_Uploading %n files_" : ["در حال بارگذاری %n فایل","در حال بارگذاری %n فایل"], - "New" : "جدید", "{used} of {quota} used" : "{used} از {quota} استفاده شده", "{used} used" : "{used} استفاده شده", "\"{name}\" is an invalid file name." : "\"{name}\" نامی نامعتبر برای فایل است.", @@ -124,6 +124,7 @@ "New text file.txt" : "فایل متنی جدید .txt", "Select" : "انتخاب", "You don’t have permission to upload or create files here" : "شما دسترسی مجاز برای آپلود یا ایجاد فایل در اینجا را ندارید", + "New" : "جدید", "Settings" : "تنظیمات" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js index 4f7d355f016..7614e704baa 100644 --- a/apps/files/l10n/fi.js +++ b/apps/files/l10n/fi.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Virhe koottaessa lohkoja, tilakoodi {status}", "Actions" : "Toiminnot", "Rename" : "Nimeä uudelleen", + "Move" : "Siirrä", "Copy" : "Kopioi", "Choose target folder" : "Valitse kohdekansio", "Open" : "Avaa", @@ -40,6 +41,8 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "Ei voida ladata tiedoston \"{file}\" tietoja", "Files" : "Tiedostot", "Details" : "Tiedot", + "Show list view" : "Näytä listanäkymä", + "Show grid view" : "Näytä ruudukkonäkymä", "Please select tag(s) to add to the selection" : "Valitse lisättävät tunnisteet valinnalle", "Apply tag(s) to selection" : "Hyväksy tunnisteet valinnalle", "Select directory \"{dirName}\"" : "Valitse kansio \"{dirName}\"", @@ -75,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["Sisältäen %n piilotetun","Sisältäen %n piilotettua"], "You do not have permission to upload or create files here" : "Käyttöoikeutesi eivät riitä tiedostojen lähettämiseen tai luomiseen tähän sijaintiin", "_Uploading %n file_::_Uploading %n files_" : ["Lähetetään %n tiedosto","Lähetetään %n tiedostoa"], - "New" : "Uusi", + "New file/folder menu" : "Uusi tiedosto/kansio -valikko", "Select file range" : "Valitse tiedostojoukko", + "{used}%" : "{used} %", "{used} of {quota} used" : "{used}/{quota} käytetty", "{used} used" : "{used} käytetty", "\"{name}\" is an invalid file name." : "\"{name}\" on virheellinen tiedostonimi.", @@ -187,8 +191,9 @@ OC.L10N.register( "Templates" : "Mallipohjat", "Unable to initialize the templates directory" : "Mallipohjien kansiota ei voitu alustaa", "%s used" : "%s käytetty", - "%s%% of %s used" : "%s%% / %s käytetty", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s/%2$s käytetty", + "Files settings" : "Tiedostojen asetukset", "Show hidden files" : "Näytä piilotetut tiedostot", "Crop image previews" : "Rajaa kuvien esikatseluja", "WebDAV" : "WebDAV", @@ -213,7 +218,9 @@ OC.L10N.register( "New text file.txt" : "Uusi tekstitiedosto.txt", "Select" : "Valitse", "You don’t have permission to upload or create files here" : "Käyttöoikeutesi eivät riitä tiedostojen lähettämiseen tai kansioiden luomiseen tähän sijaintiin", + "New" : "Uusi", "Cannot transfer ownership of a file or folder you don't own" : "Et voi siirtää sellaisen tiedoston tai kansion omistajuutta, jota et itse omista", + "%s%% of %s used" : "%s%% / %s käytetty", "Settings" : "Asetukset" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json index 0ad1d0bec7f..3299d9d2035 100644 --- a/apps/files/l10n/fi.json +++ b/apps/files/l10n/fi.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Virhe koottaessa lohkoja, tilakoodi {status}", "Actions" : "Toiminnot", "Rename" : "Nimeä uudelleen", + "Move" : "Siirrä", "Copy" : "Kopioi", "Choose target folder" : "Valitse kohdekansio", "Open" : "Avaa", @@ -38,6 +39,8 @@ "Could not load info for file \"{file}\"" : "Ei voida ladata tiedoston \"{file}\" tietoja", "Files" : "Tiedostot", "Details" : "Tiedot", + "Show list view" : "Näytä listanäkymä", + "Show grid view" : "Näytä ruudukkonäkymä", "Please select tag(s) to add to the selection" : "Valitse lisättävät tunnisteet valinnalle", "Apply tag(s) to selection" : "Hyväksy tunnisteet valinnalle", "Select directory \"{dirName}\"" : "Valitse kansio \"{dirName}\"", @@ -73,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["Sisältäen %n piilotetun","Sisältäen %n piilotettua"], "You do not have permission to upload or create files here" : "Käyttöoikeutesi eivät riitä tiedostojen lähettämiseen tai luomiseen tähän sijaintiin", "_Uploading %n file_::_Uploading %n files_" : ["Lähetetään %n tiedosto","Lähetetään %n tiedostoa"], - "New" : "Uusi", + "New file/folder menu" : "Uusi tiedosto/kansio -valikko", "Select file range" : "Valitse tiedostojoukko", + "{used}%" : "{used} %", "{used} of {quota} used" : "{used}/{quota} käytetty", "{used} used" : "{used} käytetty", "\"{name}\" is an invalid file name." : "\"{name}\" on virheellinen tiedostonimi.", @@ -185,8 +189,9 @@ "Templates" : "Mallipohjat", "Unable to initialize the templates directory" : "Mallipohjien kansiota ei voitu alustaa", "%s used" : "%s käytetty", - "%s%% of %s used" : "%s%% / %s käytetty", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s/%2$s käytetty", + "Files settings" : "Tiedostojen asetukset", "Show hidden files" : "Näytä piilotetut tiedostot", "Crop image previews" : "Rajaa kuvien esikatseluja", "WebDAV" : "WebDAV", @@ -211,7 +216,9 @@ "New text file.txt" : "Uusi tekstitiedosto.txt", "Select" : "Valitse", "You don’t have permission to upload or create files here" : "Käyttöoikeutesi eivät riitä tiedostojen lähettämiseen tai kansioiden luomiseen tähän sijaintiin", + "New" : "Uusi", "Cannot transfer ownership of a file or folder you don't own" : "Et voi siirtää sellaisen tiedoston tai kansion omistajuutta, jota et itse omista", + "%s%% of %s used" : "%s%% / %s käytetty", "Settings" : "Asetukset" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index d597f7a50f9..70322f1679d 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -21,6 +21,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "Le dossier cible \"{dir}\" n'existe plus", "Not enough free space" : "Espace disponible insuffisant", "An unknown error has occurred" : "Une erreur inconnue est survenue", + "File could not be uploaded" : "Le fichier n'a pas pu être téléversé", "Uploading …" : "Envoi en cours...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} sur {totalSize} ({bitrate})", "Uploading that item is not supported" : "L'envoi de cet élément n'est pas supporté", @@ -29,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Erreur lors de l'assemblage des blocs, code d'état {status}", "Actions" : "Actions", "Rename" : "Renommer", + "Move" : "Déplacer", "Copy" : "Copier", "Choose target folder" : "Sélectionner le dossier cible", "Open" : "Ouvrir", @@ -74,8 +76,9 @@ OC.L10N.register( "_%n file_::_%n files_" : ["%n fichier","%n fichiers","%n fichiers"], "{dirs} and {files}" : "{dirs} et {files}", "_including %n hidden_::_including %n hidden_" : ["inclus %n masqué","dont %n masqués","dont %n masqués"], + "You do not have permission to upload or create files here" : "Vous n'avez pas la permission de téléverser ou de créer des fichiers ici", "_Uploading %n file_::_Uploading %n files_" : ["Téléversement de %n fichier","Envoi de %n fichiers","Envoi de %n fichiers"], - "New" : "Nouveau", + "New file/folder menu" : "Menu nouveau fichier/dossier", "Select file range" : "Activer la sélection d'une plage de fichiers", "{used} of {quota} used" : "{used} utilisés sur {quota}", "{used} used" : "{used} utilisés", @@ -172,6 +175,7 @@ OC.L10N.register( "Transfer {path} to {userid}" : "Transférer {path} à {userid}", "Invalid path selected" : "Chemin sélectionné non valide", "Ownership transfer request sent" : "Requête de transfert de propriété envoyée", + "Cannot transfer ownership of a file or folder you do not own" : "Impossible de transférer la propriété d'un fichier ou d'un dossier que vous ne possédez pas", "Tags" : "Étiquettes", "Unable to change the favourite state of the file" : "Impossible de modifier l'état favori du fichier", "Error while loading the file data" : "Erreur lors du chargement du fichier de données", @@ -186,10 +190,10 @@ OC.L10N.register( "Templates" : "Modèles", "Unable to initialize the templates directory" : "Impossible d'initialiser le répertoire des modèles", "%s used" : "%s utilisés", - "%s%% of %s used" : "%s%% de %s utilisé", "%1$s of %2$s used" : "%1$s utilisés sur %2$s", + "Files settings" : "Paramètres des fichiers", "Show hidden files" : "Afficher les fichiers masqués", - "Crop image previews" : "Tronquer les prévisualisations d’images", + "Crop image previews" : "Activer l'affichage en miniatures carrées", "WebDAV" : "WebDAV", "Use this address to access your Files via WebDAV" : "Utilisez cette adresse pour accéder à vos fichiers via WebDAV", "Toggle %1$s sublist" : "Basculer %1$s sous-liste", @@ -213,7 +217,9 @@ OC.L10N.register( "New text file.txt" : "Nouveau fichier texte.txt", "Select" : "Sélectionner", "You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'envoyer ou de créer des fichiers ici", + "New" : "Nouveau", "Cannot transfer ownership of a file or folder you don't own" : "Impossible de transférer la propriété d’un fichier ou d’un dossier dont vous n'êtes pas le propriétaire", + "%s%% of %s used" : "%s%% de %s utilisés", "Settings" : "Paramètres" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index 8d035556534..cd27356f1bb 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -19,6 +19,7 @@ "Target folder \"{dir}\" does not exist any more" : "Le dossier cible \"{dir}\" n'existe plus", "Not enough free space" : "Espace disponible insuffisant", "An unknown error has occurred" : "Une erreur inconnue est survenue", + "File could not be uploaded" : "Le fichier n'a pas pu être téléversé", "Uploading …" : "Envoi en cours...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} sur {totalSize} ({bitrate})", "Uploading that item is not supported" : "L'envoi de cet élément n'est pas supporté", @@ -27,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Erreur lors de l'assemblage des blocs, code d'état {status}", "Actions" : "Actions", "Rename" : "Renommer", + "Move" : "Déplacer", "Copy" : "Copier", "Choose target folder" : "Sélectionner le dossier cible", "Open" : "Ouvrir", @@ -72,8 +74,9 @@ "_%n file_::_%n files_" : ["%n fichier","%n fichiers","%n fichiers"], "{dirs} and {files}" : "{dirs} et {files}", "_including %n hidden_::_including %n hidden_" : ["inclus %n masqué","dont %n masqués","dont %n masqués"], + "You do not have permission to upload or create files here" : "Vous n'avez pas la permission de téléverser ou de créer des fichiers ici", "_Uploading %n file_::_Uploading %n files_" : ["Téléversement de %n fichier","Envoi de %n fichiers","Envoi de %n fichiers"], - "New" : "Nouveau", + "New file/folder menu" : "Menu nouveau fichier/dossier", "Select file range" : "Activer la sélection d'une plage de fichiers", "{used} of {quota} used" : "{used} utilisés sur {quota}", "{used} used" : "{used} utilisés", @@ -170,6 +173,7 @@ "Transfer {path} to {userid}" : "Transférer {path} à {userid}", "Invalid path selected" : "Chemin sélectionné non valide", "Ownership transfer request sent" : "Requête de transfert de propriété envoyée", + "Cannot transfer ownership of a file or folder you do not own" : "Impossible de transférer la propriété d'un fichier ou d'un dossier que vous ne possédez pas", "Tags" : "Étiquettes", "Unable to change the favourite state of the file" : "Impossible de modifier l'état favori du fichier", "Error while loading the file data" : "Erreur lors du chargement du fichier de données", @@ -184,10 +188,10 @@ "Templates" : "Modèles", "Unable to initialize the templates directory" : "Impossible d'initialiser le répertoire des modèles", "%s used" : "%s utilisés", - "%s%% of %s used" : "%s%% de %s utilisé", "%1$s of %2$s used" : "%1$s utilisés sur %2$s", + "Files settings" : "Paramètres des fichiers", "Show hidden files" : "Afficher les fichiers masqués", - "Crop image previews" : "Tronquer les prévisualisations d’images", + "Crop image previews" : "Activer l'affichage en miniatures carrées", "WebDAV" : "WebDAV", "Use this address to access your Files via WebDAV" : "Utilisez cette adresse pour accéder à vos fichiers via WebDAV", "Toggle %1$s sublist" : "Basculer %1$s sous-liste", @@ -211,7 +215,9 @@ "New text file.txt" : "Nouveau fichier texte.txt", "Select" : "Sélectionner", "You don’t have permission to upload or create files here" : "Vous n'avez pas la permission d'envoyer ou de créer des fichiers ici", + "New" : "Nouveau", "Cannot transfer ownership of a file or folder you don't own" : "Impossible de transférer la propriété d’un fichier ou d’un dossier dont vous n'êtes pas le propriétaire", + "%s%% of %s used" : "%s%% de %s utilisés", "Settings" : "Paramètres" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js index 6d26ea5c938..59a69287e97 100644 --- a/apps/files/l10n/gl.js +++ b/apps/files/l10n/gl.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Produciuse un erro ao ensamblar os bloques, código de estado {status}", "Actions" : "Accións", "Rename" : "Renomear", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Escoller o cartafol de destino", "Open" : "Abrir", @@ -71,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["incluíndo %n agachado","incluíndo %n agochados"], "_Uploading %n file_::_Uploading %n files_" : ["Enviando %n ficheiro","Enviando %n ficheiros"], - "New" : "Novo", "Select file range" : "Seleccionar o intervalo de ficheiros ", "{used} of {quota} used" : "Usados {used} de {quota}", "{used} used" : "{used} usados", @@ -181,7 +181,6 @@ OC.L10N.register( "Templates" : "Modelos", "Unable to initialize the templates directory" : "Non é posíbel iniciar o directorio de modelos", "%s used" : "%s utilizado", - "%s%% of %s used" : "%s%% de %s utilizado", "%1$s of %2$s used" : "%s de %s utilizado", "Show hidden files" : "Amosar os ficheiros agochados", "Crop image previews" : "Recortar a vista previa das imaxes", @@ -207,7 +206,9 @@ OC.L10N.register( "New text file.txt" : "Novo ficheiro de texto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "Non ten permiso para enviar ou crear ficheiros aquí.", + "New" : "Novo", "Cannot transfer ownership of a file or folder you don't own" : "Non é posíbel transferir a propiedade dun ficheiro ou cartafol que non é de seu", + "%s%% of %s used" : "%s%% de %s utilizado", "Settings" : "Axustes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json index d52658b61ed..a22353c6647 100644 --- a/apps/files/l10n/gl.json +++ b/apps/files/l10n/gl.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Produciuse un erro ao ensamblar os bloques, código de estado {status}", "Actions" : "Accións", "Rename" : "Renomear", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Escoller o cartafol de destino", "Open" : "Abrir", @@ -69,7 +70,6 @@ "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["incluíndo %n agachado","incluíndo %n agochados"], "_Uploading %n file_::_Uploading %n files_" : ["Enviando %n ficheiro","Enviando %n ficheiros"], - "New" : "Novo", "Select file range" : "Seleccionar o intervalo de ficheiros ", "{used} of {quota} used" : "Usados {used} de {quota}", "{used} used" : "{used} usados", @@ -179,7 +179,6 @@ "Templates" : "Modelos", "Unable to initialize the templates directory" : "Non é posíbel iniciar o directorio de modelos", "%s used" : "%s utilizado", - "%s%% of %s used" : "%s%% de %s utilizado", "%1$s of %2$s used" : "%s de %s utilizado", "Show hidden files" : "Amosar os ficheiros agochados", "Crop image previews" : "Recortar a vista previa das imaxes", @@ -205,7 +204,9 @@ "New text file.txt" : "Novo ficheiro de texto.txt", "Select" : "Seleccionar", "You don’t have permission to upload or create files here" : "Non ten permiso para enviar ou crear ficheiros aquí.", + "New" : "Novo", "Cannot transfer ownership of a file or folder you don't own" : "Non é posíbel transferir a propiedade dun ficheiro ou cartafol que non é de seu", + "%s%% of %s used" : "%s%% de %s utilizado", "Settings" : "Axustes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js index 4a5a6e4a602..2d406fda6c5 100644 --- a/apps/files/l10n/he.js +++ b/apps/files/l10n/he.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "שגיאה באיסוף הנתחים, קוד המצב {status}", "Actions" : "פעולות", "Rename" : "שינוי שם", + "Move" : "העברה", "Copy" : "העתקה", "Choose target folder" : "נא לבחור תיקיית יעד", "Open" : "פתיחה", @@ -69,7 +70,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} וכן {files}", "_including %n hidden_::_including %n hidden_" : ["לרבות %n מוסתר","לרבות %n מוסתרים","לרבות %n מוסתרים","לרבות %n מוסתרים"], "_Uploading %n file_::_Uploading %n files_" : ["מעלה %n קובץ","מעלה %n קבצים","מעלה %n קבצים","מעלה %n קבצים"], - "New" : "חדש", "Select file range" : "בחירת טווח קבצים", "{used} of {quota} used" : "{used} מתוך {quota} בשימוש", "{used} used" : "{used} בשימוש", @@ -161,7 +161,6 @@ OC.L10N.register( "Cancel" : "ביטול", "Create" : "יצירה", "%s used" : "%s בשימוש", - "%s%% of %s used" : "%s%% מתוך %s בשימוש", "%1$s of %2$s used" : "%1$s מתוך %2$s בשימוש", "Show hidden files" : "הצגת קבצים נסתרים", "Crop image previews" : "חיתוך תצוגות מקדימות של תמונות", @@ -187,7 +186,9 @@ OC.L10N.register( "New text file.txt" : "קובץ טקסט חדש.txt", "Select" : "בחר", "You don’t have permission to upload or create files here" : "אין לך הרשאות להעלות או ליצור קבצים כאן", + "New" : "חדש", "Cannot transfer ownership of a file or folder you don't own" : "אין לך אפשרות להעביר בעלות על קובץ או תיקייה שאין לך בעלות עליהם", + "%s%% of %s used" : "%s%% מתוך %s בשימוש", "Settings" : "הגדרות" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json index 8259fa71310..255f64263e7 100644 --- a/apps/files/l10n/he.json +++ b/apps/files/l10n/he.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "שגיאה באיסוף הנתחים, קוד המצב {status}", "Actions" : "פעולות", "Rename" : "שינוי שם", + "Move" : "העברה", "Copy" : "העתקה", "Choose target folder" : "נא לבחור תיקיית יעד", "Open" : "פתיחה", @@ -67,7 +68,6 @@ "{dirs} and {files}" : "{dirs} וכן {files}", "_including %n hidden_::_including %n hidden_" : ["לרבות %n מוסתר","לרבות %n מוסתרים","לרבות %n מוסתרים","לרבות %n מוסתרים"], "_Uploading %n file_::_Uploading %n files_" : ["מעלה %n קובץ","מעלה %n קבצים","מעלה %n קבצים","מעלה %n קבצים"], - "New" : "חדש", "Select file range" : "בחירת טווח קבצים", "{used} of {quota} used" : "{used} מתוך {quota} בשימוש", "{used} used" : "{used} בשימוש", @@ -159,7 +159,6 @@ "Cancel" : "ביטול", "Create" : "יצירה", "%s used" : "%s בשימוש", - "%s%% of %s used" : "%s%% מתוך %s בשימוש", "%1$s of %2$s used" : "%1$s מתוך %2$s בשימוש", "Show hidden files" : "הצגת קבצים נסתרים", "Crop image previews" : "חיתוך תצוגות מקדימות של תמונות", @@ -185,7 +184,9 @@ "New text file.txt" : "קובץ טקסט חדש.txt", "Select" : "בחר", "You don’t have permission to upload or create files here" : "אין לך הרשאות להעלות או ליצור קבצים כאן", + "New" : "חדש", "Cannot transfer ownership of a file or folder you don't own" : "אין לך אפשרות להעביר בעלות על קובץ או תיקייה שאין לך בעלות עליהם", + "%s%% of %s used" : "%s%% מתוך %s בשימוש", "Settings" : "הגדרות" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files/l10n/hr.js b/apps/files/l10n/hr.js index 6e75b7aa60c..494a2b4ab88 100644 --- a/apps/files/l10n/hr.js +++ b/apps/files/l10n/hr.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Pogreška prilikom sastavljanja komada, šifra statusa {status}", "Actions" : "Radnje", "Rename" : "Preimenuj", + "Move" : "Premjesti", "Copy" : "Kopiraj", "Choose target folder" : "Odaberi ciljnu mapu", "Open" : "Otvori", @@ -69,7 +70,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} i {files}", "_including %n hidden_::_including %n hidden_" : ["uključujući %n skrivenih","uključujući %n skrivenih","uključujući %n skrivenih"], "_Uploading %n file_::_Uploading %n files_" : ["Otpremanje %n datoteku","Prenosim %n datoteka","Prenosim %n datoteka"], - "New" : "Novo", "Select file range" : "Odaberi raspon datoteka", "{used} of {quota} used" : "Iskorišteno {used} od {quota}", "{used} used" : "Iskorišteno {used}", @@ -180,7 +180,6 @@ OC.L10N.register( "Templates" : "Predlošci", "Unable to initialize the templates directory" : "Nije moguće inicijalizirati direktorij predložaka", "%s used" : "Iskorišteno %s", - "%s%% of %s used" : "Iskorišteno %s%% od %s", "%1$s of %2$s used" : "Iskorišteno %1$s od %2$s", "Show hidden files" : "Prikaz skrivenih datoteka", "Crop image previews" : "Obreži pretpreglede slika", @@ -207,7 +206,9 @@ OC.L10N.register( "New text file.txt" : "Nova tekstna datoteka.txt", "Select" : "Odaberi", "You don’t have permission to upload or create files here" : "Ovdje ne smijete otpremati ili stvarati datoteke", + "New" : "Novo", "Cannot transfer ownership of a file or folder you don't own" : "Ne možete prenijeti vlasništvo nad datotekom ili mapom koja nije u vašem vlasništvu", + "%s%% of %s used" : "Iskorišteno %s%% od %s", "Settings" : "Postavke" }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/apps/files/l10n/hr.json b/apps/files/l10n/hr.json index 83edac8fdbe..533a69adaab 100644 --- a/apps/files/l10n/hr.json +++ b/apps/files/l10n/hr.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Pogreška prilikom sastavljanja komada, šifra statusa {status}", "Actions" : "Radnje", "Rename" : "Preimenuj", + "Move" : "Premjesti", "Copy" : "Kopiraj", "Choose target folder" : "Odaberi ciljnu mapu", "Open" : "Otvori", @@ -67,7 +68,6 @@ "{dirs} and {files}" : "{dirs} i {files}", "_including %n hidden_::_including %n hidden_" : ["uključujući %n skrivenih","uključujući %n skrivenih","uključujući %n skrivenih"], "_Uploading %n file_::_Uploading %n files_" : ["Otpremanje %n datoteku","Prenosim %n datoteka","Prenosim %n datoteka"], - "New" : "Novo", "Select file range" : "Odaberi raspon datoteka", "{used} of {quota} used" : "Iskorišteno {used} od {quota}", "{used} used" : "Iskorišteno {used}", @@ -178,7 +178,6 @@ "Templates" : "Predlošci", "Unable to initialize the templates directory" : "Nije moguće inicijalizirati direktorij predložaka", "%s used" : "Iskorišteno %s", - "%s%% of %s used" : "Iskorišteno %s%% od %s", "%1$s of %2$s used" : "Iskorišteno %1$s od %2$s", "Show hidden files" : "Prikaz skrivenih datoteka", "Crop image previews" : "Obreži pretpreglede slika", @@ -205,7 +204,9 @@ "New text file.txt" : "Nova tekstna datoteka.txt", "Select" : "Odaberi", "You don’t have permission to upload or create files here" : "Ovdje ne smijete otpremati ili stvarati datoteke", + "New" : "Novo", "Cannot transfer ownership of a file or folder you don't own" : "Ne možete prenijeti vlasništvo nad datotekom ili mapom koja nije u vašem vlasništvu", + "%s%% of %s used" : "Iskorišteno %s%% od %s", "Settings" : "Postavke" },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js index 513b0b96faf..3054195feee 100644 --- a/apps/files/l10n/hu.js +++ b/apps/files/l10n/hu.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Hiba a darabok összerakásakor, állapotkód: {status}", "Actions" : "Műveletek", "Rename" : "Átnevezés", + "Move" : "Áthelyezés", "Copy" : "Másolás", "Choose target folder" : "Válasszon célmappát", "Open" : "Megnyitás", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["köztük %n rejtett","köztük %n rejtett"], "You do not have permission to upload or create files here" : "Nincs jogosultsága fájlok ide feltöltéséhez vagy létrehozásához", "_Uploading %n file_::_Uploading %n files_" : ["%n fájl feltöltése","%n fájl feltöltése"], - "New" : "Új", + "New file/folder menu" : "Új fájl/mappa menü", "Select file range" : "Válasszon fájltartományt", + "{used}%" : "{used}%", "{used} of {quota} used" : "{used} / {quota} felhasználva", "{used} used" : "{used} felhasználva", "\"{name}\" is an invalid file name." : "A(z) „{name}” fájlnév érvénytelen.", @@ -189,8 +191,9 @@ OC.L10N.register( "Templates" : "Sablonok", "Unable to initialize the templates directory" : "A sablonkönyvtár előkészítése sikertelen", "%s used" : "%s használt", - "%s%% of %s used" : "%s %% / %s felhasználva", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s / %2$s felhasználva", + "Files settings" : "Fájlok beállításai", "Show hidden files" : "Rejtett fájlok megjelenítése", "Crop image previews" : "Kép előnézetek vágása", "WebDAV" : "WebDAV", @@ -216,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "Új szövegfájl.txt", "Select" : "Kiválasztás", "You don’t have permission to upload or create files here" : "Nincs jogosultsága fájlok ide feltöltéséhez vagy létrehozásához", + "New" : "Új", "Cannot transfer ownership of a file or folder you don't own" : "Nem ruházható át olyan fájl vagy mappa tulajdonjoga, amely nem Öné", + "%s%% of %s used" : "%s %% / %s felhasználva", "Settings" : "Beállítások" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json index e86a06e612a..05b6db86ccf 100644 --- a/apps/files/l10n/hu.json +++ b/apps/files/l10n/hu.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Hiba a darabok összerakásakor, állapotkód: {status}", "Actions" : "Műveletek", "Rename" : "Átnevezés", + "Move" : "Áthelyezés", "Copy" : "Másolás", "Choose target folder" : "Válasszon célmappát", "Open" : "Megnyitás", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["köztük %n rejtett","köztük %n rejtett"], "You do not have permission to upload or create files here" : "Nincs jogosultsága fájlok ide feltöltéséhez vagy létrehozásához", "_Uploading %n file_::_Uploading %n files_" : ["%n fájl feltöltése","%n fájl feltöltése"], - "New" : "Új", + "New file/folder menu" : "Új fájl/mappa menü", "Select file range" : "Válasszon fájltartományt", + "{used}%" : "{used}%", "{used} of {quota} used" : "{used} / {quota} felhasználva", "{used} used" : "{used} felhasználva", "\"{name}\" is an invalid file name." : "A(z) „{name}” fájlnév érvénytelen.", @@ -187,8 +189,9 @@ "Templates" : "Sablonok", "Unable to initialize the templates directory" : "A sablonkönyvtár előkészítése sikertelen", "%s used" : "%s használt", - "%s%% of %s used" : "%s %% / %s felhasználva", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s / %2$s felhasználva", + "Files settings" : "Fájlok beállításai", "Show hidden files" : "Rejtett fájlok megjelenítése", "Crop image previews" : "Kép előnézetek vágása", "WebDAV" : "WebDAV", @@ -214,7 +217,9 @@ "New text file.txt" : "Új szövegfájl.txt", "Select" : "Kiválasztás", "You don’t have permission to upload or create files here" : "Nincs jogosultsága fájlok ide feltöltéséhez vagy létrehozásához", + "New" : "Új", "Cannot transfer ownership of a file or folder you don't own" : "Nem ruházható át olyan fájl vagy mappa tulajdonjoga, amely nem Öné", + "%s%% of %s used" : "%s %% / %s felhasználva", "Settings" : "Beállítások" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/ia.js b/apps/files/l10n/ia.js index 1931e8c3b94..31e41e03a84 100644 --- a/apps/files/l10n/ia.js +++ b/apps/files/l10n/ia.js @@ -19,6 +19,7 @@ OC.L10N.register( "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})", "Actions" : "Actiones", "Rename" : "Renominar", + "Move" : "Mover", "Copy" : "Copiar", "Delete folder" : "Deler dossier", "Disconnect storage" : "Immagazinage disconnectite ", @@ -48,7 +49,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["includente %n occultate","includente %n occultates"], "_Uploading %n file_::_Uploading %n files_" : ["Incargante %n file","Incargante %n files"], - "New" : "Nove", "\"{name}\" is an invalid file name." : "\"{name}\" es un nomine de file non valide.", "File name cannot be empty." : "Le nomine de file non pote esser vacue.", "\"{name}\" is not an allowed filetype" : "\"{name}\" non es un typo de file valide ", @@ -118,6 +118,7 @@ OC.L10N.register( "New text file.txt" : "Nove texto file.txt", "Select" : "Selectionar", "You don’t have permission to upload or create files here" : "Tu non ha permission pro incargar o crear files ci.", + "New" : "Nove", "Settings" : "Configurationes" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ia.json b/apps/files/l10n/ia.json index 6079caf2e52..7d1e82513ec 100644 --- a/apps/files/l10n/ia.json +++ b/apps/files/l10n/ia.json @@ -17,6 +17,7 @@ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} de {totalSize} ({bitrate})", "Actions" : "Actiones", "Rename" : "Renominar", + "Move" : "Mover", "Copy" : "Copiar", "Delete folder" : "Deler dossier", "Disconnect storage" : "Immagazinage disconnectite ", @@ -46,7 +47,6 @@ "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["includente %n occultate","includente %n occultates"], "_Uploading %n file_::_Uploading %n files_" : ["Incargante %n file","Incargante %n files"], - "New" : "Nove", "\"{name}\" is an invalid file name." : "\"{name}\" es un nomine de file non valide.", "File name cannot be empty." : "Le nomine de file non pote esser vacue.", "\"{name}\" is not an allowed filetype" : "\"{name}\" non es un typo de file valide ", @@ -116,6 +116,7 @@ "New text file.txt" : "Nove texto file.txt", "Select" : "Selectionar", "You don’t have permission to upload or create files here" : "Tu non ha permission pro incargar o crear files ci.", + "New" : "Nove", "Settings" : "Configurationes" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/id.js b/apps/files/l10n/id.js index 9dd3e8ec4d7..41155e6b5ce 100644 --- a/apps/files/l10n/id.js +++ b/apps/files/l10n/id.js @@ -28,6 +28,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Galat saat merakit potongan, kode status {status}", "Actions" : "Tindakan", "Rename" : "Ubah nama", + "Move" : "Pindah", "Copy" : "Salin", "Choose target folder" : "Pilih folder target", "Open" : "Buka", @@ -66,7 +67,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} dan {files}", "_including %n hidden_::_including %n hidden_" : ["Termasuk %n tersembunyi"], "_Uploading %n file_::_Uploading %n files_" : ["Mengunggah %n berkas"], - "New" : "Baru", "Select file range" : "Pilih rentang berkas", "{used} of {quota} used" : "{used} dari {quota} terpakai", "{used} used" : "{used} terpakai", @@ -153,7 +153,6 @@ OC.L10N.register( "Cancel" : "Membatalkan", "Create" : "Buat", "%s used" : "%s digunakan", - "%s%% of %s used" : "%s%% dari %s terpakai", "%1$s of %2$s used" : "%1$s dari %2$s sudah digunakan", "Show hidden files" : "Lihat berkas tersembunyi", "Crop image previews" : "Pangkas pratinjau gambar", @@ -179,7 +178,9 @@ OC.L10N.register( "New text file.txt" : "Teks baru file.txt", "Select" : "Pilih", "You don’t have permission to upload or create files here" : "Anda tidak memiliki akses untuk mengunggah atau membuat berkas disini", + "New" : "Baru", "Cannot transfer ownership of a file or folder you don't own" : "Tidak dapat melakukan transfer kepemilikan dari berkas dan folder yang tidak Anda miliki", + "%s%% of %s used" : "%s%% dari %s terpakai", "Settings" : "Pengaturan" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/id.json b/apps/files/l10n/id.json index 71772a56e2e..589faffae94 100644 --- a/apps/files/l10n/id.json +++ b/apps/files/l10n/id.json @@ -26,6 +26,7 @@ "Error when assembling chunks, status code {status}" : "Galat saat merakit potongan, kode status {status}", "Actions" : "Tindakan", "Rename" : "Ubah nama", + "Move" : "Pindah", "Copy" : "Salin", "Choose target folder" : "Pilih folder target", "Open" : "Buka", @@ -64,7 +65,6 @@ "{dirs} and {files}" : "{dirs} dan {files}", "_including %n hidden_::_including %n hidden_" : ["Termasuk %n tersembunyi"], "_Uploading %n file_::_Uploading %n files_" : ["Mengunggah %n berkas"], - "New" : "Baru", "Select file range" : "Pilih rentang berkas", "{used} of {quota} used" : "{used} dari {quota} terpakai", "{used} used" : "{used} terpakai", @@ -151,7 +151,6 @@ "Cancel" : "Membatalkan", "Create" : "Buat", "%s used" : "%s digunakan", - "%s%% of %s used" : "%s%% dari %s terpakai", "%1$s of %2$s used" : "%1$s dari %2$s sudah digunakan", "Show hidden files" : "Lihat berkas tersembunyi", "Crop image previews" : "Pangkas pratinjau gambar", @@ -177,7 +176,9 @@ "New text file.txt" : "Teks baru file.txt", "Select" : "Pilih", "You don’t have permission to upload or create files here" : "Anda tidak memiliki akses untuk mengunggah atau membuat berkas disini", + "New" : "Baru", "Cannot transfer ownership of a file or folder you don't own" : "Tidak dapat melakukan transfer kepemilikan dari berkas dan folder yang tidak Anda miliki", + "%s%% of %s used" : "%s%% dari %s terpakai", "Settings" : "Pengaturan" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/is.js b/apps/files/l10n/is.js index db2a0b382c9..faacb862a6d 100644 --- a/apps/files/l10n/is.js +++ b/apps/files/l10n/is.js @@ -21,13 +21,16 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "Markmappan \"{dir}\" er ekki lengur til", "Not enough free space" : "Ekki nægilegt pláss", "An unknown error has occurred" : "Óþekkt villa kom upp", + "File could not be uploaded" : "Gat ekki sent inn skrána", "Uploading …" : "Sendi inn …", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} af {totalSize} ({bitrate})", "Uploading that item is not supported" : "Innsending á þessu atriði er ekki studd", "Target folder does not exist any more" : "Markmappan er ekki lengur til", + "Operation is blocked by access control" : "Aðgerðin er hindruð af aðgangsstýringu", "Error when assembling chunks, status code {status}" : "Villa við að setja búta saman, stöðukóði {status}", "Actions" : "Aðgerðir", "Rename" : "Endurnefna", + "Move" : "Færa", "Copy" : "Afrita", "Choose target folder" : "Veldu úttaksmöppu", "Open" : "Opna", @@ -38,6 +41,8 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "Gat ekki lesið upplýsingar um skrána \"{file}\"", "Files" : "Skrár", "Details" : "Nánar", + "Show list view" : "Birta listasýn", + "Show grid view" : "Birta reitasýn", "Pending" : "Í bið", "Unable to determine date" : "Tókst ekki að ákvarða dagsetningu", "This operation is forbidden" : "Þessi aðgerð er bönnuð", @@ -66,7 +71,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} og {files}", "_including %n hidden_::_including %n hidden_" : ["þar á meðal %n falin","þar á meðal %n faldar"], "_Uploading %n file_::_Uploading %n files_" : ["Sendi inn %n skrá","Sendi inn %n skrár"], - "New" : "Nýtt", "Select file range" : "Veldu skráasvið", "{used} of {quota} used" : "{used} af {quota} notað", "{used} used" : "{used} notað", @@ -145,10 +149,17 @@ OC.L10N.register( "Error while loading the file data" : "Villa við að hlaða inn skráagögnum", "Cancel" : "Hætta við", "Create" : "Búa til", + "Create a new file with the selected template" : "Búa til nýja skrá úr völdu sniðmáti", + "Creating file" : "Bý til skrá", + "Blank" : "Tóm", + "Unable to create new file from template" : "Tekst ekki að búa til nýja skrá út frá sniðmáti", + "Set up templates folder" : "Setja upp sniðmátamöppu", + "Templates" : "Sniðmát", + "Unable to initialize the templates directory" : "Tókst ekki að frumstilla sniðmátamöppuna", "%s used" : "%s notað", - "%s%% of %s used" : "%s%% af %s notað", "%1$s of %2$s used" : "%1$s af %2$s notað", "Show hidden files" : "Sýna faldar skrár", + "Crop image previews" : "Skera utan af forskoðun mynda", "WebDAV" : "WebDAV", "Use this address to access your Files via WebDAV" : "Notaðu þetta vistfang til að nálgast skrárnar þínar með WebDAV", "Toggle grid view" : "Víxla reitasýn af/á", @@ -171,7 +182,9 @@ OC.L10N.register( "New text file.txt" : "Ný textaskrá.txt", "Select" : "Velja", "You don’t have permission to upload or create files here" : "Þú hefur ekki heimild til að hlaða inn eða búa til skjöl hér", + "New" : "Nýtt", "Cannot transfer ownership of a file or folder you don't own" : "Ekki er hægt að millifæra eignarhald á skrá eða möppu sem þú átt ekki", + "%s%% of %s used" : "%s%% af %s notað", "Settings" : "Stillingar" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/files/l10n/is.json b/apps/files/l10n/is.json index aaf0c80269f..0051d323d16 100644 --- a/apps/files/l10n/is.json +++ b/apps/files/l10n/is.json @@ -19,13 +19,16 @@ "Target folder \"{dir}\" does not exist any more" : "Markmappan \"{dir}\" er ekki lengur til", "Not enough free space" : "Ekki nægilegt pláss", "An unknown error has occurred" : "Óþekkt villa kom upp", + "File could not be uploaded" : "Gat ekki sent inn skrána", "Uploading …" : "Sendi inn …", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} af {totalSize} ({bitrate})", "Uploading that item is not supported" : "Innsending á þessu atriði er ekki studd", "Target folder does not exist any more" : "Markmappan er ekki lengur til", + "Operation is blocked by access control" : "Aðgerðin er hindruð af aðgangsstýringu", "Error when assembling chunks, status code {status}" : "Villa við að setja búta saman, stöðukóði {status}", "Actions" : "Aðgerðir", "Rename" : "Endurnefna", + "Move" : "Færa", "Copy" : "Afrita", "Choose target folder" : "Veldu úttaksmöppu", "Open" : "Opna", @@ -36,6 +39,8 @@ "Could not load info for file \"{file}\"" : "Gat ekki lesið upplýsingar um skrána \"{file}\"", "Files" : "Skrár", "Details" : "Nánar", + "Show list view" : "Birta listasýn", + "Show grid view" : "Birta reitasýn", "Pending" : "Í bið", "Unable to determine date" : "Tókst ekki að ákvarða dagsetningu", "This operation is forbidden" : "Þessi aðgerð er bönnuð", @@ -64,7 +69,6 @@ "{dirs} and {files}" : "{dirs} og {files}", "_including %n hidden_::_including %n hidden_" : ["þar á meðal %n falin","þar á meðal %n faldar"], "_Uploading %n file_::_Uploading %n files_" : ["Sendi inn %n skrá","Sendi inn %n skrár"], - "New" : "Nýtt", "Select file range" : "Veldu skráasvið", "{used} of {quota} used" : "{used} af {quota} notað", "{used} used" : "{used} notað", @@ -143,10 +147,17 @@ "Error while loading the file data" : "Villa við að hlaða inn skráagögnum", "Cancel" : "Hætta við", "Create" : "Búa til", + "Create a new file with the selected template" : "Búa til nýja skrá úr völdu sniðmáti", + "Creating file" : "Bý til skrá", + "Blank" : "Tóm", + "Unable to create new file from template" : "Tekst ekki að búa til nýja skrá út frá sniðmáti", + "Set up templates folder" : "Setja upp sniðmátamöppu", + "Templates" : "Sniðmát", + "Unable to initialize the templates directory" : "Tókst ekki að frumstilla sniðmátamöppuna", "%s used" : "%s notað", - "%s%% of %s used" : "%s%% af %s notað", "%1$s of %2$s used" : "%1$s af %2$s notað", "Show hidden files" : "Sýna faldar skrár", + "Crop image previews" : "Skera utan af forskoðun mynda", "WebDAV" : "WebDAV", "Use this address to access your Files via WebDAV" : "Notaðu þetta vistfang til að nálgast skrárnar þínar með WebDAV", "Toggle grid view" : "Víxla reitasýn af/á", @@ -169,7 +180,9 @@ "New text file.txt" : "Ný textaskrá.txt", "Select" : "Velja", "You don’t have permission to upload or create files here" : "Þú hefur ekki heimild til að hlaða inn eða búa til skjöl hér", + "New" : "Nýtt", "Cannot transfer ownership of a file or folder you don't own" : "Ekki er hægt að millifæra eignarhald á skrá eða möppu sem þú átt ekki", + "%s%% of %s used" : "%s%% af %s notað", "Settings" : "Stillingar" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index a77e20783b6..64ee4f93972 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Errore durante l'assemblaggio dei blocchi, codice di stato {status}", "Actions" : "Azioni", "Rename" : "Rinomina", + "Move" : "Sposta", "Copy" : "Copia", "Choose target folder" : "Scegli la cartella di destinazione", "Open" : "Apri", @@ -75,7 +76,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["incluso %n nascosto","inclusi %n nascosti","inclusi %n nascosti"], "_Uploading %n file_::_Uploading %n files_" : ["Caricamento di %n file in corso","Caricamento di %n file in corso","Caricamento di %n file in corso"], - "New" : "Nuovo", "Select file range" : "Seleziona intervallo di file", "{used} of {quota} used" : "{used} di {quota} utilizzati", "{used} used" : "{used} utilizzati", @@ -186,7 +186,6 @@ OC.L10N.register( "Templates" : "Modelli", "Unable to initialize the templates directory" : "Impossibile inizializzare la cartella dei modelli", "%s used" : "%s utilizzato", - "%s%% of %s used" : "%s%% di %s utilizzati", "%1$s of %2$s used" : "%1$s di %2$s utilizzati", "Show hidden files" : "Mostra i file nascosti", "Crop image previews" : "Ritaglia le anteprime delle immagini", @@ -213,7 +212,9 @@ OC.L10N.register( "New text file.txt" : "Nuovo file di testo.txt", "Select" : "Seleziona", "You don’t have permission to upload or create files here" : "Qui non hai i permessi per caricare o creare file", + "New" : "Nuovo", "Cannot transfer ownership of a file or folder you don't own" : "Impossibile trasferire la proprietà di un file o di una cartella di altri", + "%s%% of %s used" : "%s%% di %s utilizzati", "Settings" : "Impostazioni" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index f4b99743762..cf6cc4ace42 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Errore durante l'assemblaggio dei blocchi, codice di stato {status}", "Actions" : "Azioni", "Rename" : "Rinomina", + "Move" : "Sposta", "Copy" : "Copia", "Choose target folder" : "Scegli la cartella di destinazione", "Open" : "Apri", @@ -73,7 +74,6 @@ "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["incluso %n nascosto","inclusi %n nascosti","inclusi %n nascosti"], "_Uploading %n file_::_Uploading %n files_" : ["Caricamento di %n file in corso","Caricamento di %n file in corso","Caricamento di %n file in corso"], - "New" : "Nuovo", "Select file range" : "Seleziona intervallo di file", "{used} of {quota} used" : "{used} di {quota} utilizzati", "{used} used" : "{used} utilizzati", @@ -184,7 +184,6 @@ "Templates" : "Modelli", "Unable to initialize the templates directory" : "Impossibile inizializzare la cartella dei modelli", "%s used" : "%s utilizzato", - "%s%% of %s used" : "%s%% di %s utilizzati", "%1$s of %2$s used" : "%1$s di %2$s utilizzati", "Show hidden files" : "Mostra i file nascosti", "Crop image previews" : "Ritaglia le anteprime delle immagini", @@ -211,7 +210,9 @@ "New text file.txt" : "Nuovo file di testo.txt", "Select" : "Seleziona", "You don’t have permission to upload or create files here" : "Qui non hai i permessi per caricare o creare file", + "New" : "Nuovo", "Cannot transfer ownership of a file or folder you don't own" : "Impossibile trasferire la proprietà di un file o di una cartella di altri", + "%s%% of %s used" : "%s%% di %s utilizzati", "Settings" : "Impostazioni" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index 02b2ce509ad..df6036723a8 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -21,6 +21,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "対象フォルダー \"{dir}\" がもう存在しません", "Not enough free space" : "十分な空き容量がありません", "An unknown error has occurred" : "不明なエラーが発生しました", + "File could not be uploaded" : "ファイルをアップロードできませんでした", "Uploading …" : "アップロード中...", "{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中 {loadedSize} ({bitrate})", "Uploading that item is not supported" : "そのアイテムのアップロードに対応していません", @@ -29,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "チャンクを組み立てる際のエラー、ステータスコード{status}", "Actions" : "アクション", "Rename" : "名前の変更", + "Move" : "移動", "Copy" : "コピー", "Choose target folder" : "ターゲットフォルダーを選択", "Open" : "開く", @@ -76,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["%n 個の隠しファイルが含まれています"], "You do not have permission to upload or create files here" : "ここにファイルをアップロードまたは作成する権限がありません", "_Uploading %n file_::_Uploading %n files_" : ["%n 個のファイルをアップロード中"], - "New" : "新規作成", + "New file/folder menu" : "新規ファイル/フォルダメニュー", "Select file range" : "ファイルを範囲選択", + "{used}%" : "{used}%", "{used} of {quota} used" : "{used} / {quota} 使用中", "{used} used" : "{used} 使用中", "\"{name}\" is an invalid file name." : "\"{name}\" は無効なファイル名です。", @@ -188,8 +191,9 @@ OC.L10N.register( "Templates" : "テンプレート", "Unable to initialize the templates directory" : "テンプレートディレクトリを初期化できませんでした", "%s used" : "%s 使用中", - "%s%% of %s used" : "%s%% 使用中、全体は%s", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%2$s 中%1$s 使用中", + "Files settings" : "ファイル設定", "Show hidden files" : "隠しファイルを表示", "Crop image previews" : "プレビュー画像を切り抜く", "WebDAV" : "WebDAV", @@ -215,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "新規のテキストファイル作成", "Select" : "選択", "You don’t have permission to upload or create files here" : "ここにファイルをアップロードまたは作成する権限がありません", + "New" : "新規作成", "Cannot transfer ownership of a file or folder you don't own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません", + "%s%% of %s used" : "%s%% 使用中、全体は%s", "Settings" : "設定" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index 33ff31a3094..9706daa39de 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -19,6 +19,7 @@ "Target folder \"{dir}\" does not exist any more" : "対象フォルダー \"{dir}\" がもう存在しません", "Not enough free space" : "十分な空き容量がありません", "An unknown error has occurred" : "不明なエラーが発生しました", + "File could not be uploaded" : "ファイルをアップロードできませんでした", "Uploading …" : "アップロード中...", "{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中 {loadedSize} ({bitrate})", "Uploading that item is not supported" : "そのアイテムのアップロードに対応していません", @@ -27,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "チャンクを組み立てる際のエラー、ステータスコード{status}", "Actions" : "アクション", "Rename" : "名前の変更", + "Move" : "移動", "Copy" : "コピー", "Choose target folder" : "ターゲットフォルダーを選択", "Open" : "開く", @@ -74,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["%n 個の隠しファイルが含まれています"], "You do not have permission to upload or create files here" : "ここにファイルをアップロードまたは作成する権限がありません", "_Uploading %n file_::_Uploading %n files_" : ["%n 個のファイルをアップロード中"], - "New" : "新規作成", + "New file/folder menu" : "新規ファイル/フォルダメニュー", "Select file range" : "ファイルを範囲選択", + "{used}%" : "{used}%", "{used} of {quota} used" : "{used} / {quota} 使用中", "{used} used" : "{used} 使用中", "\"{name}\" is an invalid file name." : "\"{name}\" は無効なファイル名です。", @@ -186,8 +189,9 @@ "Templates" : "テンプレート", "Unable to initialize the templates directory" : "テンプレートディレクトリを初期化できませんでした", "%s used" : "%s 使用中", - "%s%% of %s used" : "%s%% 使用中、全体は%s", + "%s%%" : "%s%%", "%1$s of %2$s used" : "%2$s 中%1$s 使用中", + "Files settings" : "ファイル設定", "Show hidden files" : "隠しファイルを表示", "Crop image previews" : "プレビュー画像を切り抜く", "WebDAV" : "WebDAV", @@ -213,7 +217,9 @@ "New text file.txt" : "新規のテキストファイル作成", "Select" : "選択", "You don’t have permission to upload or create files here" : "ここにファイルをアップロードまたは作成する権限がありません", + "New" : "新規作成", "Cannot transfer ownership of a file or folder you don't own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません", + "%s%% of %s used" : "%s%% 使用中、全体は%s", "Settings" : "設定" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/ka_GE.js b/apps/files/l10n/ka_GE.js index 4112bfc5402..4970b0605c1 100644 --- a/apps/files/l10n/ka_GE.js +++ b/apps/files/l10n/ka_GE.js @@ -24,6 +24,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "ნაჭრების შეგროვებისას წარმოიშვა შეცდომა, სტატუსის კოდი {status}", "Actions" : "მოქმედებები", "Rename" : "გადარქმევა", + "Move" : "გადატანა", "Copy" : "კოპირება", "Delete file" : "გაუქმდეს ფაილი", "Delete folder" : "დირექტორიის გაუქმება", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} და {files}", "_including %n hidden_::_including %n hidden_" : ["%n დამალულის ჩათვლით","%n დამალულის ჩათვლით"], "_Uploading %n file_::_Uploading %n files_" : ["ვტვირთავთ %n ფაილს","ვტვირთავთ %n ფაილს"], - "New" : "ახალი", "{used} of {quota} used" : "გამოყენებულია {used} სულ {quota}-დან", "{used} used" : "გამოყენებულია {used}", "\"{name}\" is an invalid file name." : "\"{name}\" არასწორი ფაილის სახელია.", @@ -141,6 +141,7 @@ OC.L10N.register( "New text file.txt" : "ახალი ტექსტი file.txt", "Select" : "არჩევა", "You don’t have permission to upload or create files here" : "აქ ფაილების შექმნის ან ატვირთვის უფლება არ გაქვთ", + "New" : "ახალი", "Settings" : "პარამეტრები" }, "nplurals=2; plural=(n!=1);"); diff --git a/apps/files/l10n/ka_GE.json b/apps/files/l10n/ka_GE.json index 889b7f86c80..73efcea379c 100644 --- a/apps/files/l10n/ka_GE.json +++ b/apps/files/l10n/ka_GE.json @@ -22,6 +22,7 @@ "Error when assembling chunks, status code {status}" : "ნაჭრების შეგროვებისას წარმოიშვა შეცდომა, სტატუსის კოდი {status}", "Actions" : "მოქმედებები", "Rename" : "გადარქმევა", + "Move" : "გადატანა", "Copy" : "კოპირება", "Delete file" : "გაუქმდეს ფაილი", "Delete folder" : "დირექტორიის გაუქმება", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} და {files}", "_including %n hidden_::_including %n hidden_" : ["%n დამალულის ჩათვლით","%n დამალულის ჩათვლით"], "_Uploading %n file_::_Uploading %n files_" : ["ვტვირთავთ %n ფაილს","ვტვირთავთ %n ფაილს"], - "New" : "ახალი", "{used} of {quota} used" : "გამოყენებულია {used} სულ {quota}-დან", "{used} used" : "გამოყენებულია {used}", "\"{name}\" is an invalid file name." : "\"{name}\" არასწორი ფაილის სახელია.", @@ -139,6 +139,7 @@ "New text file.txt" : "ახალი ტექსტი file.txt", "Select" : "არჩევა", "You don’t have permission to upload or create files here" : "აქ ფაილების შექმნის ან ატვირთვის უფლება არ გაქვთ", + "New" : "ახალი", "Settings" : "პარამეტრები" },"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js index 19be45a326a..66d3d32cfab 100644 --- a/apps/files/l10n/ko.js +++ b/apps/files/l10n/ko.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}", "Actions" : "작업", "Rename" : "이름 바꾸기", + "Move" : "이동", "Copy" : "복사", "Choose target folder" : "폴더 선택", "Open" : "열기", @@ -71,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} 그리고 {files}", "_including %n hidden_::_including %n hidden_" : ["%n개의 숨겨진 파일 포함"], "_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"], - "New" : "새로 만들기", "{used} of {quota} used" : "{quota} 중 {used} 사용함", "{used} used" : "{used} 사용함", "\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.", @@ -204,6 +204,7 @@ OC.L10N.register( "New text file.txt" : "새 텍스트 파일.txt", "Select" : "선택", "You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다", + "New" : "새로 만들기", "Cannot transfer ownership of a file or folder you don't own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음", "Settings" : "설정" }, diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json index 71f2cba6aea..f74fb821d31 100644 --- a/apps/files/l10n/ko.json +++ b/apps/files/l10n/ko.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}", "Actions" : "작업", "Rename" : "이름 바꾸기", + "Move" : "이동", "Copy" : "복사", "Choose target folder" : "폴더 선택", "Open" : "열기", @@ -69,7 +70,6 @@ "{dirs} and {files}" : "{dirs} 그리고 {files}", "_including %n hidden_::_including %n hidden_" : ["%n개의 숨겨진 파일 포함"], "_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"], - "New" : "새로 만들기", "{used} of {quota} used" : "{quota} 중 {used} 사용함", "{used} used" : "{used} 사용함", "\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.", @@ -202,6 +202,7 @@ "New text file.txt" : "새 텍스트 파일.txt", "Select" : "선택", "You don’t have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다", + "New" : "새로 만들기", "Cannot transfer ownership of a file or folder you don't own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음", "Settings" : "설정" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/files/l10n/lb.js b/apps/files/l10n/lb.js index 3fc9eb81dfd..57605e0279f 100644 --- a/apps/files/l10n/lb.js +++ b/apps/files/l10n/lb.js @@ -19,6 +19,7 @@ OC.L10N.register( "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} vun {totalSize} ({bitrate})", "Actions" : "Aktiounen", "Rename" : "Ëmbenennen", + "Move" : "Verschieben", "Delete folder" : "Dossier läschen", "Disconnect storage" : "Net connectéierten Späicher", "Could not load info for file \"{file}\"" : "Et konnten keng Informatiounen zu {file} gelueden ginn", @@ -47,7 +48,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} an {files}", "_including %n hidden_::_including %n hidden_" : ["Beinhaltet ¦%n verstoppte Saach","Beinhaltet ¦%n verstoppte Saachen"], "_Uploading %n file_::_Uploading %n files_" : ["Am Gaangen ¦%n Datei eropzelueden","Am Gaangen ¦%n Dateien eropzelueden"], - "New" : "Nei", "\"{name}\" is an invalid file name." : "\"{name}\" ass een ongültegen Numm", "File name cannot be empty." : "D'Datei kann net eidel sinn", "\"{name}\" is not an allowed filetype" : "\"{name}\" ass een ongültegen Typ vun Datei", @@ -112,6 +112,7 @@ OC.L10N.register( "New text file.txt" : "Neien Text file.txt", "Select" : "Auswielen", "You don’t have permission to upload or create files here" : "Du hues net genuch Rechter hei Dokumenter eropzelueden oder ze erstellen", + "New" : "Nei", "Settings" : "Astellungen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/lb.json b/apps/files/l10n/lb.json index a0959b687f6..1dbb864167c 100644 --- a/apps/files/l10n/lb.json +++ b/apps/files/l10n/lb.json @@ -17,6 +17,7 @@ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} vun {totalSize} ({bitrate})", "Actions" : "Aktiounen", "Rename" : "Ëmbenennen", + "Move" : "Verschieben", "Delete folder" : "Dossier läschen", "Disconnect storage" : "Net connectéierten Späicher", "Could not load info for file \"{file}\"" : "Et konnten keng Informatiounen zu {file} gelueden ginn", @@ -45,7 +46,6 @@ "{dirs} and {files}" : "{dirs} an {files}", "_including %n hidden_::_including %n hidden_" : ["Beinhaltet ¦%n verstoppte Saach","Beinhaltet ¦%n verstoppte Saachen"], "_Uploading %n file_::_Uploading %n files_" : ["Am Gaangen ¦%n Datei eropzelueden","Am Gaangen ¦%n Dateien eropzelueden"], - "New" : "Nei", "\"{name}\" is an invalid file name." : "\"{name}\" ass een ongültegen Numm", "File name cannot be empty." : "D'Datei kann net eidel sinn", "\"{name}\" is not an allowed filetype" : "\"{name}\" ass een ongültegen Typ vun Datei", @@ -110,6 +110,7 @@ "New text file.txt" : "Neien Text file.txt", "Select" : "Auswielen", "You don’t have permission to upload or create files here" : "Du hues net genuch Rechter hei Dokumenter eropzelueden oder ze erstellen", + "New" : "Nei", "Settings" : "Astellungen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js index acbc74fe367..6eb5141ff67 100644 --- a/apps/files/l10n/lt_LT.js +++ b/apps/files/l10n/lt_LT.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Klaida surenkant dalis, klaidos kodas {status}", "Actions" : "Veiksmai", "Rename" : "Pervadinti", + "Move" : "Perkelti", "Copy" : "Kopijuoti", "Choose target folder" : "Pasirinkite paskirties aplanką", "Open" : "Atverti", @@ -38,6 +39,8 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui „{file}“", "Files" : "Failai", "Details" : "Duomenys", + "Show list view" : "Rodyti sąrašo rodinį", + "Show grid view" : "Rodyti tinklelio rodinį", "Pending" : "Laukiantis", "Unable to determine date" : "Nepavyksta nustatyti datos", "This operation is forbidden" : "Ši operacija yra uždrausta", @@ -68,8 +71,8 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} ir {files}", "_including %n hidden_::_including %n hidden_" : ["įskaitant %n paslėptą","įskaitant %n paslėptus","įskaitant %n paslėptų","įskaitant %n paslėptą"], "_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų","Įkeliamas %n failas"], - "New" : "Naujas", "Select file range" : "Žymėti failų rėžį", + "{used}%" : "{used}%", "{used} of {quota} used" : "panaudota {used} iš {quota}", "{used} used" : "{used} naudojama", "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas bylos pavadinimas.", @@ -171,8 +174,9 @@ OC.L10N.register( "Templates" : "Šablonai", "Unable to initialize the templates directory" : "Nepavyko inicijuoti šablonų katalogo", "%s used" : "%s panaudota", - "%s%% of %s used" : "naudojama %s%% iš %s", + "%s%%" : "%s%%", "%1$s of %2$s used" : "naudojama %1$s iš %2$s", + "Files settings" : "Failų nustatymai", "Show hidden files" : "Rodyti paslėptus failus", "Crop image previews" : "Apkirpti paveikslų peržiūras", "WebDAV" : "WebDAV", @@ -197,7 +201,9 @@ OC.L10N.register( "New text file.txt" : "Naujas tekstinis failas.txt", "Select" : "Pasirinkti", "You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus", + "New" : "Naujas", "Cannot transfer ownership of a file or folder you don't own" : "Negalima perduoti, failo aplanko, kuris jums nepriklauso, nuosavybės", + "%s%% of %s used" : "naudojama %s%% iš %s", "Settings" : "Nustatymai" }, "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json index d80545d9a03..6738e225a85 100644 --- a/apps/files/l10n/lt_LT.json +++ b/apps/files/l10n/lt_LT.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Klaida surenkant dalis, klaidos kodas {status}", "Actions" : "Veiksmai", "Rename" : "Pervadinti", + "Move" : "Perkelti", "Copy" : "Kopijuoti", "Choose target folder" : "Pasirinkite paskirties aplanką", "Open" : "Atverti", @@ -36,6 +37,8 @@ "Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui „{file}“", "Files" : "Failai", "Details" : "Duomenys", + "Show list view" : "Rodyti sąrašo rodinį", + "Show grid view" : "Rodyti tinklelio rodinį", "Pending" : "Laukiantis", "Unable to determine date" : "Nepavyksta nustatyti datos", "This operation is forbidden" : "Ši operacija yra uždrausta", @@ -66,8 +69,8 @@ "{dirs} and {files}" : "{dirs} ir {files}", "_including %n hidden_::_including %n hidden_" : ["įskaitant %n paslėptą","įskaitant %n paslėptus","įskaitant %n paslėptų","įskaitant %n paslėptą"], "_Uploading %n file_::_Uploading %n files_" : ["Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų","Įkeliamas %n failas"], - "New" : "Naujas", "Select file range" : "Žymėti failų rėžį", + "{used}%" : "{used}%", "{used} of {quota} used" : "panaudota {used} iš {quota}", "{used} used" : "{used} naudojama", "\"{name}\" is an invalid file name." : "„{name}“ yra netinkamas bylos pavadinimas.", @@ -169,8 +172,9 @@ "Templates" : "Šablonai", "Unable to initialize the templates directory" : "Nepavyko inicijuoti šablonų katalogo", "%s used" : "%s panaudota", - "%s%% of %s used" : "naudojama %s%% iš %s", + "%s%%" : "%s%%", "%1$s of %2$s used" : "naudojama %1$s iš %2$s", + "Files settings" : "Failų nustatymai", "Show hidden files" : "Rodyti paslėptus failus", "Crop image previews" : "Apkirpti paveikslų peržiūras", "WebDAV" : "WebDAV", @@ -195,7 +199,9 @@ "New text file.txt" : "Naujas tekstinis failas.txt", "Select" : "Pasirinkti", "You don’t have permission to upload or create files here" : "Jūs neturite leidimo čia įkelti arba kurti failus", + "New" : "Naujas", "Cannot transfer ownership of a file or folder you don't own" : "Negalima perduoti, failo aplanko, kuris jums nepriklauso, nuosavybės", + "%s%% of %s used" : "naudojama %s%% iš %s", "Settings" : "Nustatymai" },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js index b111e692d68..2fff2f03264 100644 --- a/apps/files/l10n/lv.js +++ b/apps/files/l10n/lv.js @@ -25,6 +25,7 @@ OC.L10N.register( "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} no {totalSize} ({bitrate})", "Actions" : "Darbības", "Rename" : "Pārsaukt", + "Move" : "Pārvietot", "Copy" : "Kopēt", "Open" : "Atvērt", "Delete file" : "Dzēst datni", @@ -57,7 +58,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} un {files}", "_including %n hidden_::_including %n hidden_" : ["ieskaitot %n paslēptos","ieskaitot %n paslēptos","ieskaitot %n paslēptos"], "_Uploading %n file_::_Uploading %n files_" : ["%n","Augšupielāde %n failu","Augšupielādē %n datnes"], - "New" : "Jauna", "\"{name}\" is an invalid file name." : "\"{name}\" ir nepareizs datnes nosaukums.", "File name cannot be empty." : "Datnes nosaukums nevar būt tukšs.", "\"/\" is not allowed inside a file name." : "\"/\" nav atļauts faila nosaukumā.", @@ -136,6 +136,7 @@ OC.L10N.register( "New text file.txt" : "Jauna teksta datne.txt", "Select" : "Norādīt", "You don’t have permission to upload or create files here" : "Jums nav tiesību šeit augšupielādēt vai veidot datnes", + "New" : "Jauna", "Settings" : "Iestatījumi" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json index 2d9af909f04..f2c956a0d8f 100644 --- a/apps/files/l10n/lv.json +++ b/apps/files/l10n/lv.json @@ -23,6 +23,7 @@ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} no {totalSize} ({bitrate})", "Actions" : "Darbības", "Rename" : "Pārsaukt", + "Move" : "Pārvietot", "Copy" : "Kopēt", "Open" : "Atvērt", "Delete file" : "Dzēst datni", @@ -55,7 +56,6 @@ "{dirs} and {files}" : "{dirs} un {files}", "_including %n hidden_::_including %n hidden_" : ["ieskaitot %n paslēptos","ieskaitot %n paslēptos","ieskaitot %n paslēptos"], "_Uploading %n file_::_Uploading %n files_" : ["%n","Augšupielāde %n failu","Augšupielādē %n datnes"], - "New" : "Jauna", "\"{name}\" is an invalid file name." : "\"{name}\" ir nepareizs datnes nosaukums.", "File name cannot be empty." : "Datnes nosaukums nevar būt tukšs.", "\"/\" is not allowed inside a file name." : "\"/\" nav atļauts faila nosaukumā.", @@ -134,6 +134,7 @@ "New text file.txt" : "Jauna teksta datne.txt", "Select" : "Norādīt", "You don’t have permission to upload or create files here" : "Jums nav tiesību šeit augšupielādēt vai veidot datnes", + "New" : "Jauna", "Settings" : "Iestatījumi" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js index 747fc60505f..4220d7fee91 100644 --- a/apps/files/l10n/mk.js +++ b/apps/files/l10n/mk.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Грешка при составување на парчиња, статусен код {status}", "Actions" : "Акции", "Rename" : "Преименувај", + "Move" : "Премести", "Copy" : "Копирај", "Choose target folder" : "Избери папка", "Open" : "Отвори", @@ -42,6 +43,10 @@ OC.L10N.register( "Details" : "Детали:", "Show list view" : "Прикажи поглед во листа", "Show grid view" : "Прикажи поглед во мрежа", + "Please select tag(s) to add to the selection" : "Избери ознаки за одбележаното", + "Apply tag(s) to selection" : "Примени ознаки на обележаните", + "Select directory \"{dirName}\"" : "Избери папка \"{dirName}\"", + "Select file \"{fileName}\"" : "Избери датотека \"{fileName}\"", "Pending" : "Чека", "Unable to determine date" : "Неможе да се одреди датумот", "This operation is forbidden" : "Операцијата не е дозволена", @@ -73,7 +78,7 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["вклучувајќи %n скриена","вклучувајќи %n скриени"], "You do not have permission to upload or create files here" : "Немате дозвола да прикачувате или да креирате датотеки овде", "_Uploading %n file_::_Uploading %n files_" : ["Прикачување %n датотека","Прикачување на %n датотеки"], - "New" : "Ново", + "New file/folder menu" : "Мени Нова датотека/папка", "Select file range" : "Избери опсег на датотеки", "{used} of {quota} used" : "Искористени {used} од {quota}", "{used} used" : "Искористени {used}", @@ -185,12 +190,13 @@ OC.L10N.register( "Templates" : "Шаблони", "Unable to initialize the templates directory" : "Не може да се иницијализира папка за шаблони", "%s used" : "Искористено %s", - "%s%% of %s used" : "Искорестено%s%% од %s ", "%1$s of %2$s used" : "Искористено %1$s од %2$s", + "Files settings" : "Параметри за датотеки", "Show hidden files" : "Прикажи сокриени датотеки", "Crop image previews" : "Исечи ја сликата за преглед", "WebDAV" : "WebDAV", "Use this address to access your Files via WebDAV" : "Користи ја оваа адреса за пристап до вашите датотеки преку WebDAV", + "Toggle %1$s sublist" : "Вклучи %1$s подлисти", "Toggle grid view" : "Промена во мрежа", "No files in here" : "Тука нема датотеки", "Upload some content or sync with your devices!" : "Прикачете некоја содржина или синхронизирајте со вашите уреди!", @@ -211,7 +217,9 @@ OC.L10N.register( "New text file.txt" : "Нова текстуална датотека file.txt", "Select" : "Избери", "You don’t have permission to upload or create files here" : "Немате дозвола да прикачувате или да креирате датотеки", + "New" : "Ново", "Cannot transfer ownership of a file or folder you don't own" : "Неможете да направите трансвер на сопственот на папка која не е ваша", + "%s%% of %s used" : "Искорестено%s%% од %s ", "Settings" : "Параметри" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json index c6d716108a4..89a167c3f25 100644 --- a/apps/files/l10n/mk.json +++ b/apps/files/l10n/mk.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Грешка при составување на парчиња, статусен код {status}", "Actions" : "Акции", "Rename" : "Преименувај", + "Move" : "Премести", "Copy" : "Копирај", "Choose target folder" : "Избери папка", "Open" : "Отвори", @@ -40,6 +41,10 @@ "Details" : "Детали:", "Show list view" : "Прикажи поглед во листа", "Show grid view" : "Прикажи поглед во мрежа", + "Please select tag(s) to add to the selection" : "Избери ознаки за одбележаното", + "Apply tag(s) to selection" : "Примени ознаки на обележаните", + "Select directory \"{dirName}\"" : "Избери папка \"{dirName}\"", + "Select file \"{fileName}\"" : "Избери датотека \"{fileName}\"", "Pending" : "Чека", "Unable to determine date" : "Неможе да се одреди датумот", "This operation is forbidden" : "Операцијата не е дозволена", @@ -71,7 +76,7 @@ "_including %n hidden_::_including %n hidden_" : ["вклучувајќи %n скриена","вклучувајќи %n скриени"], "You do not have permission to upload or create files here" : "Немате дозвола да прикачувате или да креирате датотеки овде", "_Uploading %n file_::_Uploading %n files_" : ["Прикачување %n датотека","Прикачување на %n датотеки"], - "New" : "Ново", + "New file/folder menu" : "Мени Нова датотека/папка", "Select file range" : "Избери опсег на датотеки", "{used} of {quota} used" : "Искористени {used} од {quota}", "{used} used" : "Искористени {used}", @@ -183,12 +188,13 @@ "Templates" : "Шаблони", "Unable to initialize the templates directory" : "Не може да се иницијализира папка за шаблони", "%s used" : "Искористено %s", - "%s%% of %s used" : "Искорестено%s%% од %s ", "%1$s of %2$s used" : "Искористено %1$s од %2$s", + "Files settings" : "Параметри за датотеки", "Show hidden files" : "Прикажи сокриени датотеки", "Crop image previews" : "Исечи ја сликата за преглед", "WebDAV" : "WebDAV", "Use this address to access your Files via WebDAV" : "Користи ја оваа адреса за пристап до вашите датотеки преку WebDAV", + "Toggle %1$s sublist" : "Вклучи %1$s подлисти", "Toggle grid view" : "Промена во мрежа", "No files in here" : "Тука нема датотеки", "Upload some content or sync with your devices!" : "Прикачете некоја содржина или синхронизирајте со вашите уреди!", @@ -209,7 +215,9 @@ "New text file.txt" : "Нова текстуална датотека file.txt", "Select" : "Избери", "You don’t have permission to upload or create files here" : "Немате дозвола да прикачувате или да креирате датотеки", + "New" : "Ново", "Cannot transfer ownership of a file or folder you don't own" : "Неможете да направите трансвер на сопственот на папка која не е ваша", + "%s%% of %s used" : "Искорестено%s%% од %s ", "Settings" : "Параметри" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/files/l10n/mn.js b/apps/files/l10n/mn.js index 0a09afd7c7d..7e513e03bb0 100644 --- a/apps/files/l10n/mn.js +++ b/apps/files/l10n/mn.js @@ -27,6 +27,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Бүрдэл хэсгүүдийг нэгтгэхэд алдаа гарлаа. Төлвийн код {status}", "Actions" : "Үйл ажиллагаа", "Rename" : "Нэр өөрчлөх", + "Move" : "Зөөх", "Copy" : "Хуулах", "Open" : "Онгойлгох", "Delete file" : "Файл устгах", @@ -62,7 +63,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} болон {files}", "_including %n hidden_::_including %n hidden_" : ["нуугдсан %n хамруулан","нуугдсан %n хамруулан"], "_Uploading %n file_::_Uploading %n files_" : ["Файлыг байршуулж байна","%n файлыг байршуулж байна"], - "New" : "Шинэ", "{used} of {quota} used" : "{quota} оноосноос {used} хэрэглэсэн", "{used} used" : "{user} хэрэглэсэн", "\"{name}\" is an invalid file name." : "\"{name}\" нь хүчин төгөлдөр бус файлын нэр", @@ -130,6 +130,7 @@ OC.L10N.register( "New text file.txt" : "шинэ текст file.txt", "Select" : "Сонгох", "You don’t have permission to upload or create files here" : "Та энэ байршилд файл үүсгэх эсвэл байршуулах эрхгүй байна.", + "New" : "Шинэ", "Settings" : "Тохиргоо" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/mn.json b/apps/files/l10n/mn.json index 2601ba6b4b8..1d497fa6a76 100644 --- a/apps/files/l10n/mn.json +++ b/apps/files/l10n/mn.json @@ -25,6 +25,7 @@ "Error when assembling chunks, status code {status}" : "Бүрдэл хэсгүүдийг нэгтгэхэд алдаа гарлаа. Төлвийн код {status}", "Actions" : "Үйл ажиллагаа", "Rename" : "Нэр өөрчлөх", + "Move" : "Зөөх", "Copy" : "Хуулах", "Open" : "Онгойлгох", "Delete file" : "Файл устгах", @@ -60,7 +61,6 @@ "{dirs} and {files}" : "{dirs} болон {files}", "_including %n hidden_::_including %n hidden_" : ["нуугдсан %n хамруулан","нуугдсан %n хамруулан"], "_Uploading %n file_::_Uploading %n files_" : ["Файлыг байршуулж байна","%n файлыг байршуулж байна"], - "New" : "Шинэ", "{used} of {quota} used" : "{quota} оноосноос {used} хэрэглэсэн", "{used} used" : "{user} хэрэглэсэн", "\"{name}\" is an invalid file name." : "\"{name}\" нь хүчин төгөлдөр бус файлын нэр", @@ -128,6 +128,7 @@ "New text file.txt" : "шинэ текст file.txt", "Select" : "Сонгох", "You don’t have permission to upload or create files here" : "Та энэ байршилд файл үүсгэх эсвэл байршуулах эрхгүй байна.", + "New" : "Шинэ", "Settings" : "Тохиргоо" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js index 535aa4800ea..bf6852dc0a6 100644 --- a/apps/files/l10n/nb.js +++ b/apps/files/l10n/nb.js @@ -11,8 +11,8 @@ OC.L10N.register( "Home" : "Hjem", "Close" : "Lukk", "Favorites" : "Favoritter", - "Could not create folder \"{dir}\"" : "Klarete ikke å opprette mappe \"{dir}\"", - "This will stop your current uploads." : "Dette fille stoppe dine nåværende opplastinger.", + "Could not create folder \"{dir}\"" : "Kunne ikke å opprette mappe \"{dir}\"", + "This will stop your current uploads." : "Dette vil stoppe dine nåværende opplastinger.", "Upload cancelled." : "Opplasting avbrutt.", "Processing files …" : "Prosesserer filer…", "…" : "…", @@ -21,6 +21,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "Målmappen \"{dir}\" finnes ikke lenger", "Not enough free space" : "Ikke nok ledig diskplass", "An unknown error has occurred" : "En ukjent feil oppstod", + "File could not be uploaded" : "Fil kunne ikke lastes opp", "Uploading …" : "Laster opp…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} av {totalSize} ({bitrate})", "Uploading that item is not supported" : "Opplastning av det elementet er ikke støttet", @@ -29,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Feil under sammenkobling av biter, statuskode {status}", "Actions" : "Handlinger", "Rename" : "Gi nytt navn", + "Move" : "Flytt", "Copy" : "Kopier", "Choose target folder" : "Velg målmappe", "Open" : "Åpne", @@ -39,6 +41,10 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "Klarte ikke å hente informasjon som filen \"{file}\"", "Files" : "Filer", "Details" : "Detaljer", + "Show list view" : "Vis listevisning", + "Show grid view" : "Vis rutenett-visning", + "Select directory \"{dirName}\"" : "Velg mappe \"{dirName}\"", + "Select file \"{fileName}\"" : "Velg fil \"{fileName}\"", "Pending" : "Venter", "Unable to determine date" : "Kan ikke fastslå datoen", "This operation is forbidden" : "Operasjonen er forbudt", @@ -56,7 +62,7 @@ OC.L10N.register( "Could not rename \"{fileName}\"" : "Klarte ikke å gi \"{fileName}\" nytt navn", "Could not create file \"{file}\"" : "Klarte ikke å opprette fil \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Klarte ikke å opprette fil \"{file}\" fordi den finnes allerede", - "Could not create folder \"{dir}\" because it already exists" : "Klarete ikke å opprette mappe \"{dir}\" fordi den finnes allerede", + "Could not create folder \"{dir}\" because it already exists" : "Kunne ikke å opprette mappe \"{dir}\" fordi den finnes allerede", "Could not fetch file details \"{file}\"" : "Kunne ikke hente fildetaljene \"{file}\"", "Error deleting file \"{fileName}\"." : "Feil ved sletting av fil \"{fileName}\".", "No search results in other folders for {tag}{filter}{endtag}" : "Ingen søkeresultater i andre mapper etter {tag}{filter}{endtag}", @@ -68,8 +74,9 @@ OC.L10N.register( "_%n file_::_%n files_" : ["%n fil","%n filer"], "{dirs} and {files}" : "{dirs} og {files}", "_including %n hidden_::_including %n hidden_" : ["Inkludert %n skjult","Inkludert %n skjulte"], + "You do not have permission to upload or create files here" : "Du har ikke tilgang til å laste opp eller opprette filer her", "_Uploading %n file_::_Uploading %n files_" : ["Laster opp %n fil","Laster opp %n filer"], - "New" : "Ny", + "New file/folder menu" : "Ny fil/mappe-meny", "Select file range" : "Velg filutvalg", "{used} of {quota} used" : "{used} av {quota} brukt", "{used} used" : "{used} brukt", @@ -123,8 +130,14 @@ OC.L10N.register( "{user} deleted an encrypted file in {file}" : "{user} slettet en kryptert fil i {file}", "You restored {file}" : "Du gjenopprettet {file}", "{user} restored {file}" : "{user} gjenopprettet {file}", + "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Du endret navn på {oldfile} (skjult) til {newfile} (skjult)", + "You renamed {oldfile} (hidden) to {newfile}" : "Du endret navn på {oldfile} (skjult) til {newfile}", + "You renamed {oldfile} to {newfile} (hidden)" : "Du endret navn på {oldfile} til {newfile} (skjult)", "You renamed {oldfile} to {newfile}" : "Du endret navn på {oldfile} til {newfile}", - "{user} renamed {oldfile} to {newfile}" : "{user} endret navn på {oldfile} til {newfile}", + "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : " {user} endret navn på {oldfile} (skjult) til {newfile} (skjult)", + "{user} renamed {oldfile} (hidden) to {newfile}" : " {user} endret navn på {oldfile} (skjult) til {newfile}", + "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} endret navn på {oldfile} til {newfile} (skjult)", + "{user} renamed {oldfile} to {newfile}" : " {user} endret navn på {oldfile} til {newfile}", "You moved {oldfile} to {newfile}" : "Du flyttet {oldfile} til {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} flyttet {oldfile} til {newfile}", "A file has been added to or removed from your <strong>favorites</strong>" : "En fil har blitt lagt til eller fjernet fra dine <strong>favoritter</strong>", @@ -160,9 +173,10 @@ OC.L10N.register( "Error while loading the file data" : "Feil ved lasting av fildata", "Cancel" : "Avbryt", "Create" : "Opprett", + "Creating file" : "Oppretter fil", "%s used" : "%s brukt", - "%s%% of %s used" : "%s%% av %s brukt", "%1$s of %2$s used" : "%1$s av %2$s brukt", + "Files settings" : "Filinnstillinger", "Show hidden files" : "Vis skjulte filer", "WebDAV" : "WebDAV", "Use this address to access your Files via WebDAV" : "Bruk denne adressen for tilgang til filene dine via WebDAV", @@ -186,7 +200,9 @@ OC.L10N.register( "New text file.txt" : "Ny tekstfil.txt", "Select" : "Velg", "You don’t have permission to upload or create files here" : "Du har ikke tillatelse til å laste opp eller opprette filer her", + "New" : "Ny", "Cannot transfer ownership of a file or folder you don't own" : "Kan ikke overføre eierskap til en fil eller mappe du ikke eier", + "%s%% of %s used" : "%s%% av %s brukt", "Settings" : "Innstillinger" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json index ae26fc9d169..f16a6847eb3 100644 --- a/apps/files/l10n/nb.json +++ b/apps/files/l10n/nb.json @@ -9,8 +9,8 @@ "Home" : "Hjem", "Close" : "Lukk", "Favorites" : "Favoritter", - "Could not create folder \"{dir}\"" : "Klarete ikke å opprette mappe \"{dir}\"", - "This will stop your current uploads." : "Dette fille stoppe dine nåværende opplastinger.", + "Could not create folder \"{dir}\"" : "Kunne ikke å opprette mappe \"{dir}\"", + "This will stop your current uploads." : "Dette vil stoppe dine nåværende opplastinger.", "Upload cancelled." : "Opplasting avbrutt.", "Processing files …" : "Prosesserer filer…", "…" : "…", @@ -19,6 +19,7 @@ "Target folder \"{dir}\" does not exist any more" : "Målmappen \"{dir}\" finnes ikke lenger", "Not enough free space" : "Ikke nok ledig diskplass", "An unknown error has occurred" : "En ukjent feil oppstod", + "File could not be uploaded" : "Fil kunne ikke lastes opp", "Uploading …" : "Laster opp…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} av {totalSize} ({bitrate})", "Uploading that item is not supported" : "Opplastning av det elementet er ikke støttet", @@ -27,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Feil under sammenkobling av biter, statuskode {status}", "Actions" : "Handlinger", "Rename" : "Gi nytt navn", + "Move" : "Flytt", "Copy" : "Kopier", "Choose target folder" : "Velg målmappe", "Open" : "Åpne", @@ -37,6 +39,10 @@ "Could not load info for file \"{file}\"" : "Klarte ikke å hente informasjon som filen \"{file}\"", "Files" : "Filer", "Details" : "Detaljer", + "Show list view" : "Vis listevisning", + "Show grid view" : "Vis rutenett-visning", + "Select directory \"{dirName}\"" : "Velg mappe \"{dirName}\"", + "Select file \"{fileName}\"" : "Velg fil \"{fileName}\"", "Pending" : "Venter", "Unable to determine date" : "Kan ikke fastslå datoen", "This operation is forbidden" : "Operasjonen er forbudt", @@ -54,7 +60,7 @@ "Could not rename \"{fileName}\"" : "Klarte ikke å gi \"{fileName}\" nytt navn", "Could not create file \"{file}\"" : "Klarte ikke å opprette fil \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Klarte ikke å opprette fil \"{file}\" fordi den finnes allerede", - "Could not create folder \"{dir}\" because it already exists" : "Klarete ikke å opprette mappe \"{dir}\" fordi den finnes allerede", + "Could not create folder \"{dir}\" because it already exists" : "Kunne ikke å opprette mappe \"{dir}\" fordi den finnes allerede", "Could not fetch file details \"{file}\"" : "Kunne ikke hente fildetaljene \"{file}\"", "Error deleting file \"{fileName}\"." : "Feil ved sletting av fil \"{fileName}\".", "No search results in other folders for {tag}{filter}{endtag}" : "Ingen søkeresultater i andre mapper etter {tag}{filter}{endtag}", @@ -66,8 +72,9 @@ "_%n file_::_%n files_" : ["%n fil","%n filer"], "{dirs} and {files}" : "{dirs} og {files}", "_including %n hidden_::_including %n hidden_" : ["Inkludert %n skjult","Inkludert %n skjulte"], + "You do not have permission to upload or create files here" : "Du har ikke tilgang til å laste opp eller opprette filer her", "_Uploading %n file_::_Uploading %n files_" : ["Laster opp %n fil","Laster opp %n filer"], - "New" : "Ny", + "New file/folder menu" : "Ny fil/mappe-meny", "Select file range" : "Velg filutvalg", "{used} of {quota} used" : "{used} av {quota} brukt", "{used} used" : "{used} brukt", @@ -121,8 +128,14 @@ "{user} deleted an encrypted file in {file}" : "{user} slettet en kryptert fil i {file}", "You restored {file}" : "Du gjenopprettet {file}", "{user} restored {file}" : "{user} gjenopprettet {file}", + "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Du endret navn på {oldfile} (skjult) til {newfile} (skjult)", + "You renamed {oldfile} (hidden) to {newfile}" : "Du endret navn på {oldfile} (skjult) til {newfile}", + "You renamed {oldfile} to {newfile} (hidden)" : "Du endret navn på {oldfile} til {newfile} (skjult)", "You renamed {oldfile} to {newfile}" : "Du endret navn på {oldfile} til {newfile}", - "{user} renamed {oldfile} to {newfile}" : "{user} endret navn på {oldfile} til {newfile}", + "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : " {user} endret navn på {oldfile} (skjult) til {newfile} (skjult)", + "{user} renamed {oldfile} (hidden) to {newfile}" : " {user} endret navn på {oldfile} (skjult) til {newfile}", + "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} endret navn på {oldfile} til {newfile} (skjult)", + "{user} renamed {oldfile} to {newfile}" : " {user} endret navn på {oldfile} til {newfile}", "You moved {oldfile} to {newfile}" : "Du flyttet {oldfile} til {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} flyttet {oldfile} til {newfile}", "A file has been added to or removed from your <strong>favorites</strong>" : "En fil har blitt lagt til eller fjernet fra dine <strong>favoritter</strong>", @@ -158,9 +171,10 @@ "Error while loading the file data" : "Feil ved lasting av fildata", "Cancel" : "Avbryt", "Create" : "Opprett", + "Creating file" : "Oppretter fil", "%s used" : "%s brukt", - "%s%% of %s used" : "%s%% av %s brukt", "%1$s of %2$s used" : "%1$s av %2$s brukt", + "Files settings" : "Filinnstillinger", "Show hidden files" : "Vis skjulte filer", "WebDAV" : "WebDAV", "Use this address to access your Files via WebDAV" : "Bruk denne adressen for tilgang til filene dine via WebDAV", @@ -184,7 +198,9 @@ "New text file.txt" : "Ny tekstfil.txt", "Select" : "Velg", "You don’t have permission to upload or create files here" : "Du har ikke tillatelse til å laste opp eller opprette filer her", + "New" : "Ny", "Cannot transfer ownership of a file or folder you don't own" : "Kan ikke overføre eierskap til en fil eller mappe du ikke eier", + "%s%% of %s used" : "%s%% av %s brukt", "Settings" : "Innstillinger" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index 9338a79692c..67e539f7c8e 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Fout tijdens samenvoegen van brokken, status code {status}", "Actions" : "Acties", "Rename" : "Naam wijzigen", + "Move" : "Verplaatsen", "Copy" : "Kopiëren", "Choose target folder" : "Kies doelmap…", "Open" : "Openen", @@ -71,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} en {files}", "_including %n hidden_::_including %n hidden_" : ["inclusief %n verborgen","inclusief %n verborgen"], "_Uploading %n file_::_Uploading %n files_" : ["%n bestand aan het uploaden","%n bestanden aan het uploaden"], - "New" : "Nieuw", "Select file range" : "Kies een reeks bestanden", "{used} of {quota} used" : "{used} van {quota} gebruikt", "{used} used" : "{used} gebruikt", @@ -182,7 +182,6 @@ OC.L10N.register( "Templates" : "Sjablonen", "Unable to initialize the templates directory" : "Kon de sjablonenmap niet instellen", "%s used" : "%s gebruikt", - "%s%% of %s used" : "%s%% van %s gebruikt", "%1$s of %2$s used" : "%1$s van %2$s gebruikt", "Show hidden files" : "Toon verborgen bestanden", "Crop image previews" : "Snij afbeeldingvoorbeelden bij", @@ -209,7 +208,9 @@ OC.L10N.register( "New text file.txt" : "Nieuw tekstbestand.txt", "Select" : "Selecteer", "You don’t have permission to upload or create files here" : "Je hebt geen toestemming om hier te uploaden of bestanden te maken", + "New" : "Nieuw", "Cannot transfer ownership of a file or folder you don't own" : "Kan de eigendom van een bestand of map waarvan u niet de eigenaar bent, niet overdragen", + "%s%% of %s used" : "%s%% van %s gebruikt", "Settings" : "Instellingen" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 659c7cf10ba..35f7e876797 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Fout tijdens samenvoegen van brokken, status code {status}", "Actions" : "Acties", "Rename" : "Naam wijzigen", + "Move" : "Verplaatsen", "Copy" : "Kopiëren", "Choose target folder" : "Kies doelmap…", "Open" : "Openen", @@ -69,7 +70,6 @@ "{dirs} and {files}" : "{dirs} en {files}", "_including %n hidden_::_including %n hidden_" : ["inclusief %n verborgen","inclusief %n verborgen"], "_Uploading %n file_::_Uploading %n files_" : ["%n bestand aan het uploaden","%n bestanden aan het uploaden"], - "New" : "Nieuw", "Select file range" : "Kies een reeks bestanden", "{used} of {quota} used" : "{used} van {quota} gebruikt", "{used} used" : "{used} gebruikt", @@ -180,7 +180,6 @@ "Templates" : "Sjablonen", "Unable to initialize the templates directory" : "Kon de sjablonenmap niet instellen", "%s used" : "%s gebruikt", - "%s%% of %s used" : "%s%% van %s gebruikt", "%1$s of %2$s used" : "%1$s van %2$s gebruikt", "Show hidden files" : "Toon verborgen bestanden", "Crop image previews" : "Snij afbeeldingvoorbeelden bij", @@ -207,7 +206,9 @@ "New text file.txt" : "Nieuw tekstbestand.txt", "Select" : "Selecteer", "You don’t have permission to upload or create files here" : "Je hebt geen toestemming om hier te uploaden of bestanden te maken", + "New" : "Nieuw", "Cannot transfer ownership of a file or folder you don't own" : "Kan de eigendom van een bestand of map waarvan u niet de eigenaar bent, niet overdragen", + "%s%% of %s used" : "%s%% van %s gebruikt", "Settings" : "Instellingen" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index 82de45ac586..cb84ae3993c 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Błąd podczas łączenia fragmentów, kod statusu {status}", "Actions" : "Akcje", "Rename" : "Zmień nazwę", + "Move" : "Przenieś", "Copy" : "Kopiuj", "Choose target folder" : "Wybierz katalog docelowy", "Open" : "Otwórz", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["w tym %n ukryty","w tym %n ukryte","w tym %n ukrytych","w tym %n ukrytych"], "You do not have permission to upload or create files here" : "Nie masz uprawnień do wysyłania lub tworzenia plików w tym miejscu", "_Uploading %n file_::_Uploading %n files_" : ["Wysyłanie %n pliku","Wysyłanie %n plików","Wysyłanie %n plików","Wysyłanie %n plików"], - "New" : "Nowy", + "New file/folder menu" : "Nowe menu plików/katalogów", "Select file range" : "Wybierz zakres plików", + "{used}%" : "{used}%", "{used} of {quota} used" : "Wykorzystane {used} z {quota}", "{used} used" : "Wykorzystane {used}", "\"{name}\" is an invalid file name." : "\"{name}\" jest nieprawidłową nazwą pliku.", @@ -189,8 +191,9 @@ OC.L10N.register( "Templates" : "Szablony", "Unable to initialize the templates directory" : "Nie można zainicjować katalogu szablonów", "%s used" : "Wykorzystane: %s", - "%s%% of %s used" : "Wykorzystane: %s%% z %s", + "%s%%" : "%s%%", "%1$s of %2$s used" : "Wykorzystane: %1$s z %2$s", + "Files settings" : "Ustawienia Plików", "Show hidden files" : "Pokaż ukryte pliki", "Crop image previews" : "Przytnij podglądy obrazów", "WebDAV" : "WebDAV", @@ -216,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "Nowy plik tekstowy.txt", "Select" : "Wybierz", "You don’t have permission to upload or create files here" : "Nie masz uprawnień do wysyłania lub tworzenia plików w tym miejscu", + "New" : "Nowy", "Cannot transfer ownership of a file or folder you don't own" : "Nie można przenieść prawa własności do pliku lub katalogu, którego nie jesteś właścicielem", + "%s%% of %s used" : "Wykorzystane: %s%% z %s", "Settings" : "Ustawienia" }, "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/files/l10n/pl.json b/apps/files/l10n/pl.json index 2a6bbcf2843..4dec0f43440 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Błąd podczas łączenia fragmentów, kod statusu {status}", "Actions" : "Akcje", "Rename" : "Zmień nazwę", + "Move" : "Przenieś", "Copy" : "Kopiuj", "Choose target folder" : "Wybierz katalog docelowy", "Open" : "Otwórz", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["w tym %n ukryty","w tym %n ukryte","w tym %n ukrytych","w tym %n ukrytych"], "You do not have permission to upload or create files here" : "Nie masz uprawnień do wysyłania lub tworzenia plików w tym miejscu", "_Uploading %n file_::_Uploading %n files_" : ["Wysyłanie %n pliku","Wysyłanie %n plików","Wysyłanie %n plików","Wysyłanie %n plików"], - "New" : "Nowy", + "New file/folder menu" : "Nowe menu plików/katalogów", "Select file range" : "Wybierz zakres plików", + "{used}%" : "{used}%", "{used} of {quota} used" : "Wykorzystane {used} z {quota}", "{used} used" : "Wykorzystane {used}", "\"{name}\" is an invalid file name." : "\"{name}\" jest nieprawidłową nazwą pliku.", @@ -187,8 +189,9 @@ "Templates" : "Szablony", "Unable to initialize the templates directory" : "Nie można zainicjować katalogu szablonów", "%s used" : "Wykorzystane: %s", - "%s%% of %s used" : "Wykorzystane: %s%% z %s", + "%s%%" : "%s%%", "%1$s of %2$s used" : "Wykorzystane: %1$s z %2$s", + "Files settings" : "Ustawienia Plików", "Show hidden files" : "Pokaż ukryte pliki", "Crop image previews" : "Przytnij podglądy obrazów", "WebDAV" : "WebDAV", @@ -214,7 +217,9 @@ "New text file.txt" : "Nowy plik tekstowy.txt", "Select" : "Wybierz", "You don’t have permission to upload or create files here" : "Nie masz uprawnień do wysyłania lub tworzenia plików w tym miejscu", + "New" : "Nowy", "Cannot transfer ownership of a file or folder you don't own" : "Nie można przenieść prawa własności do pliku lub katalogu, którego nie jesteś właścicielem", + "%s%% of %s used" : "Wykorzystane: %s%% z %s", "Settings" : "Ustawienia" },"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/files/l10n/ps.js b/apps/files/l10n/ps.js index b4afecba2d4..85c51775272 100644 --- a/apps/files/l10n/ps.js +++ b/apps/files/l10n/ps.js @@ -27,6 +27,7 @@ OC.L10N.register( "Target folder does not exist any more" : "دغه فولډر نور شتون نلري", "Actions" : "کړنې", "Rename" : "نوم بدلول", + "Move" : "انتقال", "Copy" : "کاپي کول", "Choose target folder" : "د ورانتقالېدو فولډر ټاکل", "Open" : "پرانيستل", @@ -58,7 +59,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} او {files}", "_including %n hidden_::_including %n hidden_" : [" پټ سربېره","%n پټ سربېره"], "_Uploading %n file_::_Uploading %n files_" : ["%n فایل پورته کول","%n فایلونه پورته کول"], - "New" : "نوی", "Select file range" : "د فایلونو اندازه وټاکئ", "{used} of {quota} used" : "له {quota} څخه {used} کارول شوې", "{used} used" : "{used} کارول شوې", @@ -134,6 +134,7 @@ OC.L10N.register( "New text file.txt" : "New text file.txt", "Select" : "ټاکل", "You don’t have permission to upload or create files here" : "تاسې په دې ځای کې د فایل يا فولډر جوړولو اجازه نلرئ", + "New" : "نوی", "Settings" : "سمونې" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/ps.json b/apps/files/l10n/ps.json index 88f1048964b..93c84af2a2d 100644 --- a/apps/files/l10n/ps.json +++ b/apps/files/l10n/ps.json @@ -25,6 +25,7 @@ "Target folder does not exist any more" : "دغه فولډر نور شتون نلري", "Actions" : "کړنې", "Rename" : "نوم بدلول", + "Move" : "انتقال", "Copy" : "کاپي کول", "Choose target folder" : "د ورانتقالېدو فولډر ټاکل", "Open" : "پرانيستل", @@ -56,7 +57,6 @@ "{dirs} and {files}" : "{dirs} او {files}", "_including %n hidden_::_including %n hidden_" : [" پټ سربېره","%n پټ سربېره"], "_Uploading %n file_::_Uploading %n files_" : ["%n فایل پورته کول","%n فایلونه پورته کول"], - "New" : "نوی", "Select file range" : "د فایلونو اندازه وټاکئ", "{used} of {quota} used" : "له {quota} څخه {used} کارول شوې", "{used} used" : "{used} کارول شوې", @@ -132,6 +132,7 @@ "New text file.txt" : "New text file.txt", "Select" : "ټاکل", "You don’t have permission to upload or create files here" : "تاسې په دې ځای کې د فایل يا فولډر جوړولو اجازه نلرئ", + "New" : "نوی", "Settings" : "سمونې" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 954e9108108..6d97db694b6 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Erro ao montar partes, código de status {status}", "Actions" : "Ações", "Rename" : "Renomear", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Escolher pasta destino", "Open" : "Abrir", @@ -77,7 +78,7 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["incluindo %n oculto","incluindo %n ocultos","incluindo %n ocultos"], "You do not have permission to upload or create files here" : "Você não tem permissão para upload ou criar arquivos aqui", "_Uploading %n file_::_Uploading %n files_" : ["Enviando %n arquivo","Enviando %n arquivos","Enviando %n arquivos"], - "New" : "Novo", + "New file/folder menu" : "Novo menu de arquivo/pasta", "Select file range" : "Selecionar o intervalo de arquivos", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", @@ -189,8 +190,8 @@ OC.L10N.register( "Templates" : "Modelos ", "Unable to initialize the templates directory" : "Não foi possível inicializar o diretório de modelos ", "%s used" : "%s usado", - "%s%% of %s used" : "%s%% usados de %s", "%1$s of %2$s used" : "%1$s usados de %2$s", + "Files settings" : "Configurações de arquivos", "Show hidden files" : "Mostrar arquivos ocultos", "Crop image previews" : "Cortar visualizações de imagem", "WebDAV" : "WebDAV", @@ -216,7 +217,9 @@ OC.L10N.register( "New text file.txt" : "Novo arquivo.txt", "Select" : "Selecionar", "You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui", + "New" : "Novo", "Cannot transfer ownership of a file or folder you don't own" : "Não é possível transferir a propriedade de um arquivo ou pasta que você não possui", + "%s%% of %s used" : "%s%% usados de %s", "Settings" : "Configurações" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index ce68550374b..8c6485e1a9b 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Erro ao montar partes, código de status {status}", "Actions" : "Ações", "Rename" : "Renomear", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Escolher pasta destino", "Open" : "Abrir", @@ -75,7 +76,7 @@ "_including %n hidden_::_including %n hidden_" : ["incluindo %n oculto","incluindo %n ocultos","incluindo %n ocultos"], "You do not have permission to upload or create files here" : "Você não tem permissão para upload ou criar arquivos aqui", "_Uploading %n file_::_Uploading %n files_" : ["Enviando %n arquivo","Enviando %n arquivos","Enviando %n arquivos"], - "New" : "Novo", + "New file/folder menu" : "Novo menu de arquivo/pasta", "Select file range" : "Selecionar o intervalo de arquivos", "{used} of {quota} used" : "{used} de {quota} usados", "{used} used" : "{used} usados", @@ -187,8 +188,8 @@ "Templates" : "Modelos ", "Unable to initialize the templates directory" : "Não foi possível inicializar o diretório de modelos ", "%s used" : "%s usado", - "%s%% of %s used" : "%s%% usados de %s", "%1$s of %2$s used" : "%1$s usados de %2$s", + "Files settings" : "Configurações de arquivos", "Show hidden files" : "Mostrar arquivos ocultos", "Crop image previews" : "Cortar visualizações de imagem", "WebDAV" : "WebDAV", @@ -214,7 +215,9 @@ "New text file.txt" : "Novo arquivo.txt", "Select" : "Selecionar", "You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui", + "New" : "Novo", "Cannot transfer ownership of a file or folder you don't own" : "Não é possível transferir a propriedade de um arquivo ou pasta que você não possui", + "%s%% of %s used" : "%s%% usados de %s", "Settings" : "Configurações" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/pt_PT.js b/apps/files/l10n/pt_PT.js index ba95695a226..beb08453a24 100644 --- a/apps/files/l10n/pt_PT.js +++ b/apps/files/l10n/pt_PT.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Erro ao agregar partições, código de estado: {status}", "Actions" : "Ações", "Rename" : "Renomear", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Escolher pasta de destino", "Open" : "Abrir", @@ -68,7 +69,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["incluindo %n ocultos","incluindo %n ocultos","incluindo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["A enviar %n ficheiro","A enviar %n ficheiros","A enviar %n ficheiros"], - "New" : "Novo", "Select file range" : "Selecionar o intervalo", "{used} of {quota} used" : "utilizado {used} de {quota}", "{used} used" : "{used} utilizado", @@ -154,6 +154,7 @@ OC.L10N.register( "New text file.txt" : "Novo texto ficheiro.txt", "Select" : "Selecionar", "You don’t have permission to upload or create files here" : "Não tem permissão para enviar ou criar ficheiros aqui", + "New" : "Novo", "Settings" : "Configurações" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files/l10n/pt_PT.json b/apps/files/l10n/pt_PT.json index 6e43a6146dd..12c796e96d6 100644 --- a/apps/files/l10n/pt_PT.json +++ b/apps/files/l10n/pt_PT.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Erro ao agregar partições, código de estado: {status}", "Actions" : "Ações", "Rename" : "Renomear", + "Move" : "Mover", "Copy" : "Copiar", "Choose target folder" : "Escolher pasta de destino", "Open" : "Abrir", @@ -66,7 +67,6 @@ "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["incluindo %n ocultos","incluindo %n ocultos","incluindo %n ocultos"], "_Uploading %n file_::_Uploading %n files_" : ["A enviar %n ficheiro","A enviar %n ficheiros","A enviar %n ficheiros"], - "New" : "Novo", "Select file range" : "Selecionar o intervalo", "{used} of {quota} used" : "utilizado {used} de {quota}", "{used} used" : "{used} utilizado", @@ -152,6 +152,7 @@ "New text file.txt" : "Novo texto ficheiro.txt", "Select" : "Selecionar", "You don’t have permission to upload or create files here" : "Não tem permissão para enviar ou criar ficheiros aqui", + "New" : "Novo", "Settings" : "Configurações" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/l10n/ro.js b/apps/files/l10n/ro.js index 2e8d8284334..fa6d838b676 100644 --- a/apps/files/l10n/ro.js +++ b/apps/files/l10n/ro.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Eroare la asambralea bucăților, status cod {status}", "Actions" : "Acțiuni", "Rename" : "Redenumește", + "Move" : "Mută", "Copy" : "Copiază", "Choose target folder" : "Alege directorul destinație", "Open" : "Deschide", @@ -77,7 +78,6 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["incluzând %n ascuns","incluzând %nascunse","incluzând %nascuns"], "You do not have permission to upload or create files here" : "Nu ai permisiunea de a încărca fișiere aici", "_Uploading %n file_::_Uploading %n files_" : ["Se încarcă %n fișier.","Se încarcă %n fișiere.","Se încarcă %n fișiere."], - "New" : "Nou", "Select file range" : "Selectează un interval", "{used} of {quota} used" : "{used} din {quota} folosiți", "{used} used" : "{used} folosiți", @@ -189,7 +189,6 @@ OC.L10N.register( "Templates" : "Șabloane", "Unable to initialize the templates directory" : "Nu s-a putut inițializa dosarul cu șabloane", "%s used" : "%s folosiți", - "%s%% of %s used" : "%s%%din %sfolosiți", "%1$s of %2$s used" : "%1$s din %2$s utilizat", "Show hidden files" : "Arată fișierele ascunse", "Crop image previews" : "Previzualizarea imaginii decupate", @@ -216,7 +215,9 @@ OC.L10N.register( "New text file.txt" : "Fișier nou.txt", "Select" : "Alege", "You don’t have permission to upload or create files here" : "Nu aveți permisiunea de a încărca sau crea fișiere aici", + "New" : "Nou", "Cannot transfer ownership of a file or folder you don't own" : "Nu se poate transfera proprietatea unui fișier sau dosar ce nu le deții", + "%s%% of %s used" : "%s%%din %sfolosiți", "Settings" : "Setări" }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/files/l10n/ro.json b/apps/files/l10n/ro.json index 1dc89337571..79554ee9eb7 100644 --- a/apps/files/l10n/ro.json +++ b/apps/files/l10n/ro.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Eroare la asambralea bucăților, status cod {status}", "Actions" : "Acțiuni", "Rename" : "Redenumește", + "Move" : "Mută", "Copy" : "Copiază", "Choose target folder" : "Alege directorul destinație", "Open" : "Deschide", @@ -75,7 +76,6 @@ "_including %n hidden_::_including %n hidden_" : ["incluzând %n ascuns","incluzând %nascunse","incluzând %nascuns"], "You do not have permission to upload or create files here" : "Nu ai permisiunea de a încărca fișiere aici", "_Uploading %n file_::_Uploading %n files_" : ["Se încarcă %n fișier.","Se încarcă %n fișiere.","Se încarcă %n fișiere."], - "New" : "Nou", "Select file range" : "Selectează un interval", "{used} of {quota} used" : "{used} din {quota} folosiți", "{used} used" : "{used} folosiți", @@ -187,7 +187,6 @@ "Templates" : "Șabloane", "Unable to initialize the templates directory" : "Nu s-a putut inițializa dosarul cu șabloane", "%s used" : "%s folosiți", - "%s%% of %s used" : "%s%%din %sfolosiți", "%1$s of %2$s used" : "%1$s din %2$s utilizat", "Show hidden files" : "Arată fișierele ascunse", "Crop image previews" : "Previzualizarea imaginii decupate", @@ -214,7 +213,9 @@ "New text file.txt" : "Fișier nou.txt", "Select" : "Alege", "You don’t have permission to upload or create files here" : "Nu aveți permisiunea de a încărca sau crea fișiere aici", + "New" : "Nou", "Cannot transfer ownership of a file or folder you don't own" : "Nu se poate transfera proprietatea unui fișier sau dosar ce nu le deții", + "%s%% of %s used" : "%s%%din %sfolosiți", "Settings" : "Setări" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" }
\ No newline at end of file diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index a4fb0fb7be5..d9174fe1562 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Ошибка при сборке чанков, код ошибки {status}", "Actions" : "Действия", "Rename" : "Переименовать", + "Move" : "Переместить", "Copy" : "Копировать", "Choose target folder" : "Выбор папки назначения", "Open" : "Открыть", @@ -77,7 +78,6 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["включая %n скрытый","включая %n скрытых","включая %n скрытых","включая %n скрытых"], "You do not have permission to upload or create files here" : "У вас нет разрешения на загрузку или создание файлов здесь", "_Uploading %n file_::_Uploading %n files_" : ["Передача %n файла","Передача %n файлов","Передача %n файлов","Передача %n файлов"], - "New" : "Новый", "Select file range" : "Выбор диапазона файлов", "{used} of {quota} used" : "использовано {used} из {quota}", "{used} used" : "Использовано {used}", @@ -189,7 +189,6 @@ OC.L10N.register( "Templates" : "Шаблоны", "Unable to initialize the templates directory" : "Не удалось инициализировать каталог шаблонов", "%s used" : "%s использовано", - "%s%% of %s used" : "использовано %s%% из %s", "%1$s of %2$s used" : "использовано %1$s из %2$s ", "Show hidden files" : "Показывать скрытые файлы", "Crop image previews" : "Обрезать пред. просмотр", @@ -216,7 +215,9 @@ OC.L10N.register( "New text file.txt" : "Новый текстовый файл.txt", "Select" : "Выбрать", "You don’t have permission to upload or create files here" : "У вас нет прав на создание или загрузку файлов в эту папку.", + "New" : "Новый", "Cannot transfer ownership of a file or folder you don't own" : "Изменение владельца возможно только для своих файлов и папок", + "%s%% of %s used" : "использовано %s%% из %s", "Settings" : "Настройки" }, "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/files/l10n/ru.json b/apps/files/l10n/ru.json index df175d3f607..feac6adc077 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Ошибка при сборке чанков, код ошибки {status}", "Actions" : "Действия", "Rename" : "Переименовать", + "Move" : "Переместить", "Copy" : "Копировать", "Choose target folder" : "Выбор папки назначения", "Open" : "Открыть", @@ -75,7 +76,6 @@ "_including %n hidden_::_including %n hidden_" : ["включая %n скрытый","включая %n скрытых","включая %n скрытых","включая %n скрытых"], "You do not have permission to upload or create files here" : "У вас нет разрешения на загрузку или создание файлов здесь", "_Uploading %n file_::_Uploading %n files_" : ["Передача %n файла","Передача %n файлов","Передача %n файлов","Передача %n файлов"], - "New" : "Новый", "Select file range" : "Выбор диапазона файлов", "{used} of {quota} used" : "использовано {used} из {quota}", "{used} used" : "Использовано {used}", @@ -187,7 +187,6 @@ "Templates" : "Шаблоны", "Unable to initialize the templates directory" : "Не удалось инициализировать каталог шаблонов", "%s used" : "%s использовано", - "%s%% of %s used" : "использовано %s%% из %s", "%1$s of %2$s used" : "использовано %1$s из %2$s ", "Show hidden files" : "Показывать скрытые файлы", "Crop image previews" : "Обрезать пред. просмотр", @@ -214,7 +213,9 @@ "New text file.txt" : "Новый текстовый файл.txt", "Select" : "Выбрать", "You don’t have permission to upload or create files here" : "У вас нет прав на создание или загрузку файлов в эту папку.", + "New" : "Новый", "Cannot transfer ownership of a file or folder you don't own" : "Изменение владельца возможно только для своих файлов и папок", + "%s%% of %s used" : "использовано %s%% из %s", "Settings" : "Настройки" },"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/files/l10n/sc.js b/apps/files/l10n/sc.js index 668be297b0c..c2802bc1a50 100644 --- a/apps/files/l10n/sc.js +++ b/apps/files/l10n/sc.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Errore in s'assentada de is blocos, còdighe de istadu {status}", "Actions" : "Atziones", "Rename" : "Torra a numenare", + "Move" : "Tràmuda", "Copy" : "Còpia", "Choose target folder" : "Sèbera cartella de destinatzione", "Open" : "Aberi", @@ -71,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["inclùdidu %n cuadu","inclùdidos %n cuados"], "_Uploading %n file_::_Uploading %n files_" : ["Carrighende %n archìviu","Carrighende %n archìvios"], - "New" : "Nou", "Select file range" : "Seletziona classe de archìviu", "{used} of {quota} used" : "{used} de {quota} impreadu", "{used} used" : "{used} impreadu", @@ -182,7 +182,6 @@ OC.L10N.register( "Templates" : "Modellos", "Unable to initialize the templates directory" : "Non faghet a initzializare sa cartella de is modellos", "%s used" : "%s impreadu", - "%s%% of %s used" : "%s%% de %s impreadu", "%1$s of %2$s used" : "%1$s de %2$s impreadu", "Show hidden files" : "Mustra archìvios cuados", "Crop image previews" : "Retàllia anteprimas de s'imàgine", @@ -209,7 +208,9 @@ OC.L10N.register( "New text file.txt" : "Archìviu de testu .txt nou", "Select" : "Seletziona", "You don’t have permission to upload or create files here" : "Non tenes su permissu pro carrigare o creare archìvios inoghe", + "New" : "Nou", "Cannot transfer ownership of a file or folder you don't own" : "Non faghet a tramudare sa propriedade de un'archìviu o cartella de is chi non ses mere", + "%s%% of %s used" : "%s%% de %s impreadu", "Settings" : "Impostatziones" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sc.json b/apps/files/l10n/sc.json index 0e8913b9fbf..cfc200531f6 100644 --- a/apps/files/l10n/sc.json +++ b/apps/files/l10n/sc.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Errore in s'assentada de is blocos, còdighe de istadu {status}", "Actions" : "Atziones", "Rename" : "Torra a numenare", + "Move" : "Tràmuda", "Copy" : "Còpia", "Choose target folder" : "Sèbera cartella de destinatzione", "Open" : "Aberi", @@ -69,7 +70,6 @@ "{dirs} and {files}" : "{dirs} e {files}", "_including %n hidden_::_including %n hidden_" : ["inclùdidu %n cuadu","inclùdidos %n cuados"], "_Uploading %n file_::_Uploading %n files_" : ["Carrighende %n archìviu","Carrighende %n archìvios"], - "New" : "Nou", "Select file range" : "Seletziona classe de archìviu", "{used} of {quota} used" : "{used} de {quota} impreadu", "{used} used" : "{used} impreadu", @@ -180,7 +180,6 @@ "Templates" : "Modellos", "Unable to initialize the templates directory" : "Non faghet a initzializare sa cartella de is modellos", "%s used" : "%s impreadu", - "%s%% of %s used" : "%s%% de %s impreadu", "%1$s of %2$s used" : "%1$s de %2$s impreadu", "Show hidden files" : "Mustra archìvios cuados", "Crop image previews" : "Retàllia anteprimas de s'imàgine", @@ -207,7 +206,9 @@ "New text file.txt" : "Archìviu de testu .txt nou", "Select" : "Seletziona", "You don’t have permission to upload or create files here" : "Non tenes su permissu pro carrigare o creare archìvios inoghe", + "New" : "Nou", "Cannot transfer ownership of a file or folder you don't own" : "Non faghet a tramudare sa propriedade de un'archìviu o cartella de is chi non ses mere", + "%s%% of %s used" : "%s%% de %s impreadu", "Settings" : "Impostatziones" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js index 31790e2b7ac..49ad4fcae12 100644 --- a/apps/files/l10n/sk.js +++ b/apps/files/l10n/sk.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Chyba pri zostavovaní kusov, kód chyby {status}", "Actions" : "Akcie", "Rename" : "Premenovať", + "Move" : "Presunúť", "Copy" : "Kopírovať", "Choose target folder" : "Vyberte cieľový priečinok", "Open" : "Otvoriť", @@ -76,7 +77,6 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých","vrátane %n skrytých"], "You do not have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvárať súbory", "_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov","Nahrávam %n súborov"], - "New" : "Nový", "Select file range" : "Vybrať rozsah súborov", "{used} of {quota} used" : "použitých {used} z {quota}", "{used} used" : "{used} použitých", @@ -188,7 +188,6 @@ OC.L10N.register( "Templates" : "Šablóny", "Unable to initialize the templates directory" : "Nemôžem inicializovať priečinok so šablónami", "%s used" : "%s použitých", - "%s%% of %s used" : "Využité %s%% z %s", "%1$s of %2$s used" : "Využité: %1$s z %2$s", "Show hidden files" : "Zobraziť skryté súbory", "Crop image previews" : "Orezať náhľady obrázkov", @@ -215,7 +214,9 @@ OC.L10N.register( "New text file.txt" : "Nový text file.txt", "Select" : "Vybrať", "You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory", + "New" : "Nový", "Cannot transfer ownership of a file or folder you don't own" : "Nie je možné preniesť vlastníctvo súboru alebo priečinka, ktorý nevlastníte", + "%s%% of %s used" : "Využité %s%% z %s", "Settings" : "Nastavenia" }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json index d5160ba6609..a648a273cca 100644 --- a/apps/files/l10n/sk.json +++ b/apps/files/l10n/sk.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Chyba pri zostavovaní kusov, kód chyby {status}", "Actions" : "Akcie", "Rename" : "Premenovať", + "Move" : "Presunúť", "Copy" : "Kopírovať", "Choose target folder" : "Vyberte cieľový priečinok", "Open" : "Otvoriť", @@ -74,7 +75,6 @@ "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých","vrátane %n skrytých"], "You do not have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvárať súbory", "_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov","Nahrávam %n súborov"], - "New" : "Nový", "Select file range" : "Vybrať rozsah súborov", "{used} of {quota} used" : "použitých {used} z {quota}", "{used} used" : "{used} použitých", @@ -186,7 +186,6 @@ "Templates" : "Šablóny", "Unable to initialize the templates directory" : "Nemôžem inicializovať priečinok so šablónami", "%s used" : "%s použitých", - "%s%% of %s used" : "Využité %s%% z %s", "%1$s of %2$s used" : "Využité: %1$s z %2$s", "Show hidden files" : "Zobraziť skryté súbory", "Crop image previews" : "Orezať náhľady obrázkov", @@ -213,7 +212,9 @@ "New text file.txt" : "Nový text file.txt", "Select" : "Vybrať", "You don’t have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvoriť súbory", + "New" : "Nový", "Cannot transfer ownership of a file or folder you don't own" : "Nie je možné preniesť vlastníctvo súboru alebo priečinka, ktorý nevlastníte", + "%s%% of %s used" : "Využité %s%% z %s", "Settings" : "Nastavenia" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/files/l10n/sl.js b/apps/files/l10n/sl.js index 9a8c362e0cf..b31a6b6f099 100644 --- a/apps/files/l10n/sl.js +++ b/apps/files/l10n/sl.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Napaka pri sestavljanju kosov datoteke, koda stanja je {status}", "Actions" : "Dejanja", "Rename" : "Preimenuj", + "Move" : "Premakni", "Copy" : "Kopiraj", "Choose target folder" : "Izbor ciljne mape", "Open" : "Odpri", @@ -71,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} in {files}", "_including %n hidden_::_including %n hidden_" : ["vključujoč %n skrito","vključujoč %n skriti","vključujoč %n skrite","vključujoč %n skritih"], "_Uploading %n file_::_Uploading %n files_" : ["Posodabljanje %n datoteke","Posodabljanje %n datotek","Posodabljanje %n datotek","Poteka posodabljanje %n datotek"], - "New" : "Novo", "Select file range" : "Izbor obsega datotek", "{used} of {quota} used" : "v uporabi je {used} od {quota}", "{used} used" : "v uporabi: {used}·", @@ -182,7 +182,6 @@ OC.L10N.register( "Templates" : "Predloge", "Unable to initialize the templates directory" : "Ni mogoče začeti mape predlog", "%s used" : "Uporabljeno %s", - "%s%% of %s used" : "Uporabljeno %s%% od %s", "%1$s of %2$s used" : "Uporabljeno %1$s od %2$s", "Show hidden files" : "Pokaži skrite datoteke", "Crop image previews" : "Obreži slike predogleda", @@ -209,7 +208,9 @@ OC.L10N.register( "New text file.txt" : "nova_datoteka.txt", "Select" : "Izbor", "You don’t have permission to upload or create files here" : "Ni ustreznih dovoljenj za pošiljanje in ustvarjanje datotek na tem mestu.", + "New" : "Novo", "Cannot transfer ownership of a file or folder you don't own" : "Ni mogoče prenesti lastništva datotek in map, katerih niste lastnik", + "%s%% of %s used" : "Uporabljeno %s%% od %s", "Settings" : "Nastavitve" }, "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 51314fdfbb1..d6c623065bf 100644 --- a/apps/files/l10n/sl.json +++ b/apps/files/l10n/sl.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Napaka pri sestavljanju kosov datoteke, koda stanja je {status}", "Actions" : "Dejanja", "Rename" : "Preimenuj", + "Move" : "Premakni", "Copy" : "Kopiraj", "Choose target folder" : "Izbor ciljne mape", "Open" : "Odpri", @@ -69,7 +70,6 @@ "{dirs} and {files}" : "{dirs} in {files}", "_including %n hidden_::_including %n hidden_" : ["vključujoč %n skrito","vključujoč %n skriti","vključujoč %n skrite","vključujoč %n skritih"], "_Uploading %n file_::_Uploading %n files_" : ["Posodabljanje %n datoteke","Posodabljanje %n datotek","Posodabljanje %n datotek","Poteka posodabljanje %n datotek"], - "New" : "Novo", "Select file range" : "Izbor obsega datotek", "{used} of {quota} used" : "v uporabi je {used} od {quota}", "{used} used" : "v uporabi: {used}·", @@ -180,7 +180,6 @@ "Templates" : "Predloge", "Unable to initialize the templates directory" : "Ni mogoče začeti mape predlog", "%s used" : "Uporabljeno %s", - "%s%% of %s used" : "Uporabljeno %s%% od %s", "%1$s of %2$s used" : "Uporabljeno %1$s od %2$s", "Show hidden files" : "Pokaži skrite datoteke", "Crop image previews" : "Obreži slike predogleda", @@ -207,7 +206,9 @@ "New text file.txt" : "nova_datoteka.txt", "Select" : "Izbor", "You don’t have permission to upload or create files here" : "Ni ustreznih dovoljenj za pošiljanje in ustvarjanje datotek na tem mestu.", + "New" : "Novo", "Cannot transfer ownership of a file or folder you don't own" : "Ni mogoče prenesti lastništva datotek in map, katerih niste lastnik", + "%s%% of %s used" : "Uporabljeno %s%% od %s", "Settings" : "Nastavitve" },"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/sq.js b/apps/files/l10n/sq.js index 44f6515c574..e3599b13e47 100644 --- a/apps/files/l10n/sq.js +++ b/apps/files/l10n/sq.js @@ -19,6 +19,7 @@ OC.L10N.register( "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} nga {totalSize} ({bitrate})", "Actions" : "Veprime", "Rename" : "Riemërtojeni", + "Move" : "Zhvendos", "Copy" : "Kopjo", "Delete file" : "Fshi skedarin", "Delete folder" : "Fshini dosjen", @@ -50,7 +51,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} dhe {files}", "_including %n hidden_::_including %n hidden_" : ["Përfshirë %n të fshehura","Përfshirë %n të fshehura"], "_Uploading %n file_::_Uploading %n files_" : ["Po ngarkohet %n kartelë","Po ngarkohen %n skedar"], - "New" : "E re", "\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm kartele.", "File name cannot be empty." : "Emri i kartelës s’mund të jetë i zbrazët.", "\"{name}\" is not an allowed filetype" : "\"{name}\" nuk është një lloj skedari i lejuar", @@ -125,6 +125,7 @@ OC.L10N.register( "New text file.txt" : "Kartelë e re file.txt", "Select" : "Përzgjidhe", "You don’t have permission to upload or create files here" : "S’keni leje për të ngarkuar apo krijuar kartela këtu", + "New" : "E re", "Settings" : "Rregullime" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json index b4e4e41bf6c..d55899c673b 100644 --- a/apps/files/l10n/sq.json +++ b/apps/files/l10n/sq.json @@ -17,6 +17,7 @@ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} nga {totalSize} ({bitrate})", "Actions" : "Veprime", "Rename" : "Riemërtojeni", + "Move" : "Zhvendos", "Copy" : "Kopjo", "Delete file" : "Fshi skedarin", "Delete folder" : "Fshini dosjen", @@ -48,7 +49,6 @@ "{dirs} and {files}" : "{dirs} dhe {files}", "_including %n hidden_::_including %n hidden_" : ["Përfshirë %n të fshehura","Përfshirë %n të fshehura"], "_Uploading %n file_::_Uploading %n files_" : ["Po ngarkohet %n kartelë","Po ngarkohen %n skedar"], - "New" : "E re", "\"{name}\" is an invalid file name." : "\"{name}\" është emër i pavlefshëm kartele.", "File name cannot be empty." : "Emri i kartelës s’mund të jetë i zbrazët.", "\"{name}\" is not an allowed filetype" : "\"{name}\" nuk është një lloj skedari i lejuar", @@ -123,6 +123,7 @@ "New text file.txt" : "Kartelë e re file.txt", "Select" : "Përzgjidhe", "You don’t have permission to upload or create files here" : "S’keni leje për të ngarkuar apo krijuar kartela këtu", + "New" : "E re", "Settings" : "Rregullime" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js index e2db9f61a17..32a2beae562 100644 --- a/apps/files/l10n/sr.js +++ b/apps/files/l10n/sr.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Грешки при прикупљању делова фајла, статус код {status}", "Actions" : "Радње", "Rename" : "Преименуј", + "Move" : "Помери", "Copy" : "Копирај", "Choose target folder" : "Одаберите одредишну фасциклу", "Open" : "Отвори", @@ -39,6 +40,8 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "Не могу да учитам информације фајла „{file}“", "Files" : "Фајлови", "Details" : "Детаљи", + "Show list view" : "Prikaži prikaz liste", + "Show grid view" : "Prikaži prikaz mreže", "Pending" : "На чекању", "Unable to determine date" : "Не могу да одредим датум", "This operation is forbidden" : "Ова радња је забрањена", @@ -69,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} и {files}", "_including %n hidden_::_including %n hidden_" : ["укључујући и %n скривени","укључујући и %n скривена","укључујући и %n скривених"], "_Uploading %n file_::_Uploading %n files_" : ["Отпремам %n фајл","Отпремам %n фајла","Отпремам %n фајлова"], - "New" : "Ново", "Select file range" : "Одаберите опсег фајлова", "{used} of {quota} used" : "{used} од {quota} искоришћено", "{used} used" : "{used} искоришћено", @@ -161,7 +163,6 @@ OC.L10N.register( "Cancel" : "Поништи", "Create" : "Направи", "%s used" : "%s искоришћено", - "%s%% of %s used" : "%s%% од %s искоришћено", "%1$s of %2$s used" : "Заузето %1$s од %2$s", "Show hidden files" : "Прикажи скривене фајлове", "WebDAV" : "ВебДАВ", @@ -186,7 +187,9 @@ OC.L10N.register( "New text file.txt" : "Нов текстуални фајл.txt", "Select" : "Изабери", "You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове", + "New" : "Ново", "Cannot transfer ownership of a file or folder you don't own" : "Не можете пренети власништво фајла или фасцикле које нису Ваше", + "%s%% of %s used" : "%s%% од %s искоришћено", "Settings" : "Поставке" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json index 249fc921ca1..43eab00273f 100644 --- a/apps/files/l10n/sr.json +++ b/apps/files/l10n/sr.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Грешки при прикупљању делова фајла, статус код {status}", "Actions" : "Радње", "Rename" : "Преименуј", + "Move" : "Помери", "Copy" : "Копирај", "Choose target folder" : "Одаберите одредишну фасциклу", "Open" : "Отвори", @@ -37,6 +38,8 @@ "Could not load info for file \"{file}\"" : "Не могу да учитам информације фајла „{file}“", "Files" : "Фајлови", "Details" : "Детаљи", + "Show list view" : "Prikaži prikaz liste", + "Show grid view" : "Prikaži prikaz mreže", "Pending" : "На чекању", "Unable to determine date" : "Не могу да одредим датум", "This operation is forbidden" : "Ова радња је забрањена", @@ -67,7 +70,6 @@ "{dirs} and {files}" : "{dirs} и {files}", "_including %n hidden_::_including %n hidden_" : ["укључујући и %n скривени","укључујући и %n скривена","укључујући и %n скривених"], "_Uploading %n file_::_Uploading %n files_" : ["Отпремам %n фајл","Отпремам %n фајла","Отпремам %n фајлова"], - "New" : "Ново", "Select file range" : "Одаберите опсег фајлова", "{used} of {quota} used" : "{used} од {quota} искоришћено", "{used} used" : "{used} искоришћено", @@ -159,7 +161,6 @@ "Cancel" : "Поништи", "Create" : "Направи", "%s used" : "%s искоришћено", - "%s%% of %s used" : "%s%% од %s искоришћено", "%1$s of %2$s used" : "Заузето %1$s од %2$s", "Show hidden files" : "Прикажи скривене фајлове", "WebDAV" : "ВебДАВ", @@ -184,7 +185,9 @@ "New text file.txt" : "Нов текстуални фајл.txt", "Select" : "Изабери", "You don’t have permission to upload or create files here" : "Немате дозволе да овде отпремате или стварате фајлове", + "New" : "Ново", "Cannot transfer ownership of a file or folder you don't own" : "Не можете пренети власништво фајла или фасцикле које нису Ваше", + "%s%% of %s used" : "%s%% од %s искоришћено", "Settings" : "Поставке" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 62921702080..71be3053eb4 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Fel vid ihopsättning av bitarna: statuskod: {status}", "Actions" : "Åtgärder", "Rename" : "Byt namn", + "Move" : "Flytta", "Copy" : "Kopiera", "Choose target folder" : "Välj målmapp", "Open" : "Öppna", @@ -71,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} och {files}", "_including %n hidden_::_including %n hidden_" : ["inkluderar %n dold","inkluderar %n dolda"], "_Uploading %n file_::_Uploading %n files_" : ["Laddar upp %n fil","Laddar upp %n filer"], - "New" : "Ny", "Select file range" : "Välj filintervall", "{used} of {quota} used" : "{used} av {quota} använt", "{used} used" : "{used} använt", @@ -182,7 +182,6 @@ OC.L10N.register( "Templates" : "Mallar", "Unable to initialize the templates directory" : "Kunde inte initialisera mall-mappen", "%s used" : "%s använt", - "%s%% of %s used" : "%s%% av %s använt", "%1$s of %2$s used" : "%1$s av %2$s använt", "Show hidden files" : "Visa dolda filer", "Crop image previews" : "Beskär förhandsgranskningar för bilder", @@ -209,7 +208,9 @@ OC.L10N.register( "New text file.txt" : "Ny textfil.txt", "Select" : "Välj", "You don’t have permission to upload or create files here" : "Du har inte tillåtelse att ladda upp eller skapa filer här", + "New" : "Ny", "Cannot transfer ownership of a file or folder you don't own" : "Det går inte att överföra ägarskap av en fil eller mapp som du inte äger", + "%s%% of %s used" : "%s%% av %s använt", "Settings" : "Inställningar" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 3a65643f748..c44c8a76e56 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Fel vid ihopsättning av bitarna: statuskod: {status}", "Actions" : "Åtgärder", "Rename" : "Byt namn", + "Move" : "Flytta", "Copy" : "Kopiera", "Choose target folder" : "Välj målmapp", "Open" : "Öppna", @@ -69,7 +70,6 @@ "{dirs} and {files}" : "{dirs} och {files}", "_including %n hidden_::_including %n hidden_" : ["inkluderar %n dold","inkluderar %n dolda"], "_Uploading %n file_::_Uploading %n files_" : ["Laddar upp %n fil","Laddar upp %n filer"], - "New" : "Ny", "Select file range" : "Välj filintervall", "{used} of {quota} used" : "{used} av {quota} använt", "{used} used" : "{used} använt", @@ -180,7 +180,6 @@ "Templates" : "Mallar", "Unable to initialize the templates directory" : "Kunde inte initialisera mall-mappen", "%s used" : "%s använt", - "%s%% of %s used" : "%s%% av %s använt", "%1$s of %2$s used" : "%1$s av %2$s använt", "Show hidden files" : "Visa dolda filer", "Crop image previews" : "Beskär förhandsgranskningar för bilder", @@ -207,7 +206,9 @@ "New text file.txt" : "Ny textfil.txt", "Select" : "Välj", "You don’t have permission to upload or create files here" : "Du har inte tillåtelse att ladda upp eller skapa filer här", + "New" : "Ny", "Cannot transfer ownership of a file or folder you don't own" : "Det går inte att överföra ägarskap av en fil eller mapp som du inte äger", + "%s%% of %s used" : "%s%% av %s använt", "Settings" : "Inställningar" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/th.js b/apps/files/l10n/th.js index 94937c1e779..c89695c2da7 100644 --- a/apps/files/l10n/th.js +++ b/apps/files/l10n/th.js @@ -21,6 +21,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "ไม่มีโฟลเดอร์เป้าหมาย \"{dir}\" อีกต่อไป", "Not enough free space" : "พื้นที่ว่างไม่เพียงพอ", "An unknown error has occurred" : "เกิดข้อผิดพลาดที่ไม่รู้จัก", + "File could not be uploaded" : "ไม่สามารถอัปโหลดไฟล์", "Uploading …" : "กำลังอัปโหลด …", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} จาก {totalSize} ({bitrate})", "Uploading that item is not supported" : "ไม่รองรับการอัปโหลดสิ่งนั้น", @@ -29,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "ข้อผิดพลาดขณะประกอบกลุ่ม รหัสสถานะ {status}", "Actions" : "การกระทำ", "Rename" : "เปลี่ยนชื่อ", + "Move" : "ย้าย", "Copy" : "คัดลอก", "Choose target folder" : "เลือกโฟลเดอร์เป้าหมาย", "Open" : "เปิด", @@ -39,8 +41,12 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "ไม่สามารถโหลดข้อมูลสำหรับไฟล์ \"{file}\"", "Files" : "ไฟล์", "Details" : "รายละเอียด", + "Show list view" : "แสดงมุมมองรายการ", + "Show grid view" : "แสดงมุมมองตาราง", "Please select tag(s) to add to the selection" : "กรุณาเลือกแท็กเพื่อเพิ่มเข้าไปในรายการที่เลือก", "Apply tag(s) to selection" : "นำแท็กไปใช้ในรายการที่เลือก", + "Select directory \"{dirName}\"" : "เลือกไดเร็กทอรี \"{dirname}\"", + "Select file \"{fileName}\"" : "เลือกไฟล์ \"{fileName}\"", "Pending" : "อยู่ระหว่างดำเนินการ", "Unable to determine date" : "ไม่สามารถระบุวัน", "This operation is forbidden" : "การดำเนินการนี้ถูกห้าม", @@ -70,8 +76,8 @@ OC.L10N.register( "_%n file_::_%n files_" : ["%n ไฟล์"], "{dirs} and {files}" : "{dirs} และ {files}", "_including %n hidden_::_including %n hidden_" : ["รวมถึง %n ไฟล์ที่ซ่อนอยู่"], + "You do not have permission to upload or create files here" : "คุณไม่ได้รับอนุญาตให้อัปโหลดหรือสร้างไฟล์ที่นี่", "_Uploading %n file_::_Uploading %n files_" : ["กำลังอัปโหลด %n ไฟล์"], - "New" : "สร้างใหม่", "Select file range" : "เลือกช่วงไฟล์", "{used} of {quota} used" : "ใช้ไป {used} จาก {quota}", "{used} used" : "ใช้ไป {used}", @@ -168,6 +174,7 @@ OC.L10N.register( "Transfer {path} to {userid}" : "โอนย้าย {path} ไปยัง {userid}", "Invalid path selected" : "เลือกเส้นทางไม่ถูกต้อง", "Ownership transfer request sent" : "ส่งคำขอโอนย้ายความเป็นเจ้าของแล้ว", + "Cannot transfer ownership of a file or folder you do not own" : "ไม่สามารถโอนย้ายความเป็นเจ้าของไฟล์หรือโฟลเดอร์ที่คุณไม่ได้เป็นเจ้าของ", "Tags" : "แท็ก", "Unable to change the favourite state of the file" : "ไม่สามารถเปลี่ยนสถานะรายการโปรดของไฟล์", "Error while loading the file data" : "ข้อผิดพลาดขณะโหลดข้อมูลไฟล์", @@ -182,8 +189,8 @@ OC.L10N.register( "Templates" : "เทมเพลต", "Unable to initialize the templates directory" : "ไม่สามารถเตรียมไดเรกทอรีเทมเพลต", "%s used" : "ใช้ไป %s", - "%s%% of %s used" : "ใช้ไป %s%% จาก %s", "%1$s of %2$s used" : "ใช้ไป %1$s จาก %2$s", + "Files settings" : "การตั้งค่าไฟล์", "Show hidden files" : "แสดงไฟล์ที่ซ่อนอยู่", "Crop image previews" : "ครอปตัดรูปภาพตัวอย่าง", "WebDAV" : "WebDAV", @@ -209,7 +216,9 @@ OC.L10N.register( "New text file.txt" : "ไฟล์ข้อความใหม่.txt", "Select" : "เลือก", "You don’t have permission to upload or create files here" : "คุณไม่ได้รับอนุญาตให้อัปโหลดหรือสร้างไฟล์ที่นี่", + "New" : "สร้างใหม่", "Cannot transfer ownership of a file or folder you don't own" : "ไม่สามารถโอนย้ายความเป็นเจ้าของไฟล์หรือโฟลเดอร์ที่คุณไม่ได้เป็นเจ้าของ", + "%s%% of %s used" : "ใช้ไป %s%% จาก %s", "Settings" : "การตั้งค่า" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/th.json b/apps/files/l10n/th.json index 5fe808a1885..ae3eb856fb9 100644 --- a/apps/files/l10n/th.json +++ b/apps/files/l10n/th.json @@ -19,6 +19,7 @@ "Target folder \"{dir}\" does not exist any more" : "ไม่มีโฟลเดอร์เป้าหมาย \"{dir}\" อีกต่อไป", "Not enough free space" : "พื้นที่ว่างไม่เพียงพอ", "An unknown error has occurred" : "เกิดข้อผิดพลาดที่ไม่รู้จัก", + "File could not be uploaded" : "ไม่สามารถอัปโหลดไฟล์", "Uploading …" : "กำลังอัปโหลด …", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} จาก {totalSize} ({bitrate})", "Uploading that item is not supported" : "ไม่รองรับการอัปโหลดสิ่งนั้น", @@ -27,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "ข้อผิดพลาดขณะประกอบกลุ่ม รหัสสถานะ {status}", "Actions" : "การกระทำ", "Rename" : "เปลี่ยนชื่อ", + "Move" : "ย้าย", "Copy" : "คัดลอก", "Choose target folder" : "เลือกโฟลเดอร์เป้าหมาย", "Open" : "เปิด", @@ -37,8 +39,12 @@ "Could not load info for file \"{file}\"" : "ไม่สามารถโหลดข้อมูลสำหรับไฟล์ \"{file}\"", "Files" : "ไฟล์", "Details" : "รายละเอียด", + "Show list view" : "แสดงมุมมองรายการ", + "Show grid view" : "แสดงมุมมองตาราง", "Please select tag(s) to add to the selection" : "กรุณาเลือกแท็กเพื่อเพิ่มเข้าไปในรายการที่เลือก", "Apply tag(s) to selection" : "นำแท็กไปใช้ในรายการที่เลือก", + "Select directory \"{dirName}\"" : "เลือกไดเร็กทอรี \"{dirname}\"", + "Select file \"{fileName}\"" : "เลือกไฟล์ \"{fileName}\"", "Pending" : "อยู่ระหว่างดำเนินการ", "Unable to determine date" : "ไม่สามารถระบุวัน", "This operation is forbidden" : "การดำเนินการนี้ถูกห้าม", @@ -68,8 +74,8 @@ "_%n file_::_%n files_" : ["%n ไฟล์"], "{dirs} and {files}" : "{dirs} และ {files}", "_including %n hidden_::_including %n hidden_" : ["รวมถึง %n ไฟล์ที่ซ่อนอยู่"], + "You do not have permission to upload or create files here" : "คุณไม่ได้รับอนุญาตให้อัปโหลดหรือสร้างไฟล์ที่นี่", "_Uploading %n file_::_Uploading %n files_" : ["กำลังอัปโหลด %n ไฟล์"], - "New" : "สร้างใหม่", "Select file range" : "เลือกช่วงไฟล์", "{used} of {quota} used" : "ใช้ไป {used} จาก {quota}", "{used} used" : "ใช้ไป {used}", @@ -166,6 +172,7 @@ "Transfer {path} to {userid}" : "โอนย้าย {path} ไปยัง {userid}", "Invalid path selected" : "เลือกเส้นทางไม่ถูกต้อง", "Ownership transfer request sent" : "ส่งคำขอโอนย้ายความเป็นเจ้าของแล้ว", + "Cannot transfer ownership of a file or folder you do not own" : "ไม่สามารถโอนย้ายความเป็นเจ้าของไฟล์หรือโฟลเดอร์ที่คุณไม่ได้เป็นเจ้าของ", "Tags" : "แท็ก", "Unable to change the favourite state of the file" : "ไม่สามารถเปลี่ยนสถานะรายการโปรดของไฟล์", "Error while loading the file data" : "ข้อผิดพลาดขณะโหลดข้อมูลไฟล์", @@ -180,8 +187,8 @@ "Templates" : "เทมเพลต", "Unable to initialize the templates directory" : "ไม่สามารถเตรียมไดเรกทอรีเทมเพลต", "%s used" : "ใช้ไป %s", - "%s%% of %s used" : "ใช้ไป %s%% จาก %s", "%1$s of %2$s used" : "ใช้ไป %1$s จาก %2$s", + "Files settings" : "การตั้งค่าไฟล์", "Show hidden files" : "แสดงไฟล์ที่ซ่อนอยู่", "Crop image previews" : "ครอปตัดรูปภาพตัวอย่าง", "WebDAV" : "WebDAV", @@ -207,7 +214,9 @@ "New text file.txt" : "ไฟล์ข้อความใหม่.txt", "Select" : "เลือก", "You don’t have permission to upload or create files here" : "คุณไม่ได้รับอนุญาตให้อัปโหลดหรือสร้างไฟล์ที่นี่", + "New" : "สร้างใหม่", "Cannot transfer ownership of a file or folder you don't own" : "ไม่สามารถโอนย้ายความเป็นเจ้าของไฟล์หรือโฟลเดอร์ที่คุณไม่ได้เป็นเจ้าของ", + "%s%% of %s used" : "ใช้ไป %s%% จาก %s", "Settings" : "การตั้งค่า" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index 98e1a5c3a7e..5e5449784bb 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Kümeler oluşturulurken sorun çıktı, durum kodu {status}", "Actions" : "İşlemler", "Rename" : "Yeniden adlandır", + "Move" : "Taşı", "Copy" : "Kopyala", "Choose target folder" : "Hedef klasörü seçin", "Open" : "Aç", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["%n gizli ile birlikte","%n gizli ile birlikte"], "You do not have permission to upload or create files here" : "Buraya dosya yükleme ya da ekleme izniniz yok", "_Uploading %n file_::_Uploading %n files_" : ["%n dosya yükleniyor","%n dosya yükleniyor"], - "New" : "Yeni", + "New file/folder menu" : "Yeni dosya/klasör menüsü", "Select file range" : "Dosya aralığını seçin", + "{used}%" : "%{used}", "{used} of {quota} used" : "{used} / {quota} kullanılmış", "{used} used" : "{used} kullanılmış", "\"{name}\" is an invalid file name." : "\"{name}\" geçersiz bir dosya adı.", @@ -189,8 +191,9 @@ OC.L10N.register( "Templates" : "Kalıplar", "Unable to initialize the templates directory" : "Kalıp klasörü hazırlanamadı", "%s used" : "%s kullanılıyor", - "%s%% of %s used" : "%s%%/%s kullanılmış", + "%s%%" : "%%%s", "%1$s of %2$s used" : "%1$s / %2$s kullanıldı", + "Files settings" : "Dosyalar ayarları", "Show hidden files" : "Gizli dosyaları görüntüle", "Crop image previews" : "Görsel ön izlemeleri kırpılsın", "WebDAV" : "WebDAV", @@ -216,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "Yeni metin dosyası.txt", "Select" : "Seçin", "You don’t have permission to upload or create files here" : "Buraya dosya yükleme ya da ekleme izniniz yok", + "New" : "Yeni", "Cannot transfer ownership of a file or folder you don't own" : "Sahibi olmadığınız bir dosya ya da klasörün sahipliğini aktaramazsınız", + "%s%% of %s used" : "%s%%/%s kullanılmış", "Settings" : "Ayarlar" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index 44e3445abd4..ed1d3834fbc 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "Kümeler oluşturulurken sorun çıktı, durum kodu {status}", "Actions" : "İşlemler", "Rename" : "Yeniden adlandır", + "Move" : "Taşı", "Copy" : "Kopyala", "Choose target folder" : "Hedef klasörü seçin", "Open" : "Aç", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["%n gizli ile birlikte","%n gizli ile birlikte"], "You do not have permission to upload or create files here" : "Buraya dosya yükleme ya da ekleme izniniz yok", "_Uploading %n file_::_Uploading %n files_" : ["%n dosya yükleniyor","%n dosya yükleniyor"], - "New" : "Yeni", + "New file/folder menu" : "Yeni dosya/klasör menüsü", "Select file range" : "Dosya aralığını seçin", + "{used}%" : "%{used}", "{used} of {quota} used" : "{used} / {quota} kullanılmış", "{used} used" : "{used} kullanılmış", "\"{name}\" is an invalid file name." : "\"{name}\" geçersiz bir dosya adı.", @@ -187,8 +189,9 @@ "Templates" : "Kalıplar", "Unable to initialize the templates directory" : "Kalıp klasörü hazırlanamadı", "%s used" : "%s kullanılıyor", - "%s%% of %s used" : "%s%%/%s kullanılmış", + "%s%%" : "%%%s", "%1$s of %2$s used" : "%1$s / %2$s kullanıldı", + "Files settings" : "Dosyalar ayarları", "Show hidden files" : "Gizli dosyaları görüntüle", "Crop image previews" : "Görsel ön izlemeleri kırpılsın", "WebDAV" : "WebDAV", @@ -214,7 +217,9 @@ "New text file.txt" : "Yeni metin dosyası.txt", "Select" : "Seçin", "You don’t have permission to upload or create files here" : "Buraya dosya yükleme ya da ekleme izniniz yok", + "New" : "Yeni", "Cannot transfer ownership of a file or folder you don't own" : "Sahibi olmadığınız bir dosya ya da klasörün sahipliğini aktaramazsınız", + "%s%% of %s used" : "%s%%/%s kullanılmış", "Settings" : "Ayarlar" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index 66e9ef6b1ab..29adb458ccf 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Помилка під час збірки частин, код помилки {status}", "Actions" : "Дії", "Rename" : "Перейменувати", + "Move" : "Перемістити", "Copy" : "Скопіювати", "Choose target folder" : "Виберіть теку призначення", "Open" : "Відкрити", @@ -68,7 +69,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} і {files}", "_including %n hidden_::_including %n hidden_" : ["включаючи %n прихований","включаючи %n прихованих","включаючи %n прихованих","включаючи %n прихованих"], "_Uploading %n file_::_Uploading %n files_" : ["Вивантаження %n файлу","Вивантаження %n файлів","Вивантаження %n файлів","Завантаження %n файлів"], - "New" : "Створити", "Select file range" : "Виберіть набір файлів", "{used} of {quota} used" : "Використано {used} з {quota}", "{used} used" : "Використано {used}", @@ -155,7 +155,6 @@ OC.L10N.register( "Cancel" : "Скасувати", "Create" : "Створити", "%s used" : "%s використано", - "%s%% of %s used" : "%s%% з %s використано", "%1$s of %2$s used" : "Використано %1$s з %2$s", "Show hidden files" : "Показувати приховані файли", "WebDAV" : "WebDAV", @@ -180,7 +179,9 @@ OC.L10N.register( "New text file.txt" : "Новий текстовий файл file.txt", "Select" : "Вибрати", "You don’t have permission to upload or create files here" : "У вас недостатньо прав для завантаження або створення тут файлів", + "New" : "Створити", "Cannot transfer ownership of a file or folder you don't own" : "Неможливо передати права власності на файл або теку, що вам не належить", + "%s%% of %s used" : "%s%% з %s використано", "Settings" : "Налаштування" }, "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index 7027edc23b3..92b0c3ffed9 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Помилка під час збірки частин, код помилки {status}", "Actions" : "Дії", "Rename" : "Перейменувати", + "Move" : "Перемістити", "Copy" : "Скопіювати", "Choose target folder" : "Виберіть теку призначення", "Open" : "Відкрити", @@ -66,7 +67,6 @@ "{dirs} and {files}" : "{dirs} і {files}", "_including %n hidden_::_including %n hidden_" : ["включаючи %n прихований","включаючи %n прихованих","включаючи %n прихованих","включаючи %n прихованих"], "_Uploading %n file_::_Uploading %n files_" : ["Вивантаження %n файлу","Вивантаження %n файлів","Вивантаження %n файлів","Завантаження %n файлів"], - "New" : "Створити", "Select file range" : "Виберіть набір файлів", "{used} of {quota} used" : "Використано {used} з {quota}", "{used} used" : "Використано {used}", @@ -153,7 +153,6 @@ "Cancel" : "Скасувати", "Create" : "Створити", "%s used" : "%s використано", - "%s%% of %s used" : "%s%% з %s використано", "%1$s of %2$s used" : "Використано %1$s з %2$s", "Show hidden files" : "Показувати приховані файли", "WebDAV" : "WebDAV", @@ -178,7 +177,9 @@ "New text file.txt" : "Новий текстовий файл file.txt", "Select" : "Вибрати", "You don’t have permission to upload or create files here" : "У вас недостатньо прав для завантаження або створення тут файлів", + "New" : "Створити", "Cannot transfer ownership of a file or folder you don't own" : "Неможливо передати права власності на файл або теку, що вам не належить", + "%s%% of %s used" : "%s%% з %s використано", "Settings" : "Налаштування" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (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/files/l10n/vi.js b/apps/files/l10n/vi.js index f6e85113951..1fa8d9ac7e7 100644 --- a/apps/files/l10n/vi.js +++ b/apps/files/l10n/vi.js @@ -29,6 +29,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "Lỗi khi lắp ráp khối, mã trạng thái {status}", "Actions" : "Actions", "Rename" : "Sửa tên", + "Move" : "Dịch chuyển", "Copy" : "Sao chép", "Choose target folder" : "Chọn thư mục đích", "Open" : "Mở", @@ -71,7 +72,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} và {files}", "_including %n hidden_::_including %n hidden_" : ["Bao gồm %n ẩn"], "_Uploading %n file_::_Uploading %n files_" : ["Đang tải lên %n tập tin"], - "New" : "Tạo mới", "Select file range" : "Chọn phạm vi tệp", "{used} of {quota} used" : "{used} trong { quota } được sử dụng", "{used} used" : "{used} được sử dụng", @@ -182,7 +182,6 @@ OC.L10N.register( "Templates" : "Mẫu", "Unable to initialize the templates directory" : "Không thể khởi tạo thư mục mẫu", "%s used" : "%s đã sử dụng", - "%s%% of %s used" : "%s%% trong %s đã sử dụng", "%1$s of %2$s used" : "%1$s trên %2$s đã sử dụng", "Show hidden files" : "Hiển thị các file bị ẩn", "Crop image previews" : "Xén ảnh bản xem trước", @@ -208,7 +207,9 @@ OC.L10N.register( "New text file.txt" : "Tệp văn bản mới.txt", "Select" : "Chọn", "You don’t have permission to upload or create files here" : "Bạn không có quyền upload hoặc tạo files ở đây", + "New" : "Tạo mới", "Cannot transfer ownership of a file or folder you don't own" : "Không thể chuyển quyền sở hữu tệp hoặc thư mục bạn không sở hữu", + "%s%% of %s used" : "%s%% trong %s đã sử dụng", "Settings" : "Cài đặt" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/vi.json b/apps/files/l10n/vi.json index aaea0af3701..7e6ad3082b0 100644 --- a/apps/files/l10n/vi.json +++ b/apps/files/l10n/vi.json @@ -27,6 +27,7 @@ "Error when assembling chunks, status code {status}" : "Lỗi khi lắp ráp khối, mã trạng thái {status}", "Actions" : "Actions", "Rename" : "Sửa tên", + "Move" : "Dịch chuyển", "Copy" : "Sao chép", "Choose target folder" : "Chọn thư mục đích", "Open" : "Mở", @@ -69,7 +70,6 @@ "{dirs} and {files}" : "{dirs} và {files}", "_including %n hidden_::_including %n hidden_" : ["Bao gồm %n ẩn"], "_Uploading %n file_::_Uploading %n files_" : ["Đang tải lên %n tập tin"], - "New" : "Tạo mới", "Select file range" : "Chọn phạm vi tệp", "{used} of {quota} used" : "{used} trong { quota } được sử dụng", "{used} used" : "{used} được sử dụng", @@ -180,7 +180,6 @@ "Templates" : "Mẫu", "Unable to initialize the templates directory" : "Không thể khởi tạo thư mục mẫu", "%s used" : "%s đã sử dụng", - "%s%% of %s used" : "%s%% trong %s đã sử dụng", "%1$s of %2$s used" : "%1$s trên %2$s đã sử dụng", "Show hidden files" : "Hiển thị các file bị ẩn", "Crop image previews" : "Xén ảnh bản xem trước", @@ -206,7 +205,9 @@ "New text file.txt" : "Tệp văn bản mới.txt", "Select" : "Chọn", "You don’t have permission to upload or create files here" : "Bạn không có quyền upload hoặc tạo files ở đây", + "New" : "Tạo mới", "Cannot transfer ownership of a file or folder you don't own" : "Không thể chuyển quyền sở hữu tệp hoặc thư mục bạn không sở hữu", + "%s%% of %s used" : "%s%% trong %s đã sử dụng", "Settings" : "Cài đặt" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 99fd92fd101..102d60b503e 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -21,6 +21,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "目标目录 \"{dir}\" 不存在", "Not enough free space" : "可用空间不足", "An unknown error has occurred" : "发生了未知错误。", + "File could not be uploaded" : "文件无法上传", "Uploading …" : "正在上传...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", "Uploading that item is not supported" : "不支持上传此项目", @@ -29,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "组装块时发生错误,状态码 {status}", "Actions" : "操作", "Rename" : "重命名", + "Move" : "移动", "Copy" : "复制", "Choose target folder" : "选择目标文件夹", "Open" : "打开", @@ -43,6 +45,7 @@ OC.L10N.register( "Show grid view" : "显示网格视图", "Please select tag(s) to add to the selection" : "请选择要添加到所选项目的标签", "Apply tag(s) to selection" : "将标签应用到所选项目", + "Select directory \"{dirName}\"" : "选择目录 \"{dirName}\"", "Pending" : "等待", "Unable to determine date" : "无法确定日期", "This operation is forbidden" : "该操作被禁止", @@ -73,7 +76,6 @@ OC.L10N.register( "{dirs} and {files}" : "{dirs} 和 {files}", "_including %n hidden_::_including %n hidden_" : ["包括 %n 个隐藏文件"], "_Uploading %n file_::_Uploading %n files_" : ["正在上传 %n 个文件"], - "New" : "新建", "Select file range" : "选择文件范围", "{used} of {quota} used" : "已使用 {used} / {quota}", "{used} used" : "已使用 {used} 存储空间", @@ -184,7 +186,6 @@ OC.L10N.register( "Templates" : "模板", "Unable to initialize the templates directory" : "无法初始化模板目录", "%s used" : "已使用 %s", - "%s%% of %s used" : "%s 已使用 %s 中的 %%", "%1$s of %2$s used" : "已使用 %2$s 中的 %1$s", "Show hidden files" : "显示隐藏文件", "Crop image previews" : "裁剪图片预览", @@ -211,7 +212,9 @@ OC.L10N.register( "New text file.txt" : "新建文本文档.txt", "Select" : "选择", "You don’t have permission to upload or create files here" : "您没有权限在此上传或创建文件", + "New" : "新建", "Cannot transfer ownership of a file or folder you don't own" : "无法转让您未拥有的文件或文件夹的所有权", + "%s%% of %s used" : "%s 已使用 %s 中的 %%", "Settings" : "设置" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 13b04e48cb4..10a91f9a4a7 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -19,6 +19,7 @@ "Target folder \"{dir}\" does not exist any more" : "目标目录 \"{dir}\" 不存在", "Not enough free space" : "可用空间不足", "An unknown error has occurred" : "发生了未知错误。", + "File could not be uploaded" : "文件无法上传", "Uploading …" : "正在上传...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", "Uploading that item is not supported" : "不支持上传此项目", @@ -27,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "组装块时发生错误,状态码 {status}", "Actions" : "操作", "Rename" : "重命名", + "Move" : "移动", "Copy" : "复制", "Choose target folder" : "选择目标文件夹", "Open" : "打开", @@ -41,6 +43,7 @@ "Show grid view" : "显示网格视图", "Please select tag(s) to add to the selection" : "请选择要添加到所选项目的标签", "Apply tag(s) to selection" : "将标签应用到所选项目", + "Select directory \"{dirName}\"" : "选择目录 \"{dirName}\"", "Pending" : "等待", "Unable to determine date" : "无法确定日期", "This operation is forbidden" : "该操作被禁止", @@ -71,7 +74,6 @@ "{dirs} and {files}" : "{dirs} 和 {files}", "_including %n hidden_::_including %n hidden_" : ["包括 %n 个隐藏文件"], "_Uploading %n file_::_Uploading %n files_" : ["正在上传 %n 个文件"], - "New" : "新建", "Select file range" : "选择文件范围", "{used} of {quota} used" : "已使用 {used} / {quota}", "{used} used" : "已使用 {used} 存储空间", @@ -182,7 +184,6 @@ "Templates" : "模板", "Unable to initialize the templates directory" : "无法初始化模板目录", "%s used" : "已使用 %s", - "%s%% of %s used" : "%s 已使用 %s 中的 %%", "%1$s of %2$s used" : "已使用 %2$s 中的 %1$s", "Show hidden files" : "显示隐藏文件", "Crop image previews" : "裁剪图片预览", @@ -209,7 +210,9 @@ "New text file.txt" : "新建文本文档.txt", "Select" : "选择", "You don’t have permission to upload or create files here" : "您没有权限在此上传或创建文件", + "New" : "新建", "Cannot transfer ownership of a file or folder you don't own" : "无法转让您未拥有的文件或文件夹的所有权", + "%s%% of %s used" : "%s 已使用 %s 中的 %%", "Settings" : "设置" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js index fc1aefaa926..2ab0a8a956a 100644 --- a/apps/files/l10n/zh_HK.js +++ b/apps/files/l10n/zh_HK.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "重組檔案片段時出錯,狀態代碼 {status}", "Actions" : "操作", "Rename" : "重新命名", + "Move" : "移動", "Copy" : "複製", "Choose target folder" : "選擇目標資料夾", "Open" : "開啟", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["包括 %n 個隱藏檔"], "You do not have permission to upload or create files here" : "您無權限上傳或建立檔案", "_Uploading %n file_::_Uploading %n files_" : ["正在上傳 %n 個檔案"], - "New" : "新增", + "New file/folder menu" : "新檔案/資料夾選項單", "Select file range" : "選擇多個檔案", + "{used}%" : "{used}%", "{used} of {quota} used" : "已使用 {quota} 當中的 {used}", "{used} used" : "已使用 {used}", "\"{name}\" is an invalid file name." : "\"{name}\" 是無效的檔案名稱。", @@ -189,7 +191,7 @@ OC.L10N.register( "Templates" : "模板", "Unable to initialize the templates directory" : "無法初始化模板目錄", "%s used" : "使用了 %s 的存儲空間", - "%s%% of %s used" : "%s 在 %s 中使用了 %%", + "%s%%" : "%s%%", "%1$s of %2$s used" : "在 %2$s 中使用了 %1$s", "Files settings" : "檔案設定", "Show hidden files" : "顯示隱藏檔", @@ -217,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "新文字檔.txt", "Select" : "選擇", "You don’t have permission to upload or create files here" : "您無權限上傳或建立檔案", + "New" : "新增", "Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權。", + "%s%% of %s used" : "%s 在 %s 中使用了 %%", "Settings" : "設定" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json index 74cc0b5eae5..b8024ce52c6 100644 --- a/apps/files/l10n/zh_HK.json +++ b/apps/files/l10n/zh_HK.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "重組檔案片段時出錯,狀態代碼 {status}", "Actions" : "操作", "Rename" : "重新命名", + "Move" : "移動", "Copy" : "複製", "Choose target folder" : "選擇目標資料夾", "Open" : "開啟", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["包括 %n 個隱藏檔"], "You do not have permission to upload or create files here" : "您無權限上傳或建立檔案", "_Uploading %n file_::_Uploading %n files_" : ["正在上傳 %n 個檔案"], - "New" : "新增", + "New file/folder menu" : "新檔案/資料夾選項單", "Select file range" : "選擇多個檔案", + "{used}%" : "{used}%", "{used} of {quota} used" : "已使用 {quota} 當中的 {used}", "{used} used" : "已使用 {used}", "\"{name}\" is an invalid file name." : "\"{name}\" 是無效的檔案名稱。", @@ -187,7 +189,7 @@ "Templates" : "模板", "Unable to initialize the templates directory" : "無法初始化模板目錄", "%s used" : "使用了 %s 的存儲空間", - "%s%% of %s used" : "%s 在 %s 中使用了 %%", + "%s%%" : "%s%%", "%1$s of %2$s used" : "在 %2$s 中使用了 %1$s", "Files settings" : "檔案設定", "Show hidden files" : "顯示隱藏檔", @@ -215,7 +217,9 @@ "New text file.txt" : "新文字檔.txt", "Select" : "選擇", "You don’t have permission to upload or create files here" : "您無權限上傳或建立檔案", + "New" : "新增", "Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權。", + "%s%% of %s used" : "%s 在 %s 中使用了 %%", "Settings" : "設定" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js index 6f51a1ab2f2..37d39945eaa 100644 --- a/apps/files/l10n/zh_TW.js +++ b/apps/files/l10n/zh_TW.js @@ -30,6 +30,7 @@ OC.L10N.register( "Error when assembling chunks, status code {status}" : "重組檔案片段時出錯,狀態代碼 {status}", "Actions" : "動作", "Rename" : "重新命名", + "Move" : "移動", "Copy" : "複製", "Choose target folder" : "選擇目標資料夾", "Open" : "開啟", @@ -77,8 +78,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["包含 %n 個隱藏檔"], "You do not have permission to upload or create files here" : "您無權在此上傳或建立檔案", "_Uploading %n file_::_Uploading %n files_" : ["正在上傳 %n 個檔案"], - "New" : "新增", + "New file/folder menu" : "新檔案/資料夾選單", "Select file range" : "選取多個檔案", + "{used}%" : "{used}%", "{used} of {quota} used" : "已使用 {quota} 當中的 {used}", "{used} used" : "已使用 {used}", "\"{name}\" is an invalid file name." : "{name} 是無效的檔名。", @@ -189,8 +191,9 @@ OC.L10N.register( "Templates" : "範本", "Unable to initialize the templates directory" : "無法初始化範本目錄", "%s used" : "%s 已使用", - "%s%% of %s used" : "%s 在 %s 中使用了 %%", + "%s%%" : "%s%%", "%1$s of %2$s used" : "在 %2$s 中使用了 %1$s ", + "Files settings" : "檔案設定", "Show hidden files" : "顯示隱藏檔", "Crop image previews" : "圖片裁剪預覽", "WebDAV" : "WebDAV", @@ -216,7 +219,9 @@ OC.L10N.register( "New text file.txt" : "新文字檔案.txt", "Select" : "選取", "You don’t have permission to upload or create files here" : "您沒有權限在這裡上傳或建立檔案", + "New" : "新增", "Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權", + "%s%% of %s used" : "%s 在 %s 中使用了 %%", "Settings" : "設定" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json index a15d6d81a5f..376df8c135c 100644 --- a/apps/files/l10n/zh_TW.json +++ b/apps/files/l10n/zh_TW.json @@ -28,6 +28,7 @@ "Error when assembling chunks, status code {status}" : "重組檔案片段時出錯,狀態代碼 {status}", "Actions" : "動作", "Rename" : "重新命名", + "Move" : "移動", "Copy" : "複製", "Choose target folder" : "選擇目標資料夾", "Open" : "開啟", @@ -75,8 +76,9 @@ "_including %n hidden_::_including %n hidden_" : ["包含 %n 個隱藏檔"], "You do not have permission to upload or create files here" : "您無權在此上傳或建立檔案", "_Uploading %n file_::_Uploading %n files_" : ["正在上傳 %n 個檔案"], - "New" : "新增", + "New file/folder menu" : "新檔案/資料夾選單", "Select file range" : "選取多個檔案", + "{used}%" : "{used}%", "{used} of {quota} used" : "已使用 {quota} 當中的 {used}", "{used} used" : "已使用 {used}", "\"{name}\" is an invalid file name." : "{name} 是無效的檔名。", @@ -187,8 +189,9 @@ "Templates" : "範本", "Unable to initialize the templates directory" : "無法初始化範本目錄", "%s used" : "%s 已使用", - "%s%% of %s used" : "%s 在 %s 中使用了 %%", + "%s%%" : "%s%%", "%1$s of %2$s used" : "在 %2$s 中使用了 %1$s ", + "Files settings" : "檔案設定", "Show hidden files" : "顯示隱藏檔", "Crop image previews" : "圖片裁剪預覽", "WebDAV" : "WebDAV", @@ -214,7 +217,9 @@ "New text file.txt" : "新文字檔案.txt", "Select" : "選取", "You don’t have permission to upload or create files here" : "您沒有權限在這裡上傳或建立檔案", + "New" : "新增", "Cannot transfer ownership of a file or folder you don't own" : "無法轉移您未擁有的檔案或是資料夾所有權", + "%s%% of %s used" : "%s 在 %s 中使用了 %%", "Settings" : "設定" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/lib/Activity/Provider.php b/apps/files/lib/Activity/Provider.php index a7db85a0de1..c21e8f9ad16 100644 --- a/apps/files/lib/Activity/Provider.php +++ b/apps/files/lib/Activity/Provider.php @@ -527,12 +527,12 @@ class Provider implements IProvider { */ protected function getUser($uid) { // First try local user - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { + $displayName = $this->userManager->getDisplayName($uid); + if ($displayName !== null) { return [ 'type' => 'user', - 'id' => $user->getUID(), - 'name' => $user->getDisplayName(), + 'id' => $uid, + 'name' => $displayName, ]; } diff --git a/apps/files/lib/BackgroundJob/ScanFiles.php b/apps/files/lib/BackgroundJob/ScanFiles.php index 07794a28774..8dc9dcf37ff 100644 --- a/apps/files/lib/BackgroundJob/ScanFiles.php +++ b/apps/files/lib/BackgroundJob/ScanFiles.php @@ -25,6 +25,8 @@ namespace OCA\Files\BackgroundJob; use OC\Files\Utils\Scanner; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\TimedJob; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; @@ -37,13 +39,11 @@ use Psr\Log\LoggerInterface; * * @package OCA\Files\BackgroundJob */ -class ScanFiles extends \OC\BackgroundJob\TimedJob { - /** @var IConfig */ - private $config; - /** @var IEventDispatcher */ - private $dispatcher; +class ScanFiles extends TimedJob { + private IConfig $config; + private IEventDispatcher $dispatcher; private LoggerInterface $logger; - private $connection; + private IDBConnection $connection; /** Amount of users that should get scanned per execution */ public const USERS_PER_SESSION = 500; @@ -52,8 +52,10 @@ class ScanFiles extends \OC\BackgroundJob\TimedJob { IConfig $config, IEventDispatcher $dispatcher, LoggerInterface $logger, - IDBConnection $connection + IDBConnection $connection, + ITimeFactory $time ) { + parent::__construct($time); // Run once per 10 minutes $this->setInterval(60 * 10); @@ -63,10 +65,7 @@ class ScanFiles extends \OC\BackgroundJob\TimedJob { $this->connection = $connection; } - /** - * @param string $user - */ - protected function runScanner(string $user) { + protected function runScanner(string $user): void { try { $scanner = new Scanner( $user, @@ -95,7 +94,7 @@ class ScanFiles extends \OC\BackgroundJob\TimedJob { ->andWhere($query->expr()->gt('parent', $query->createNamedParameter(-1, IQueryBuilder::PARAM_INT))) ->setMaxResults(1); - return $query->execute()->fetchOne(); + return $query->executeQuery()->fetchOne(); } /** diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index 587f75f3f02..82f56be9f18 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -46,6 +46,7 @@ use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\Response; use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Services\IInitialState; +use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as ResourcesLoadAdditionalScriptsEvent; use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Folder; use OCP\Files\IRootFolder; @@ -294,6 +295,7 @@ class ViewController extends Controller { ]; } + $this->eventDispatcher->dispatchTyped(new ResourcesLoadAdditionalScriptsEvent()); $event = new LoadAdditionalScriptsEvent(); $this->eventDispatcher->dispatchTyped($event); $this->eventDispatcher->dispatchTyped(new LoadSidebar()); @@ -301,6 +303,7 @@ class ViewController extends Controller { if (class_exists(LoadViewer::class)) { $this->eventDispatcher->dispatchTyped(new LoadViewer()); } + $this->initialState->provideInitialState('templates_path', $this->templateManager->hasTemplateDirectory() ? $this->templateManager->getTemplatePath() : false); $this->initialState->provideInitialState('templates', $this->templateManager->listCreators()); diff --git a/apps/files/lib/Helper.php b/apps/files/lib/Helper.php index 18fea3aa2a1..1d9591cafe0 100644 --- a/apps/files/lib/Helper.php +++ b/apps/files/lib/Helper.php @@ -58,8 +58,9 @@ class Helper { 'maxHumanFilesize' => $maxHumanFileSize, 'freeSpace' => $storageInfo['free'], 'quota' => $storageInfo['quota'], + 'total' => $storageInfo['total'], 'used' => $storageInfo['used'], - 'usedSpacePercent' => (int)$storageInfo['relative'], + 'usedSpacePercent' => $storageInfo['relative'], 'owner' => $storageInfo['owner'], 'ownerDisplayName' => $storageInfo['ownerDisplayName'], 'mountType' => $storageInfo['mountType'], diff --git a/apps/files/src/components/SidebarTab.vue b/apps/files/src/components/SidebarTab.vue index ad80f91d431..c0f5a7d4416 100644 --- a/apps/files/src/components/SidebarTab.vue +++ b/apps/files/src/components/SidebarTab.vue @@ -21,30 +21,30 @@ - --> <template> - <AppSidebarTab :id="id" + <NcAppSidebarTab :id="id" ref="tab" :name="name" :icon="icon" @bottomReached="onScrollBottomReached"> <!-- Fallback loading --> - <EmptyContent v-if="loading" icon="icon-loading" /> + <NcEmptyContent v-if="loading" icon="icon-loading" /> <!-- Using a dummy div as Vue mount replace the element directly It does NOT append to the content --> <div ref="mount" /> - </AppSidebarTab> + </NcAppSidebarTab> </template> <script> -import AppSidebarTab from '@nextcloud/vue/dist/Components/AppSidebarTab' -import EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent' +import NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab' +import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' export default { name: 'SidebarTab', components: { - AppSidebarTab, - EmptyContent, + NcAppSidebarTab, + NcEmptyContent, }, props: { diff --git a/apps/files/src/components/TransferOwnershipDialogue.vue b/apps/files/src/components/TransferOwnershipDialogue.vue index 8e96cdebf54..67840b18829 100644 --- a/apps/files/src/components/TransferOwnershipDialogue.vue +++ b/apps/files/src/components/TransferOwnershipDialogue.vue @@ -25,19 +25,19 @@ <form @submit.prevent="submit"> <p class="transfer-select-row"> <span>{{ readableDirectory }}</span> - <Button v-if="directory === undefined" @click.prevent="start"> + <NcButton v-if="directory === undefined" @click.prevent="start"> {{ t('files', 'Choose file or folder to transfer') }} - </Button> - <Button v-else @click.prevent="start"> + </NcButton> + <NcButton v-else @click.prevent="start"> {{ t('files', 'Change') }} - </Button> + </NcButton> <span class="error">{{ directoryPickerError }}</span> </p> <p class="new-owner-row"> <label for="targetUser"> <span>{{ t('files', 'New owner') }}</span> </label> - <Multiselect id="targetUser" + <NcMultiselect id="targetUser" v-model="selectedUser" :options="formatedUserSuggestions" :multiple="false" @@ -70,9 +70,9 @@ import axios from '@nextcloud/axios' import debounce from 'debounce' import { generateOcsUrl } from '@nextcloud/router' import { getFilePickerBuilder, showSuccess } from '@nextcloud/dialogs' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import Vue from 'vue' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' import logger from '../logger' @@ -86,8 +86,8 @@ const picker = getFilePickerBuilder(t('files', 'Choose a file or folder to trans export default { name: 'TransferOwnershipDialogue', components: { - Multiselect, - Button, + NcMultiselect, + NcButton, }, data() { return { diff --git a/apps/files/src/services/FileInfo.js b/apps/files/src/services/FileInfo.js index 8b62063e134..c09af45f495 100644 --- a/apps/files/src/services/FileInfo.js +++ b/apps/files/src/services/FileInfo.js @@ -47,6 +47,7 @@ export default async function(url) { <nc:mount-type /> <nc:is-encrypted /> <ocs:share-permissions /> + <nc:share-attributes /> <oc:tags /> <oc:favorite /> <oc:comments-unread /> diff --git a/apps/files/src/views/Sidebar.vue b/apps/files/src/views/Sidebar.vue index 8fbf7a917f7..88c4fda4f5d 100644 --- a/apps/files/src/views/Sidebar.vue +++ b/apps/files/src/views/Sidebar.vue @@ -21,10 +21,11 @@ --> <template> - <AppSidebar v-if="file" + <NcAppSidebar v-if="file" ref="sidebar" v-bind="appSidebar" :force-menu="true" + tabindex="0" @close="close" @update:active="setActiveTab" @update:starred="toggleStarred" @@ -45,18 +46,18 @@ <template v-if="fileInfo" #secondary-actions> <!-- TODO: create proper api for apps to register actions And inject themselves here. --> - <ActionButton v-if="isSystemTagsEnabled" + <NcActionButton v-if="isSystemTagsEnabled" :close-after-click="true" icon="icon-tag" @click="toggleTags"> {{ t('files', 'Tags') }} - </ActionButton> + </NcActionButton> </template> <!-- Error display --> - <EmptyContent v-if="error" icon="icon-error"> + <NcEmptyContent v-if="error" icon="icon-error"> {{ error }} - </EmptyContent> + </NcEmptyContent> <!-- If fileInfo fetch is complete, render tabs --> <template v-for="tab in tabs" v-else-if="fileInfo"> @@ -73,7 +74,7 @@ :on-scroll-bottom-reached="tab.scrollBottomReached" :file-info="fileInfo" /> </template> - </AppSidebar> + </NcAppSidebar> </template> <script> import { encodePath } from '@nextcloud/paths' @@ -83,9 +84,9 @@ import { emit } from '@nextcloud/event-bus' import moment from '@nextcloud/moment' import { Type as ShareTypes } from '@nextcloud/sharing' -import AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent' +import NcAppSidebar from '@nextcloud/vue/dist/Components/NcAppSidebar' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' import FileInfo from '../services/FileInfo' import SidebarTab from '../components/SidebarTab' @@ -95,9 +96,9 @@ export default { name: 'Sidebar', components: { - ActionButton, - AppSidebar, - EmptyContent, + NcActionButton, + NcAppSidebar, + NcEmptyContent, LegacyView, SidebarTab, }, @@ -459,6 +460,11 @@ export default { */ setFullScreenMode(isFullScreen) { this.isFullScreen = isFullScreen + if (isFullScreen) { + document.querySelector('#content').classList.add('with-sidebar--full') + } else { + document.querySelector('#content').classList.remove('with-sidebar--full') + } }, /** diff --git a/apps/files/src/views/TemplatePicker.vue b/apps/files/src/views/TemplatePicker.vue index 6ba98b39800..3a1dc15b790 100644 --- a/apps/files/src/views/TemplatePicker.vue +++ b/apps/files/src/views/TemplatePicker.vue @@ -21,7 +21,7 @@ --> <template> - <Modal v-if="opened" + <NcModal v-if="opened" :clear-view-delay="-1" class="templates-picker" size="normal" @@ -57,17 +57,17 @@ </div> </form> - <EmptyContent v-if="loading" class="templates-picker__loading" icon="icon-loading"> + <NcEmptyContent v-if="loading" class="templates-picker__loading" icon="icon-loading"> {{ t('files', 'Creating file') }} - </EmptyContent> - </Modal> + </NcEmptyContent> + </NcModal> </template> <script> import { normalize } from 'path' import { showError } from '@nextcloud/dialogs' -import EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent' -import Modal from '@nextcloud/vue/dist/Components/Modal' +import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' +import NcModal from '@nextcloud/vue/dist/Components/NcModal' import { getCurrentDirectory } from '../utils/davUtils' import { createFromTemplate, getTemplates } from '../services/Templates' @@ -81,8 +81,8 @@ export default { name: 'TemplatePicker', components: { - EmptyContent, - Modal, + NcEmptyContent, + NcModal, TemplatePreview, }, diff --git a/apps/files/templates/appnavigation.php b/apps/files/templates/appnavigation.php index 9c875d9530c..5684c3d0d32 100644 --- a/apps/files/templates/appnavigation.php +++ b/apps/files/templates/appnavigation.php @@ -1,5 +1,5 @@ -<div id="app-navigation"> - <ul class="with-icon"> +<div id="app-navigation" role="navigation"> + <ul class="with-icon" tabindex="0"> <?php @@ -17,7 +17,7 @@ </li> <?php else: ?> <li id="quota" class="has-tooltip pinned <?php p($pinned === 0 ? 'first-pinned ' : '') ?>" - title="<?php p($l->t('%s%% of %s used', [$_['usage_relative'], $_['total_space']])); ?>"> + title="<?php p($l->t('%s%%', [round($_['usage_relative'])])); ?>"> <a href="#" class="icon-quota svg quota-navigation-item"> <p id="quotatext" class="quota-navigation-item__text"><?php p($l->t('%1$s of %2$s used', [$_['usage'], $_['total_space']])); ?></p> <div class="quota-navigation-item__container"> @@ -90,7 +90,7 @@ function NavigationListElements($item, $l, $pinned) { NavigationElementMenu($item); if (isset($item['sublist'])) { ?> - <button class="collapse app-navigation-noclose" + <button class="collapse app-navigation-noclose" aria-expanded="<?= !empty($item['defaultExpandedState']) ? 'true' : 'false' ?>" aria-label="<?php p($l->t('Toggle %1$s sublist', $item['name'])) ?>" <?php if (sizeof($item['sublist']) == 0) { ?> style="display: none" <?php } ?>> </button> diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index e12d9fafab3..016e6f32c70 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -1,6 +1,6 @@ <?php /** @var \OCP\IL10N $l */ ?> <?php $_['appNavigation']->printPage(); ?> -<div id="app-content"> +<div id="app-content" tabindex="0"> <input type="checkbox" class="hidden-visually" id="showgridview" aria-label="<?php p($l->t('Toggle grid view'))?>" diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php index 9087c86a4a2..13583c23cbf 100644 --- a/apps/files/templates/list.php +++ b/apps/files/templates/list.php @@ -1,9 +1,8 @@ -<div id="controls"> +<div class="files-controls"> <div class="actions creatable hidden"> <div id="uploadprogresswrapper"> </div> </div> - <div id="file_action_panel"></div> <div class="notCreatable notPublic hidden"> <div class="icon-alert-outline"></div> <?php p($l->t('You do not have permission to upload or create files here'))?> @@ -11,7 +10,7 @@ <?php /* Note: the template attributes are here only for the public page. These are normally loaded through ajax instead (updateStorageStatistics). */ ?> - <input type="hidden" name="permissions" value="" id="permissions"> + <input type="hidden" id="permissions" value=""> <input type="hidden" id="free_space" value="<?php isset($_['freeSpace']) ? p($_['freeSpace']) : '' ?>"> <?php if (isset($_['dirToken'])):?> <input type="hidden" id="publicUploadRequestToken" name="requesttoken" value="<?php p($_['requesttoken']) ?>" /> @@ -20,9 +19,9 @@ <input type="hidden" class="max_human_file_size" value="(max <?php isset($_['uploadMaxHumanFilesize']) ? p($_['uploadMaxHumanFilesize']) : ''; ?>)"> </div> -<div id="filelist-header"></div> +<div class="filelist-header"></div> -<div id="emptycontent" class="hidden"> +<div class="emptyfilelist emptycontent hidden"> <div class="icon-folder"></div> <h2><?php p($l->t('No files in here')); ?></h2> <p class="uploadmessage hidden"><?php p($l->t('Upload some content or sync with your devices!')); ?></p> @@ -33,23 +32,23 @@ <h2><?php p($l->t('No entries found in this folder')); ?></h2> <p></p> </div> -<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>" data-preview-x="250" data-preview-y="250"> +<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>" data-preview-x="250" data-preview-y="250"> <thead> <tr> - <th id="headerSelection" class="hidden column-selection"> + <th class="hidden column-selection"> <input type="checkbox" id="select_all_files" class="select-all checkbox"/> <label for="select_all_files"> <span class="hidden-visually"><?php p($l->t('Select all'))?></span> </label> </th> - <th id='headerName' class="hidden column-name"> - <div id="headerName-container"> + <th class="hidden column-name"> + <div class="column-name-container"> <a class="name sort columntitle" onclick="event.preventDefault()" href="#" data-sort="name"> <span><?php p($l->t('Name')); ?></span> <span class="sort-indicator"></span> </a> - <span id="selectedActionsList" class="selectedActions"> + <span class="selectedActions"> <a href="#" onclick="event.preventDefault()" class="actions-selected"> <span class="icon icon-more"></span> <span><?php p($l->t('Actions'))?></span> @@ -57,21 +56,20 @@ </span> </div> </th> - <th id="headerSize" class="hidden column-size"> + <th class="hidden column-size"> <a class="size sort columntitle" href="#" onclick="event.preventDefault()" data-sort="size"><span><?php p($l->t('Size')); ?></span><span class="sort-indicator"></span></a> </th> - <th id="headerDate" class="hidden column-mtime"> - <a id="modified" class="columntitle" href="#" onclick="event.preventDefault()" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a> + <th class="hidden column-mtime"> + <a class="columntitle" href="#" onclick="event.preventDefault()" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a> </th> </tr> </thead> - <tbody id="fileList"> + <tbody class="files-fileList"> </tbody> <tfoot> </tfoot> </table> -<div id="filelist-footer"></div> -<input type="hidden" name="dir" id="dir" value="" /> +<div class="filelist-footer"></div> <div class="hiddenuploadfield"> <input type="file" id="file_upload_start" class="hiddenuploadfield" name="files[]" /> </div> diff --git a/apps/files/templates/recentlist.php b/apps/files/templates/recentlist.php index 3a5049bc2de..994dadc2ba4 100644 --- a/apps/files/templates/recentlist.php +++ b/apps/files/templates/recentlist.php @@ -1,9 +1,6 @@ <?php /** @var \OCP\IL10N $l */ ?> -<div id='notification'></div> -<div id="emptycontent" class="hidden"></div> - -<input type="hidden" name="dir" value="" id="dir"> +<div class="emptyfilelist emptycontent hidden"></div> <div class="nofilterresults emptycontent hidden"> <div class="icon-search"></div> @@ -11,21 +8,21 @@ <p></p> </div> -<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> +<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> <thead> <tr> - <th id='headerName' class="hidden column-name"> - <div id="headerName-container"> + <th class="hidden column-name"> + <div class="column-name-container"> <a class="name sort columntitle" href="#" onclick="event.preventDefault()" data-sort="name"><span><?php p($l->t('Name')); ?></span></a> </div> </th> - <th id="headerSize" class="hidden column-size"> + <th class="hidden column-size"> <a class="size sort columntitle" href="#" onclick="event.preventDefault()" data-sort="size"><span><?php p($l->t('Size')); ?></span></a> </th> - <th id="headerDate" class="hidden column-mtime"> - <a id="modified" class="columntitle" href="#" onclick="event.preventDefault()" + <th class="hidden column-mtime"> + <a class="columntitle" href="#" onclick="event.preventDefault()" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a> <span class="selectedActions"> @@ -37,7 +34,7 @@ </th> </tr> </thead> - <tbody id="fileList"> + <tbody class="files-fileList"> </tbody> <tfoot> </tfoot> diff --git a/apps/files/templates/simplelist.php b/apps/files/templates/simplelist.php index 917fc307ff8..fc0a9fb38c9 100644 --- a/apps/files/templates/simplelist.php +++ b/apps/files/templates/simplelist.php @@ -1,31 +1,27 @@ -<div id='notification'></div> - -<div id="emptycontent" class="hidden"> +<div class="emptyfilelist emptycontent hidden"> <div class="icon-starred"></div> <h2><?php p($l->t('No favorites yet')); ?></h2> <p><?php p($l->t('Files and folders you mark as favorite will show up here')); ?></p> </div> -<input type="hidden" name="dir" value="" id="dir"> - <div class="nofilterresults emptycontent hidden"> <div class="icon-search"></div> <h2><?php p($l->t('No entries found in this folder')); ?></h2> <p></p> </div> -<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> +<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> <thead> <tr> - <th id='headerName' class="hidden column-name"> - <div id="headerName-container"> + <th class="hidden column-name"> + <div class="column-name-container"> <a class="name sort columntitle" onclick="event.preventDefault()" href="#" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a> </div> </th> - <th id="headerSize" class="hidden column-size"> + <th class="hidden column-size"> <a class="size sort columntitle" onclick="event.preventDefault()" href="#" data-sort="size"><span><?php p($l->t('Size')); ?></span><span class="sort-indicator"></span></a> </th> - <th id="headerDate" class="hidden column-mtime"> - <a id="modified" class="columntitle" onclick="event.preventDefault()" href="#" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a> + <th class="hidden column-mtime"> + <a class="columntitle" onclick="event.preventDefault()" href="#" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a> <span class="selectedActions"> <a onclick="event.preventDefault()" href="#" class="delete-selected"> <img class="svg" alt="" @@ -36,7 +32,7 @@ </th> </tr> </thead> - <tbody id="fileList"> + <tbody class="files-fileList"> </tbody> <tfoot> </tfoot> diff --git a/apps/files/tests/Activity/ProviderTest.php b/apps/files/tests/Activity/ProviderTest.php index 7c5bdf27ba1..3566d83f415 100644 --- a/apps/files/tests/Activity/ProviderTest.php +++ b/apps/files/tests/Activity/ProviderTest.php @@ -177,17 +177,10 @@ class ProviderTest extends TestCase { $provider = $this->getProvider(); if ($userDisplayName !== null) { - $user = $this->createMock(IUser::class); - $user->expects($this->once()) - ->method('getUID') - ->willReturn($uid); - $user->expects($this->once()) - ->method('getDisplayName') - ->willReturn($userDisplayName); $this->userManager->expects($this->once()) - ->method('get') + ->method('getDisplayName') ->with($uid) - ->willReturn($user); + ->willReturn($userDisplayName); } if ($cloudIdData !== null) { $this->cloudIdManager->expects($this->once()) diff --git a/apps/files/tests/BackgroundJob/ScanFilesTest.php b/apps/files/tests/BackgroundJob/ScanFilesTest.php index 5b2d52b48d3..cf0120da09d 100644 --- a/apps/files/tests/BackgroundJob/ScanFilesTest.php +++ b/apps/files/tests/BackgroundJob/ScanFilesTest.php @@ -26,6 +26,7 @@ namespace OCA\Files\Tests\BackgroundJob; use OC\Files\Mount\MountPoint; use OC\Files\Storage\Temporary; use OCA\Files\BackgroundJob\ScanFiles; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IUser; @@ -64,6 +65,7 @@ class ScanFilesTest extends TestCase { $dispatcher, $logger, $connection, + $this->createMock(ITimeFactory::class) ]) ->setMethods(['runScanner']) ->getMock(); diff --git a/apps/files/tests/js/breadcrumbSpec.js b/apps/files/tests/js/breadcrumbSpec.js index 820b0f70569..52c9f51835e 100644 --- a/apps/files/tests/js/breadcrumbSpec.js +++ b/apps/files/tests/js/breadcrumbSpec.js @@ -183,9 +183,9 @@ describe('OCA.Files.BreadCrumb tests', function() { // append dummy navigation and controls // as they are currently used for measurements $('#testArea').append( - '<div id="controls"></div>' + '<div class="files-controls"></div>' ); - $('#controls').append(bc.$el); + $('.files-controls').append(bc.$el); bc.setDirectory(dummyDir); @@ -197,11 +197,11 @@ describe('OCA.Files.BreadCrumb tests', function() { $('div.crumbhome').css('width', 51); $('div.crumbmenu').css('width', 51); - $('#controls').width(1000); + $('.files-controls').width(1000); bc._resize(); // Shrink to show popovermenu - $('#controls').width(300); + $('.files-controls').width(300); bc._resize(); $crumbmenuLink = bc.$el.find('.crumbmenu > a'); @@ -232,9 +232,9 @@ describe('OCA.Files.BreadCrumb tests', function() { // append dummy navigation and controls // as they are currently used for measurements $('#testArea').append( - '<div id="controls"></div>' + '<div class="files-controls"></div>' ); - $('#controls').append(bc.$el); + $('.files-controls').append(bc.$el); // triggers resize implicitly bc.setDirectory(dummyDir); @@ -260,7 +260,7 @@ describe('OCA.Files.BreadCrumb tests', function() { it('Hides breadcrumbs to fit available width', function() { var $crumbs; - $('#controls').width(500); + $('.files-controls').width(500); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -280,7 +280,7 @@ describe('OCA.Files.BreadCrumb tests', function() { it('Hides breadcrumbs to fit available width', function() { var $crumbs; - $('#controls').width(700); + $('.files-controls').width(700); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -306,7 +306,7 @@ describe('OCA.Files.BreadCrumb tests', function() { $(this).css('padding', paddings[index]); }); - $('#controls').width(700); + $('.files-controls').width(700); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -333,7 +333,7 @@ describe('OCA.Files.BreadCrumb tests', function() { $(this).css('margin', margins[index]); }); - $('#controls').width(700); + $('.files-controls').width(700); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -353,7 +353,7 @@ describe('OCA.Files.BreadCrumb tests', function() { it('Hides breadcrumbs to fit available width left by siblings', function() { var $crumbs; - $('#controls').width(700); + $('.files-controls').width(700); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -375,28 +375,28 @@ describe('OCA.Files.BreadCrumb tests', function() { // handling in the browsers used to run the tests. $previousSibling.css('width', '50px'); $previousSibling.css('min-width', '50px'); - $('#controls').prepend($previousSibling); + $('.files-controls').prepend($previousSibling); var $creatableActions = $('<div class="actions creatable"></div>'); // Set both the width and the min-width to even differences in width // handling in the browsers used to run the tests. $creatableActions.css('width', '100px'); $creatableActions.css('min-width', '100px'); - $('#controls').append($creatableActions); + $('.files-controls').append($creatableActions); var $nextHiddenSibling = $('<div class="otherSibling hidden"></div>'); // Set both the width and the min-width to even differences in width // handling in the browsers used to run the tests. $nextHiddenSibling.css('width', '200px'); $nextHiddenSibling.css('min-width', '200px'); - $('#controls').append($nextHiddenSibling); + $('.files-controls').append($nextHiddenSibling); var $nextSibling = $('<div class="otherSibling"></div>'); // Set both the width and the min-width to even differences in width // handling in the browsers used to run the tests. $nextSibling.css('width', '50px'); $nextSibling.css('min-width', '50px'); - $('#controls').append($nextSibling); + $('.files-controls').append($nextSibling); bc._resize(); @@ -415,7 +415,7 @@ describe('OCA.Files.BreadCrumb tests', function() { it('Hides breadcrumbs to fit available width left by siblings with paddings and margins', function() { var $crumbs; - $('#controls').width(700); + $('.files-controls').width(700); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -438,7 +438,7 @@ describe('OCA.Files.BreadCrumb tests', function() { $previousSibling.css('width', '10px'); $previousSibling.css('min-width', '10px'); $previousSibling.css('margin', '20px'); - $('#controls').prepend($previousSibling); + $('.files-controls').prepend($previousSibling); var $creatableActions = $('<div class="actions creatable"></div>'); // Set both the width and the min-width to even differences in width @@ -447,14 +447,14 @@ describe('OCA.Files.BreadCrumb tests', function() { $creatableActions.css('min-width', '20px'); $creatableActions.css('margin-left', '40px'); $creatableActions.css('padding-right', '40px'); - $('#controls').append($creatableActions); + $('.files-controls').append($creatableActions); var $nextHiddenSibling = $('<div class="otherSibling hidden"></div>'); // Set both the width and the min-width to even differences in width // handling in the browsers used to run the tests. $nextHiddenSibling.css('width', '200px'); $nextHiddenSibling.css('min-width', '200px'); - $('#controls').append($nextHiddenSibling); + $('.files-controls').append($nextHiddenSibling); var $nextSibling = $('<div class="otherSibling"></div>'); // Set both the width and the min-width to even differences in width @@ -462,7 +462,7 @@ describe('OCA.Files.BreadCrumb tests', function() { $nextSibling.css('width', '10px'); $nextSibling.css('min-width', '10px'); $nextSibling.css('padding', '20px'); - $('#controls').append($nextSibling); + $('.files-controls').append($nextSibling); bc._resize(); @@ -482,7 +482,7 @@ describe('OCA.Files.BreadCrumb tests', function() { var $crumbs; // enough space - $('#controls').width(1800); + $('.files-controls').width(1800); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -491,7 +491,7 @@ describe('OCA.Files.BreadCrumb tests', function() { expect($crumbs.eq(0).hasClass('hidden')).toEqual(true); // simulate decrease - $('#controls').width(950); + $('.files-controls').width(950); bc._resize(); // Third crumb is hidden and everything else is visible @@ -509,7 +509,7 @@ describe('OCA.Files.BreadCrumb tests', function() { var $crumbs; // enough space - $('#controls').width(1800); + $('.files-controls').width(1800); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -529,7 +529,7 @@ describe('OCA.Files.BreadCrumb tests', function() { // 650 is enough for all the crumbs except the third and fourth // ones, but not enough for the menu and all the crumbs except the // third and fourth ones; the second one has to be hidden too. - $('#controls').width(650); + $('.files-controls').width(650); bc._resize(); // Second, third and fourth crumb are hidden and everything else is @@ -548,7 +548,7 @@ describe('OCA.Files.BreadCrumb tests', function() { var $crumbs; // limited space - $('#controls').width(850); + $('.files-controls').width(850); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -565,7 +565,7 @@ describe('OCA.Files.BreadCrumb tests', function() { expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); // simulate increase - $('#controls').width(1000); + $('.files-controls').width(1000); bc._resize(); // Third crumb is hidden and everything else is visible @@ -583,7 +583,7 @@ describe('OCA.Files.BreadCrumb tests', function() { var $crumbs; // limited space - $('#controls').width(850); + $('.files-controls').width(850); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -601,7 +601,7 @@ describe('OCA.Files.BreadCrumb tests', function() { // simulate increase // 1030 is enough for all the crumbs if the menu is hidden. - $('#controls').width(1030); + $('.files-controls').width(1030); bc._resize(); // Menu is hidden and everything else is visible @@ -629,10 +629,10 @@ describe('OCA.Files.BreadCrumb tests', function() { var $nextSiblingChild = $('<div class="siblingChild"></div>'); $nextSiblingChild.css('margin-left', 'auto'); $nextSibling.append($nextSiblingChild); - $('#controls').append($nextSibling); + $('.files-controls').append($nextSibling); // limited space - $('#controls').width(850); + $('.files-controls').width(850); bc._resize(); $crumbs = bc.$el.find('.crumb'); @@ -649,7 +649,7 @@ describe('OCA.Files.BreadCrumb tests', function() { expect($crumbs.eq(7).hasClass('hidden')).toEqual(false); // simulate increase - $('#controls').width(1000); + $('.files-controls').width(1000); bc._resize(); // Third crumb is hidden and everything else is visible diff --git a/apps/files/tests/js/favoritesfilelistspec.js b/apps/files/tests/js/favoritesfilelistspec.js index 8602288cdde..5d1ad2312f2 100644 --- a/apps/files/tests/js/favoritesfilelistspec.js +++ b/apps/files/tests/js/favoritesfilelistspec.js @@ -28,30 +28,29 @@ describe('OCA.Files.FavoritesFileList tests', function() { beforeEach(function() { // init parameters and test table elements $('#testArea').append( - '<div id="app-content-container">' + + '<div id="app-content">' + // init horrible parameters - '<input type="hidden" id="dir" value="/"></input>' + '<input type="hidden" id="permissions" value="31"></input>' + // dummy controls - '<div id="controls">' + + '<div class="files-controls">' + ' <div class="actions creatable"></div>' + ' <div class="notCreatable"></div>' + '</div>' + // dummy table // TODO: at some point this will be rendered by the fileList class itself! - '<table id="filestable" class="list-container view-grid">' + + '<table class="files-filestable list-container view-grid">' + '<thead><tr>' + - '<th id="headerName" class="hidden column-name">' + + '<th class="hidden column-name">' + '<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + '</th>' + '<th class="hidden column-mtime">' + '<a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a>' + '</th>' + '</tr></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '<tfoot></tfoot>' + '</table>' + - '<div id="emptycontent">Empty content message</div>' + + '<div class="emptyfilelist emptycontent">Empty content message</div>' + '</div>' ); }); @@ -61,7 +60,7 @@ describe('OCA.Files.FavoritesFileList tests', function() { beforeEach(function() { fileList = new OCA.Files.FavoritesFileList( - $('#app-content-container') + $('#app-content') ); OCA.Files.FavoritesPlugin.attach(fileList); diff --git a/apps/files/tests/js/favoritespluginspec.js b/apps/files/tests/js/favoritespluginspec.js index 94359e0e706..ca0cea8b29a 100644 --- a/apps/files/tests/js/favoritespluginspec.js +++ b/apps/files/tests/js/favoritespluginspec.js @@ -88,7 +88,7 @@ describe('OCA.Files.FavoritesPlugin tests', function() { var setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView'); // create dummy table so we can click the dom - var $table = '<table><thead></thead><tbody id="fileList"></tbody></table>'; + var $table = '<table><thead></thead><tbody class="files-fileList"></tbody></table>'; $('#app-content-favorites').append($table); Plugin.favoritesFileList = null; diff --git a/apps/files/tests/js/fileUploadSpec.js b/apps/files/tests/js/fileUploadSpec.js index d8bca4a8ca4..1fac6322808 100644 --- a/apps/files/tests/js/fileUploadSpec.js +++ b/apps/files/tests/js/fileUploadSpec.js @@ -136,19 +136,19 @@ describe('OC.Upload tests', function() { beforeEach(function() { $('#testArea').append( '<div id="tableContainer">' + - '<table id="filestable" class="list-container view-grid">' + + '<table class="files-filestable list-container view-grid">' + '<thead><tr>' + - '<th id="headerName" class="hidden column-name">' + + '<th class="hidden column-name">' + '<input type="checkbox" id="select_all_files" class="select-all">' + '<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + - '<span id="selectedActionsList" class="selectedActions hidden">' + + '<span class="selectedActions hidden">' + '<a href class="download"><img src="actions/download.svg">Download</a>' + '<a href class="delete-selected">Delete</a></span>' + '</th>' + '<th class="hidden column-size"><a class="columntitle" data-sort="size"><span class="sort-indicator"></span></a></th>' + '<th class="hidden column-mtime"><a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a></th>' + '</tr></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '<tfoot></tfoot>' + '</table>' + '</div>' diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js index cc12bfc7642..7ec9efc43d0 100644 --- a/apps/files/tests/js/fileactionsSpec.js +++ b/apps/files/tests/js/fileactionsSpec.js @@ -33,9 +33,8 @@ describe('OCA.Files.FileActions tests', function() { clock = sinon.useFakeTimers(); // init horrible parameters var $body = $('#testArea'); - $body.append('<input type="hidden" id="dir" value="/subdir"></input>'); $body.append('<input type="hidden" id="permissions" value="31"></input>'); - $body.append('<table id="filestable" class="list-container view-grid"><tbody id="fileList"></tbody></table>'); + $body.append('<table class="files-filestable list-container view-grid"><tbody class="files-fileList"></tbody></table>'); // dummy files table fileActions = new OCA.Files.FileActions(); fileActions.registerAction({ @@ -66,13 +65,14 @@ describe('OCA.Files.FileActions tests', function() { fileList = new OCA.Files.FileList($body, { fileActions: fileActions }); + fileList.changeDirectory('/subdir', false, true); }); afterEach(function() { fileActions = null; fileList.destroy(); fileList = undefined; clock.restore(); - $('#dir, #permissions, #filestable').remove(); + $('#permissions, .files-filestable').remove(); }); it('calling clear() clears file actions', function() { fileActions.clear(); @@ -307,6 +307,8 @@ describe('OCA.Files.FileActions tests', function() { }); it('passes context to action handler', function() { var notifyUpdateListenersSpy = sinon.spy(fileList.fileActions, '_notifyUpdateListeners'); + expect($tr.length).toEqual(1); + expect($tr.find('.action-test').length).toEqual(1); $tr.find('.action-test').click(); expect(actionStub.calledOnce).toEqual(true); expect(actionStub.getCall(0).args[0]).toEqual('testName.txt'); diff --git a/apps/files/tests/js/fileactionsmenuSpec.js b/apps/files/tests/js/fileactionsmenuSpec.js index 7549bd9dc85..a252e75c5e2 100644 --- a/apps/files/tests/js/fileactionsmenuSpec.js +++ b/apps/files/tests/js/fileactionsmenuSpec.js @@ -31,7 +31,6 @@ describe('OCA.Files.FileActionsMenu tests', function() { beforeEach(function() { // init horrible parameters var $body = $('#testArea'); - $body.append('<input type="hidden" id="dir" value="/subdir"></input>'); $body.append('<input type="hidden" id="permissions" value="31"></input>'); // dummy files table actionStub = sinon.stub(); @@ -39,6 +38,7 @@ describe('OCA.Files.FileActionsMenu tests', function() { fileList = new OCA.Files.FileList($body, { fileActions: fileActions }); + fileList.changeDirectory('/subdir', false, true); fileActions.registerAction({ name: 'Testdropdown', @@ -100,7 +100,7 @@ describe('OCA.Files.FileActionsMenu tests', function() { fileList.destroy(); fileList = undefined; menu.remove(); - $('#dir, #permissions, #filestable').remove(); + $('#permissions, .files-filestable').remove(); }); describe('rendering', function() { diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index cd797626d2f..b1153fc0a01 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -104,10 +104,9 @@ describe('OCA.Files.FileList tests', function() { $('#testArea').append( '<div id="app-content-files">' + // init horrible parameters - '<input type="hidden" id="dir" value="/subdir"/>' + '<input type="hidden" id="permissions" value="31"/>' + // dummy controls - '<div id="controls">' + + '<div class="files-controls">' + ' <div class="actions creatable"></div>' + ' <div class="notCreatable"></div>' + '</div>' + @@ -115,22 +114,22 @@ describe('OCA.Files.FileList tests', function() { '<input type="file" id="file_upload_start" name="files[]" multiple="multiple">' + // dummy table // TODO: at some point this will be rendered by the fileList class itself! - '<table id="filestable" class="list-container view-grid">' + + '<table class="files-filestable list-container view-grid">' + '<thead><tr>' + - '<th id="headerName" class="hidden column-name">' + + '<th class="hidden column-name">' + '<input type="checkbox" id="select_all_files" class="select-all checkbox">' + '<a class="name columntitle" href="#" onclick="event.preventDefault()" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + - '<span id="selectedActionsList" class="selectedActions hidden">' + + '<span class="selectedActions hidden">' + '<a class="actions-selected" href="#" onclick="event.preventDefault()"><span class="icon icon-more"></span><span>Actions</span></a>' + '</th>' + '<th class="hidden column-size"><a class="columntitle" href="#" onclick="event.preventDefault()" data-sort="size"><span class="sort-indicator"></span></a></th>' + '<th class="hidden column-mtime"><a class="columntitle" href="#" onclick="event.preventDefault()" data-sort="mtime"><span class="sort-indicator"></span></a></th>' + '</tr></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '<tfoot></tfoot>' + '</table>' + // TODO: move to handlebars template - '<div id="emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' + + '<div class="emptyfilelist emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' + '<div class="nofilterresults hidden"></div>' + '</div>' ); @@ -186,6 +185,7 @@ describe('OCA.Files.FileList tests', function() { fileList = new OCA.Files.FileList($('#app-content-files'), { filesClient: filesClient, config: filesConfig, + dir: '/subdir', enableUpload: true, multiSelectMenu: [{ name: 'copyMove', @@ -218,7 +218,7 @@ describe('OCA.Files.FileList tests', function() { }); describe('Getters', function() { it('Returns the current directory', function() { - $('#dir').val('/one/two/three'); + fileList.changeDirectory('/one/two/three', false, true); expect(fileList.getCurrentDirectory()).toEqual('/one/two/three'); }); it('Returns the directory permissions as int', function() { @@ -460,7 +460,7 @@ describe('OCA.Files.FileList tests', function() { fileList.setFiles([]); expect(fileList.isEmpty).toEqual(true); fileList.add(fileData); - $summary = $('#filestable .summary'); + $summary = $('.files-filestable .summary'); expect($summary.hasClass('hidden')).toEqual(false); // yes, ugly... expect($summary.find('.fileinfo').text()).toEqual('1 file'); @@ -468,8 +468,8 @@ describe('OCA.Files.FileList tests', function() { expect($summary.find('.connector').hasClass('hidden')).toEqual(true); expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false); expect($summary.find('.filesize').text()).toEqual('12 B'); - expect($('#filestable thead th').hasClass('hidden')).toEqual(false); - expect($('#emptycontent').hasClass('hidden')).toEqual(true); + expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false); + expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true); expect(fileList.isEmpty).toEqual(false); }); it('correctly adds the extension markup and show hidden files completely in gray', function() { @@ -529,11 +529,11 @@ describe('OCA.Files.FileList tests', function() { $removedEl = fileList.remove('One.txt'); expect($removedEl).toBeDefined(); expect($removedEl.attr('data-file')).toEqual('One.txt'); - expect($('#fileList tr').length).toEqual(3); + expect($('.files-fileList tr').length).toEqual(3); expect(fileList.files.length).toEqual(3); expect(fileList.findFileEl('One.txt').length).toEqual(0); - $summary = $('#filestable .summary'); + $summary = $('.files-filestable .summary'); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').text()).toEqual('1 folder'); expect($summary.find('.fileinfo').text()).toEqual('2 files'); @@ -546,14 +546,14 @@ describe('OCA.Files.FileList tests', function() { var $summary; fileList.setFiles([testFiles[0]]); fileList.remove('One.txt'); - expect($('#fileList tr').length).toEqual(0); + expect($('.files-fileList tr').length).toEqual(0); expect(fileList.files.length).toEqual(0); expect(fileList.findFileEl('One.txt').length).toEqual(0); - $summary = $('#filestable .summary'); + $summary = $('.files-filestable .summary'); expect($summary.hasClass('hidden')).toEqual(true); - expect($('#filestable thead th').hasClass('hidden')).toEqual(true); - expect($('#emptycontent').hasClass('hidden')).toEqual(false); + expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true); + expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); expect(fileList.isEmpty).toEqual(true); }); }); @@ -603,7 +603,7 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.findFileEl('Three.pdf').length).toEqual(1); expect(fileList.$fileList.find('tr').length).toEqual(2); - $summary = $('#filestable .summary'); + $summary = $('.files-filestable .summary'); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').text()).toEqual('1 folder'); expect($summary.find('.fileinfo').text()).toEqual('1 file'); @@ -611,8 +611,8 @@ describe('OCA.Files.FileList tests', function() { expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false); expect($summary.find('.filesize').text()).toEqual('57 KB'); expect(fileList.isEmpty).toEqual(false); - expect($('#filestable thead th').hasClass('hidden')).toEqual(false); - expect($('#emptycontent').hasClass('hidden')).toEqual(true); + expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false); + expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true); expect(notificationStub.notCalled).toEqual(true); }).then(done, done); @@ -677,12 +677,12 @@ describe('OCA.Files.FileList tests', function() { return doDelete().then(function(){ expect(fileList.$fileList.find('tr').length).toEqual(0); - $summary = $('#filestable .summary'); + $summary = $('.files-filestable .summary'); expect($summary.hasClass('hidden')).toEqual(true); expect(fileList.isEmpty).toEqual(true); expect(fileList.files.length).toEqual(0); - expect($('#filestable thead th').hasClass('hidden')).toEqual(true); - expect($('#emptycontent').hasClass('hidden')).toEqual(false); + expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true); + expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); }).then(done, done); }); it('bring back deleted item when delete call failed', function(done) { @@ -804,7 +804,7 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.$fileList.find('.test').length).toEqual(0); }); it('Leaves the summary alone when reinserting renamed element', function() { - var $summary = $('#filestable .summary'); + var $summary = $('.files-filestable .summary'); doRename(); deferredRename.resolve(201); @@ -813,7 +813,7 @@ describe('OCA.Files.FileList tests', function() { expect($summary.find('.fileinfo').text()).toEqual('3 files'); }); it('Leaves the summary alone when cancel renaming', function() { - var $summary = $('#filestable .summary'); + var $summary = $('.files-filestable .summary'); doCancelRename(); expect($summary.find('.dirinfo').text()).toEqual('1 folder'); expect($summary.find('.fileinfo').text()).toEqual('3 files'); @@ -1105,7 +1105,7 @@ describe('OCA.Files.FileList tests', function() { describe('Update file', function() { it('does not change summary', function() { - var $summary = $('#filestable .summary'); + var $summary = $('.files-filestable .summary'); var fileData = new FileInfo({ type: 'file', name: 'test file', @@ -1127,14 +1127,14 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.files.length).toEqual(0); expect(fileList.files).toEqual([]); fileList.setFiles(testFiles); - expect($('#fileList tr').length).toEqual(4); + expect($('.files-fileList tr').length).toEqual(4); expect(fileList.files.length).toEqual(4); expect(fileList.files).toEqual(testFiles); }); it('updates summary using the file sizes', function() { var $summary; fileList.setFiles(testFiles); - $summary = $('#filestable .summary'); + $summary = $('.files-filestable .summary'); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').text()).toEqual('1 folder'); expect($summary.find('.fileinfo').text()).toEqual('3 files'); @@ -1142,23 +1142,23 @@ describe('OCA.Files.FileList tests', function() { }); it('shows headers, summary and hide empty content message after setting files', function(){ fileList.setFiles(testFiles); - expect($('#filestable thead th').hasClass('hidden')).toEqual(false); - expect($('#emptycontent').hasClass('hidden')).toEqual(true); + expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false); + expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true); expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(false); }); it('hides headers, summary and show empty content message after setting empty file list', function(){ fileList.setFiles([]); - expect($('#filestable thead th').hasClass('hidden')).toEqual(true); - expect($('#emptycontent').hasClass('hidden')).toEqual(false); - expect($('#emptycontent .uploadmessage').hasClass('hidden')).toEqual(false); + expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true); + expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); + expect($('.emptyfilelist.emptycontent .uploadmessage').hasClass('hidden')).toEqual(false); expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(true); }); it('hides headers, upload message, and summary when list is empty and user has no creation permission', function(){ $('#permissions').val(0); fileList.setFiles([]); - expect($('#filestable thead th').hasClass('hidden')).toEqual(true); - expect($('#emptycontent').hasClass('hidden')).toEqual(false); - expect($('#emptycontent .uploadmessage').hasClass('hidden')).toEqual(true); + expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true); + expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); + expect($('.emptyfilelist.emptycontent .uploadmessage').hasClass('hidden')).toEqual(true); expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(true); }); it('calling findFileEl() can find existing file element', function() { @@ -1170,7 +1170,7 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.findFileEl('unexist.dat').length).toEqual(0); }); it('only add file if in same current directory', function() { - $('#dir').val('/current dir'); + fileList.changeDirectory('/current dir', false, true); var fileData = { type: 'file', name: 'testFile.txt', @@ -1220,7 +1220,7 @@ describe('OCA.Files.FileList tests', function() { var $summary; // single file fileList.setFiles([testFiles[0]]); - $summary = $('#filestable .summary'); + $summary = $('.files-filestable .summary'); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); expect($summary.find('.fileinfo').text()).toEqual('1 file'); @@ -1235,18 +1235,18 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.files.length).toEqual(0); expect(fileList.files).toEqual([]); fileList.setFiles(testFiles); - var $summary = $('#filestable .summary'); + var $summary = $('.files-filestable .summary'); var $nofilterresults = fileList.$el.find(".nofilterresults"); expect($nofilterresults.length).toEqual(1); expect($summary.hasClass('hidden')).toEqual(false); - expect($('#fileList tr:not(.hidden)').length).toEqual(4); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(4); expect(fileList.files.length).toEqual(4); expect($summary.hasClass('hidden')).toEqual(false); expect($nofilterresults.hasClass('hidden')).toEqual(true); fileList.setFilter('e'); - expect($('#fileList tr:not(.hidden)').length).toEqual(3); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(3); expect(fileList.files.length).toEqual(4); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').text()).toEqual('1 folder'); @@ -1255,7 +1255,7 @@ describe('OCA.Files.FileList tests', function() { expect($nofilterresults.hasClass('hidden')).toEqual(true); fileList.setFilter('ee'); - expect($('#fileList tr:not(.hidden)').length).toEqual(1); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(1); expect(fileList.files.length).toEqual(4); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); @@ -1264,13 +1264,13 @@ describe('OCA.Files.FileList tests', function() { expect($nofilterresults.hasClass('hidden')).toEqual(true); fileList.setFilter('eee'); - expect($('#fileList tr:not(.hidden)').length).toEqual(0); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(0); expect(fileList.files.length).toEqual(4); expect($summary.hasClass('hidden')).toEqual(true); expect($nofilterresults.hasClass('hidden')).toEqual(false); fileList.setFilter('ee'); - expect($('#fileList tr:not(.hidden)').length).toEqual(1); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(1); expect(fileList.files.length).toEqual(4); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); @@ -1279,7 +1279,7 @@ describe('OCA.Files.FileList tests', function() { expect($nofilterresults.hasClass('hidden')).toEqual(true); fileList.setFilter('e'); - expect($('#fileList tr:not(.hidden)').length).toEqual(3); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(3); expect(fileList.files.length).toEqual(4); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').text()).toEqual('1 folder'); @@ -1288,7 +1288,7 @@ describe('OCA.Files.FileList tests', function() { expect($nofilterresults.hasClass('hidden')).toEqual(true); fileList.setFilter(''); - expect($('#fileList tr:not(.hidden)').length).toEqual(4); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(4); expect(fileList.files.length).toEqual(4); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').text()).toEqual('1 folder'); @@ -1296,12 +1296,12 @@ describe('OCA.Files.FileList tests', function() { expect($nofilterresults.hasClass('hidden')).toEqual(true); }); it('filters the list of non-rendered rows using filter()', function() { - var $summary = $('#filestable .summary'); + var $summary = $('.files-filestable .summary'); var $nofilterresults = fileList.$el.find(".nofilterresults"); fileList.setFiles(generateFiles(0, 64)); fileList.setFilter('63'); - expect($('#fileList tr:not(.hidden)').length).toEqual(1); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(1); expect($summary.hasClass('hidden')).toEqual(false); expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true); expect($summary.find('.fileinfo').text()).toEqual('1 file'); @@ -1312,27 +1312,27 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.files.length).toEqual(0); expect(fileList.files).toEqual([]); fileList.setFiles([]); - var $summary = $('#filestable .summary'); - var $emptycontent = fileList.$el.find("#emptycontent"); + var $summary = $('.files-filestable .summary'); + var $emptycontent = fileList.$el.find(".emptyfilelist.emptycontent"); var $nofilterresults = fileList.$el.find(".nofilterresults"); expect($emptycontent.length).toEqual(1); expect($nofilterresults.length).toEqual(1); - expect($('#fileList tr:not(.hidden)').length).toEqual(0); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(0); expect(fileList.files.length).toEqual(0); expect($summary.hasClass('hidden')).toEqual(true); expect($emptycontent.hasClass('hidden')).toEqual(false); expect($nofilterresults.hasClass('hidden')).toEqual(true); fileList.setFilter('e'); - expect($('#fileList tr:not(.hidden)').length).toEqual(0); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(0); expect(fileList.files.length).toEqual(0); expect($summary.hasClass('hidden')).toEqual(true); expect($emptycontent.hasClass('hidden')).toEqual(true); expect($nofilterresults.hasClass('hidden')).toEqual(false); fileList.setFilter(''); - expect($('#fileList tr:not(.hidden)').length).toEqual(0); + expect($('.files-fileList tr:not(.hidden)').length).toEqual(0); expect(fileList.files.length).toEqual(0); expect($summary.hasClass('hidden')).toEqual(true); expect($emptycontent.hasClass('hidden')).toEqual(false); @@ -1343,7 +1343,7 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.files).toEqual([]); fileList.showMask(); fileList.setFiles(testFiles); - var $emptycontent = fileList.$el.find("#emptycontent"); + var $emptycontent = fileList.$el.find(".emptyfilelist.emptycontent"); var $nofilterresults = fileList.$el.find(".nofilterresults"); expect($emptycontent.length).toEqual(1); expect($nofilterresults.length).toEqual(1); @@ -1368,7 +1368,7 @@ describe('OCA.Files.FileList tests', function() { }); it('renders only the first page', function() { expect(fileList.files.length).toEqual(65); - expect($('#fileList tr').length).toEqual(20); + expect($('.files-fileList tr').length).toEqual(20); }); it('renders the full first page despite hidden rows', function() { filesConfig.set('showhidden', false); @@ -1382,7 +1382,7 @@ describe('OCA.Files.FileList tests', function() { fileList.setFiles(files); expect(fileList.files.length).toEqual(25); // render 24 hidden elements + the visible one - expect($('#fileList tr').length).toEqual(25); + expect($('.files-fileList tr').length).toEqual(25); }); it('renders the full first page despite hidden rows', function() { filesConfig.set('showhidden', true); @@ -1396,19 +1396,19 @@ describe('OCA.Files.FileList tests', function() { fileList.setFiles(files); expect(fileList.files.length).toEqual(25); // render 20 first hidden elements as visible - expect($('#fileList tr').length).toEqual(20); + expect($('.files-fileList tr').length).toEqual(20); }); it('renders the second page when scrolling down (trigger nextPage)', function() { // TODO: can't simulate scrolling here, so calling nextPage directly fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(40); + expect($('.files-fileList tr').length).toEqual(40); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(60); + expect($('.files-fileList tr').length).toEqual(60); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(65); + expect($('.files-fileList tr').length).toEqual(65); fileList._nextPage(true); // stays at 65 - expect($('#fileList tr').length).toEqual(65); + expect($('.files-fileList tr').length).toEqual(65); }); it('inserts into the DOM if insertion point is in the visible page ', function() { fileList.add({ @@ -1416,7 +1416,7 @@ describe('OCA.Files.FileList tests', function() { type: 'file', name: 'File with index 15b.txt' }); - expect($('#fileList tr').length).toEqual(21); + expect($('.files-fileList tr').length).toEqual(21); expect(fileList.findFileEl('File with index 15b.txt').index()).toEqual(16); }); it('does not inserts into the DOM if insertion point is not the visible page ', function() { @@ -1425,10 +1425,10 @@ describe('OCA.Files.FileList tests', function() { type: 'file', name: 'File with index 28b.txt' }); - expect($('#fileList tr').length).toEqual(20); + expect($('.files-fileList tr').length).toEqual(20); expect(fileList.findFileEl('File with index 28b.txt').length).toEqual(0); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(40); + expect($('.files-fileList tr').length).toEqual(40); expect(fileList.findFileEl('File with index 28b.txt').index()).toEqual(29); }); it('appends into the DOM when inserting a file after the last visible element', function() { @@ -1437,43 +1437,43 @@ describe('OCA.Files.FileList tests', function() { type: 'file', name: 'File with index 19b.txt' }); - expect($('#fileList tr').length).toEqual(21); + expect($('.files-fileList tr').length).toEqual(21); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(41); + expect($('.files-fileList tr').length).toEqual(41); }); it('appends into the DOM when inserting a file on the last page when visible', function() { fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(40); + expect($('.files-fileList tr').length).toEqual(40); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(60); + expect($('.files-fileList tr').length).toEqual(60); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(65); + expect($('.files-fileList tr').length).toEqual(65); fileList._nextPage(true); fileList.add({ id: 2000, type: 'file', name: 'File with index 88.txt' }); - expect($('#fileList tr').length).toEqual(66); + expect($('.files-fileList tr').length).toEqual(66); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(66); + expect($('.files-fileList tr').length).toEqual(66); }); it('shows additional page when appending a page of files and scrolling down', function() { var newFiles = generateFiles(66, 81); for (var i = 0; i < newFiles.length; i++) { fileList.add(newFiles[i]); } - expect($('#fileList tr').length).toEqual(20); + expect($('.files-fileList tr').length).toEqual(20); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(40); + expect($('.files-fileList tr').length).toEqual(40); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(60); + expect($('.files-fileList tr').length).toEqual(60); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(80); + expect($('.files-fileList tr').length).toEqual(80); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(81); + expect($('.files-fileList tr').length).toEqual(81); fileList._nextPage(true); - expect($('#fileList tr').length).toEqual(81); + expect($('.files-fileList tr').length).toEqual(81); }); it('automatically renders next page when there are not enough elements visible', function() { // delete the 15 first elements @@ -1481,7 +1481,7 @@ describe('OCA.Files.FileList tests', function() { fileList.remove(fileList.files[0].name); } // still makes sure that there are 20 elements visible, if any - expect($('#fileList tr').length).toEqual(25); + expect($('.files-fileList tr').length).toEqual(25); }); }); describe('file previews', function() { @@ -1635,14 +1635,14 @@ describe('OCA.Files.FileList tests', function() { describe('viewer mode', function() { it('enabling viewer mode hides files table and action buttons', function() { fileList.setViewerMode(true); - expect($('#filestable').hasClass('hidden')).toEqual(true); + expect($('.files-filestable').hasClass('hidden')).toEqual(true); expect($('.actions').hasClass('hidden')).toEqual(true); expect($('.notCreatable').hasClass('hidden')).toEqual(true); }); it('disabling viewer mode restores files table and action buttons', function() { fileList.setViewerMode(true); fileList.setViewerMode(false); - expect($('#filestable').hasClass('hidden')).toEqual(false); + expect($('.files-filestable').hasClass('hidden')).toEqual(false); expect($('.actions').hasClass('hidden')).toEqual(false); expect($('.notCreatable').hasClass('hidden')).toEqual(true); }); @@ -1650,7 +1650,7 @@ describe('OCA.Files.FileList tests', function() { $('#permissions').val(0); fileList.setViewerMode(true); fileList.setViewerMode(false); - expect($('#filestable').hasClass('hidden')).toEqual(false); + expect($('.files-filestable').hasClass('hidden')).toEqual(false); expect($('.actions').hasClass('hidden')).toEqual(true); expect($('.notCreatable').hasClass('hidden')).toEqual(false); }); @@ -1684,7 +1684,7 @@ describe('OCA.Files.FileList tests', function() { expect(getFolderContentsStub.calledWith('/subdir')).toEqual(true); deferredList.resolve(200, [testRoot].concat(testFiles)); return reloading.then(function() { - expect($('#fileList tr').length).toEqual(4); + expect($('.files-fileList tr').length).toEqual(4); expect(fileList.findFileEl('One.txt').length).toEqual(1); }).then(done, done); }); @@ -1942,7 +1942,7 @@ describe('OCA.Files.FileList tests', function() { .toEqual(OC.getRootPath() + '/remote.php/webdav/subdir/some%20file.txt'); expect(fileList.getDownloadUrl('some file.txt', '/anotherpath/abc')) .toEqual(OC.getRootPath() + '/remote.php/webdav/anotherpath/abc/some%20file.txt'); - $('#dir').val('/'); + fileList.changeDirectory('/', false, true); expect(fileList.getDownloadUrl('some file.txt')) .toEqual(OC.getRootPath() + '/remote.php/webdav/some%20file.txt'); }); @@ -2004,13 +2004,13 @@ describe('OCA.Files.FileList tests', function() { }); it('Selecting all files will automatically check "select all" checkbox', function() { expect($('.select-all').prop('checked')).toEqual(false); - $('#fileList tr td.selection input:checkbox').click(); + $('.files-fileList tr td.selection input:checkbox').click(); expect($('.select-all').prop('checked')).toEqual(true); }); it('Selecting all files on the first visible page will not automatically check "select all" checkbox', function() { fileList.setFiles(generateFiles(0, 41)); expect($('.select-all').prop('checked')).toEqual(false); - $('#fileList tr td.selection input:checkbox').click(); + $('.files-fileList tr td.selection input:checkbox').click(); expect($('.select-all').prop('checked')).toEqual(false); }); it('Selecting all files also selects hidden files when invisible', function() { @@ -2029,7 +2029,7 @@ describe('OCA.Files.FileList tests', function() { fileList.setFiles(generateFiles(0, 41)); $('.select-all').click(); expect($('.select-all').prop('checked')).toEqual(true); - $('#fileList tr input:checkbox').each(function() { + $('.files-fileList tr input:checkbox').each(function() { expect($(this).prop('checked')).toEqual(true); }); expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(42); @@ -2037,7 +2037,7 @@ describe('OCA.Files.FileList tests', function() { $('.select-all').click(); expect($('.select-all').prop('checked')).toEqual(false); - $('#fileList tr input:checkbox').each(function() { + $('.files-fileList tr input:checkbox').each(function() { expect($(this).prop('checked')).toEqual(false); }); expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(0); @@ -2090,7 +2090,7 @@ describe('OCA.Files.FileList tests', function() { expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(42); }); it('Selecting files updates selection summary', function() { - var $summary = $('#headerName a.name>span:first'); + var $summary = $('.column-name a.name>span:first'); expect($summary.text()).toEqual('Name'); fileList.findFileEl('One.txt').find('input:checkbox').click(); fileList.findFileEl('Three.pdf').find('input:checkbox').click(); @@ -2098,7 +2098,7 @@ describe('OCA.Files.FileList tests', function() { expect($summary.text()).toEqual('1 folder and 2 files'); }); it('Unselecting files hides selection summary', function() { - var $summary = $('#headerName a.name>span:first'); + var $summary = $('.column-name a.name>span:first'); fileList.findFileEl('One.txt').find('input:checkbox').click().click(); expect($summary.text()).toEqual('Name'); }); @@ -2111,7 +2111,7 @@ describe('OCA.Files.FileList tests', function() { size: 150 })); $('.select-all').click(); - var $summary = $('#headerName a.name>span:first'); + var $summary = $('.column-name a.name>span:first'); expect($summary.text()).toEqual('2 folders and 3 files (including 1 hidden)'); }); it('Does not displays the number of hidden files in selection summary if hidden files are visible', function() { @@ -2123,7 +2123,7 @@ describe('OCA.Files.FileList tests', function() { size: 150 })); $('.select-all').click(); - var $summary = $('#headerName a.name>span:first'); + var $summary = $('.column-name a.name>span:first'); expect($summary.text()).toEqual('2 folders and 3 files'); }); it('Toggling hidden file visibility updates selection summary', function() { @@ -2135,13 +2135,13 @@ describe('OCA.Files.FileList tests', function() { size: 150 })); $('.select-all').click(); - var $summary = $('#headerName a.name>span:first'); + var $summary = $('.column-name a.name>span:first'); expect($summary.text()).toEqual('2 folders and 3 files (including 1 hidden)'); filesConfig.set('showhidden', true); expect($summary.text()).toEqual('2 folders and 3 files'); }); it('Select/deselect files shows/hides file actions', function() { - var $actions = $('#headerName .selectedActions'); + var $actions = $('.column-name .selectedActions'); var $checkbox = fileList.findFileEl('One.txt').find('input:checkbox'); expect($actions.hasClass('hidden')).toEqual(true); $checkbox.click(); @@ -2346,7 +2346,7 @@ describe('OCA.Files.FileList tests', function() { redirectStub.restore(); }); it('Downloads root folder when all selected in root folder', function() { - $('#dir').val('/'); + fileList.changeDirectory('/', false, true); $('.select-all').click(); $('.selectedActions .filesSelectMenu .download').click(); expect(redirectStub.calledOnce).toEqual(true); @@ -3390,7 +3390,7 @@ describe('OCA.Files.FileList tests', function() { }); it('does not render new button when no legacy upload button exists (public page)', function() { fileList.destroy(); - $('#controls').append('<input type="button" class="button upload" />'); + $('.files-controls').append('<input type="button" class="button upload" />'); fileList = new OCA.Files.FileList($('#app-content-files')); expect(fileList.$el.find('.button.upload').length).toEqual(1); expect(fileList.$el.find('.button.new').length).toEqual(0); diff --git a/apps/files/tests/js/tagspluginspec.js b/apps/files/tests/js/tagspluginspec.js index 2ac67e64cea..864e3cffca5 100644 --- a/apps/files/tests/js/tagspluginspec.js +++ b/apps/files/tests/js/tagspluginspec.js @@ -27,17 +27,17 @@ describe('OCA.Files.TagsPlugin tests', function() { var testFiles; beforeEach(function() { - var $content = $('<div id="content"></div>'); + var $content = $('<div id="app-content"></div>'); $('#testArea').append($content); // dummy file list var $div = $( '<div>' + - '<table id="filestable">' + + '<table class="files-filestable">' + '<thead></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '</table>' + '</div>'); - $('#content').append($div); + $('#app-content').append($div); fileList = new OCA.Files.FileList($div); OCA.Files.TagsPlugin.attach(fileList); diff --git a/apps/files_external/css/external.css b/apps/files_external/css/external.css index 122459c9624..489cd630fb9 100644 --- a/apps/files_external/css/external.css +++ b/apps/files_external/css/external.css @@ -1,3 +1,3 @@ -#filestable tbody tr.externalErroredRow { +.files-filestable tbody tr.externalErroredRow { background-color: #F2DEDE; } diff --git a/apps/files_external/css/settings.css b/apps/files_external/css/settings.css index 84e382ceb89..778e2292932 100644 --- a/apps/files_external/css/settings.css +++ b/apps/files_external/css/settings.css @@ -68,6 +68,9 @@ #externalStorage td.mountOptionsToggle [class*=" icon-"], #externalStorage td.remove [class^=icon-], #externalStorage td.remove [class*=" icon-"], #externalStorage td.save [class^=icon-], #externalStorage td.save [class*=" icon-"] { + width: 44px; + height: 44px; + margin: 3px; opacity: 0.5; padding: 14px; vertical-align: text-bottom; diff --git a/apps/files_external/css/settings.css.map b/apps/files_external/css/settings.css.map index d084c036f9a..b767a2be016 100644 --- a/apps/files_external/css/settings.css.map +++ b/apps/files_external/css/settings.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["settings.scss"],"names":[],"mappings":"AAAA;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAKD;EACC;;;AAIF;AACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGA;EACC;EACA;;;AAGF;EAA0B;EAAiB;;;AAC3C;EAAgC;EAAiB;EAAgB;;;AACjE;EAAoB;;;AACpB;EAA+B;;;AAC/B;EAA2B;;;AAE3B;EACC;;AACA;EAGC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;;;AAMJ;EACC;EACA;;;AAGD;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;AACA;EACC;EACA;EACA;EACA;;;AAIF;EACC;;;AAGD;EACC","file":"settings.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["settings.scss"],"names":[],"mappings":"AAAA;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAKD;EACC;;;AAIF;AACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGA;EACC;EACA;;;AAGF;EAA0B;EAAiB;;;AAC3C;EAAgC;EAAiB;EAAgB;;;AACjE;EAAoB;;;AACpB;EAA+B;;;AAC/B;EAA2B;;;AAE3B;EACC;;AACA;EAGC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;;;AAMJ;EACC;EACA;;;AAGD;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;AACA;EACC;EACA;EACA;EACA;;;AAIF;EACC;;;AAGD;EACC","file":"settings.css"}
\ No newline at end of file diff --git a/apps/files_external/css/settings.scss b/apps/files_external/css/settings.scss index f4d8b677d96..ce30aa556c7 100644 --- a/apps/files_external/css/settings.scss +++ b/apps/files_external/css/settings.scss @@ -52,6 +52,9 @@ width: 44px; [class^='icon-'], [class*=' icon-'] { + width: 44px; + height: 44px; + margin: 3px; opacity: 0.5; padding: 14px; vertical-align: text-bottom; diff --git a/apps/files_external/js/mountsfilelist.js b/apps/files_external/js/mountsfilelist.js index c5817a916f6..58cd356ccff 100644 --- a/apps/files_external/js/mountsfilelist.js +++ b/apps/files_external/js/mountsfilelist.js @@ -18,7 +18,7 @@ * Displays a list of mount points visible * for the current user. * - * @param $el container element with existing markup for the #controls + * @param $el container element with existing markup for the .files-controls * and a table * @param [options] map of options, see other parameters **/ @@ -65,8 +65,8 @@ var dir = this.getCurrentDirectory(); if (dir === '/') { // root has special permissions - this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty); - this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty); + this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty); + this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty); } else { OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments); diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 9bf7339a3bb..765850e2ef2 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -715,6 +715,7 @@ MountConfigListView.prototype = _.extend({ }); this.$el.on('click', 'td.mountOptionsToggle>.icon-more', function() { + $(this).attr('aria-expanded', 'true'); self._showMountOptionsDropdown($(this).closest('tr')); }); @@ -972,7 +973,7 @@ MountConfigListView.prototype = _.extend({ if (result.length === 0 && mainForm.attr('data-can-create') === 'false') { mainForm.hide(); $('a[href="#external-storage"]').parent().hide(); - $('#emptycontent').show(); + $('.emptycontent').show(); } onCompletion.resolve(); onLoaded1.resolve(); @@ -1343,6 +1344,7 @@ MountConfigListView.prototype = _.extend({ var mountOptions = dropDown.getOptions(); $('body').off('mouseup.mountOptionsDropdown'); $tr.find('input.mountOptions').val(JSON.stringify(mountOptions)); + $tr.find('td.mountOptionsToggle>.icon-more').attr('aria-expanded', 'false'); self.saveStorageConfig($tr); }); } diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js index e80d764baa7..5f94192ea35 100644 --- a/apps/files_external/js/statusmanager.js +++ b/apps/files_external/js/statusmanager.js @@ -239,7 +239,7 @@ OCA.Files_External.StatusManager = { processMountList: function (mountList) { var elementList = null; $.each(mountList, function (name, value) { - var trElement = $('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point)); + var trElement = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point)); trElement.attr('data-external-backend', value.backend); if (elementList) { elementList = elementList.add(trElement); @@ -460,7 +460,7 @@ OCA.Files_External.StatusManager.Utils = { showIconError: function (folder, clickAction, errorImageUrl) { var imageUrl = "url(" + errorImageUrl + ")"; - var trFolder = $('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); + var trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); this.changeFolderIcon(folder, imageUrl); this.toggleLink(folder, false, clickAction); trFolder.addClass('externalErroredRow'); @@ -474,7 +474,7 @@ OCA.Files_External.StatusManager.Utils = { if (folder instanceof $) { trFolder = folder; } else { - trFolder = $('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); //$('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); + trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); //$('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); } trFolder.each(function () { var thisElement = $(this); @@ -501,7 +501,7 @@ OCA.Files_External.StatusManager.Utils = { trFolder = folder; } else { // can't use here FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); return incorrect instance of filelist - trFolder = $('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); + trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); } var tdChilds = trFolder.find("td.filename div.thumbnail"); tdChilds.each(function () { @@ -525,7 +525,7 @@ OCA.Files_External.StatusManager.Utils = { $(this).find('td.filename div.thumbnail').css('background-image', "url(" + route + ")").css('display', 'none').css('display', 'inline'); }); } else { - file = $("#fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename div.thumbnail"); + file = $(".files-fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename div.thumbnail"); var parentTr = file.parents('tr:first'); route = OCA.Files_External.StatusManager.Utils.getIconRoute(parentTr); parentTr.attr("data-icon", route); @@ -563,7 +563,7 @@ OCA.Files_External.StatusManager.Utils = { if (filename instanceof $) { link = filename; } else { - link = $("#fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename a.name"); + link = $(".files-fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename a.name"); } if (active) { link.off('click.connectivity'); @@ -584,7 +584,7 @@ OCA.Files_External.StatusManager.Utils = { isCorrectViewAndRootFolder: function () { // correct views = files & extstoragemounts if (OCA.Files.App.getActiveView() === 'files' || OCA.Files.App.getActiveView() === 'extstoragemounts') { - return OCA.Files.App.getCurrentAppContainer().find('#dir').val() === '/'; + return OCA.Files.App.currentFileList.getCurrentDirectory() === '/'; } return false; }, diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index 8ca64972667..ea437da7464 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -23,7 +23,7 @@ OC.L10N.register( "Disconnect" : "Trennen", "Admin defined" : "Vom Administrator festgelegt", "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Püfung des Status ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert, klicke hier, um den Status zu prüfen", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchtest Du diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchtest du diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", "Delete storage?" : "Speicher löschen?", "Saved" : "Gespeichert", "Saving …" : "Speichern …", @@ -117,18 +117,18 @@ OC.L10N.register( "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wende Dich zur Installation an den Administrator.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende dich zur Installation an den Systemadministrator.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende dich zur Installation an den Systemadministrator.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wende dich zur Installation an den Administrator.", "External storage support" : "Unterstützung für externen Speicher", "Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.", - "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Du hast keine Berechtigung dies zu tun.", + "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung dies zu tun.", "Name" : "Name", "Storage type" : "Speichertyp", "Scope" : "Anwendungsbereich", "Open documentation" : "Dokumentation öffnen", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden, eigene externe Speicherdienste einzubinden.", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Die App Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden, eigene externe Speicherdienste einzubinden.", "Folder name" : "Ordnername", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", @@ -139,7 +139,7 @@ OC.L10N.register( "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Anmeldung bei mehreren externen Speichern mit denselben Anmeldeinformationen verwendet werden.", "Delete" : "Löschen", - "Are you sure you want to delete this external storage?" : "Möchtest Du wirklich diesen externen Speicher löschen?", + "Are you sure you want to delete this external storage?" : "Möchtest du wirklich diesen externen Speicher löschen?", "Kerberos ticket apache mode" : "Kerberos-Ticket Apache-Modus" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index c0254eb80de..d8a7db423bf 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -21,7 +21,7 @@ "Disconnect" : "Trennen", "Admin defined" : "Vom Administrator festgelegt", "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "Die automatische Püfung des Status ist aufgrund der großen Anzahl konfigurierter Speicher deaktiviert, klicke hier, um den Status zu prüfen", - "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchtest Du diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Möchtest du diesen externen Speicher wirklich trennen? Der Speicher ist danach in der Nextcloud nicht mehr verfügbar, was zu einer Löschung dieser Dateien und Ordner auf allen Sync-Clients, die verbunden sind, führt. Auf dem externen Speicher selbst werden keine Dateien und Ordner gelöscht.", "Delete storage?" : "Speicher löschen?", "Saved" : "Gespeichert", "Saving …" : "Speichern …", @@ -115,18 +115,18 @@ "OpenStack Object Storage" : "Openstack-Objektspeicher", "Service name" : "Name des Dienstes", "Request timeout (seconds)" : "Anfrage-Zeitüberschreitung (Sekunden)", - "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", - "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende Dich zur Installation an den Systemadministrator.", - "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wende Dich zur Installation an den Administrator.", + "The cURL support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die cURL-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende dich zur Installation an den Systemadministrator.", + "The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wende dich zur Installation an den Systemadministrator.", + "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" ist nicht installiert. Das Hinzufügen von %2$s ist nicht möglich. Bitte wende dich zur Installation an den Administrator.", "External storage support" : "Unterstützung für externen Speicher", "Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu", "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "DIese App ermöglicht es Administratoren, Verbindungen zu externen Speicherorten wie FTP-Server, S3 oder SWIFT object stores, andere Nextcloud-Server, WebDAV-Server, usw. herzustellen. Administratoren können auswählen, welche Art von Speicherorten zulässig sind und können dieses Speicher für Nutzer, Gruppen oder das gesamte System einbinden. Nutzer sehen dann einen neuen Ordner in ihrem extcloud-Root-Verzeichnis, auf den sie wie auf jeden anderen Nextcloud-Ordner zugreifen können. Externer Speicher ermöglich es den Nutzern auch, dort gespeicherte Dateien freizugeben. In diesem Fall werden die Zugangsdaten des Dateibesitzers angefordert, wenn der externe Empfänger der Freigabe auf die extern gespeicherten Dateien zugreift, um sicherzustellen, dass der Zugriff auf die Freigabe möglich ist.\n\nExterne Speicherorte können über die grafische Benutzeroberfläche oder über die Kommandozeile eingerichtet werden. Letztere Option ermöglicht es fortgeschrittenen Nutzern einfacher Mehrere Einhäng-Punkte und Einstellungen gleichzeitig zu setzen und zu konfigurieren. Weitere Informationen können in der \"external storage GUI\"-Dokumentation und der \"external storage Configuration File\"-Dokumentation abgerufen werden.", - "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Du hast keine Berechtigung dies zu tun.", + "No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder du hast keine Berechtigung dies zu tun.", "Name" : "Name", "Storage type" : "Speichertyp", "Scope" : "Anwendungsbereich", "Open documentation" : "Dokumentation öffnen", - "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden, eigene externe Speicherdienste einzubinden.", + "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Die App Externer Speicher erlaubt es, externe Speicherdienste und Geräte als Zweitspeicher-Geräte in Nextcloud einzubinden. Es kann Benutzern erlaubt werden, eigene externe Speicherdienste einzubinden.", "Folder name" : "Ordnername", "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", @@ -137,7 +137,7 @@ "Allow users to mount external storage" : "Benutzern erlauben, externen Speicher einzubinden", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale Anmeldeinformationen können zur Anmeldung bei mehreren externen Speichern mit denselben Anmeldeinformationen verwendet werden.", "Delete" : "Löschen", - "Are you sure you want to delete this external storage?" : "Möchtest Du wirklich diesen externen Speicher löschen?", + "Are you sure you want to delete this external storage?" : "Möchtest du wirklich diesen externen Speicher löschen?", "Kerberos ticket apache mode" : "Kerberos-Ticket Apache-Modus" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/es_SV.js b/apps/files_external/l10n/es_SV.js index cbcfa4610ad..e25b5ef23ca 100644 --- a/apps/files_external/l10n/es_SV.js +++ b/apps/files_external/l10n/es_SV.js @@ -120,4 +120,4 @@ OC.L10N.register( "Delete" : "Borrar", "Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_external/l10n/es_SV.json b/apps/files_external/l10n/es_SV.json index 4854f1d334b..7e37772572b 100644 --- a/apps/files_external/l10n/es_SV.json +++ b/apps/files_external/l10n/es_SV.json @@ -117,5 +117,5 @@ "Allow users to mount external storage" : "Permitir a los usuarios montar almacenamiento externo", "Delete" : "Borrar", "Are you sure you want to delete this external storage?" : "¿Estás seguro que quieres borrar este almacenamiento externo?" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_external/l10n/mk.js b/apps/files_external/l10n/mk.js index 7d08c22a681..084a2b4b482 100644 --- a/apps/files_external/l10n/mk.js +++ b/apps/files_external/l10n/mk.js @@ -70,6 +70,7 @@ OC.L10N.register( "RSA private key" : "RSA приватен клуч", "Private key" : "Приватен клуч", "Amazon S3" : "Amazon S3", + "Bucket" : "Кофа", "Hostname" : "Име на серверот", "Port" : "Порта", "Region" : "Регион", diff --git a/apps/files_external/l10n/mk.json b/apps/files_external/l10n/mk.json index 5d03956c82c..9717918d098 100644 --- a/apps/files_external/l10n/mk.json +++ b/apps/files_external/l10n/mk.json @@ -68,6 +68,7 @@ "RSA private key" : "RSA приватен клуч", "Private key" : "Приватен клуч", "Amazon S3" : "Amazon S3", + "Bucket" : "Кофа", "Hostname" : "Име на серверот", "Port" : "Порта", "Region" : "Регион", diff --git a/apps/files_external/l10n/nb.js b/apps/files_external/l10n/nb.js index f2fbd94aec8..7224682f7fa 100644 --- a/apps/files_external/l10n/nb.js +++ b/apps/files_external/l10n/nb.js @@ -11,6 +11,7 @@ OC.L10N.register( "Generate keys" : "Generer nøkler", "Error generating key pair" : "Feil ved nøkkelgenerering", "All users. Type to select user or group." : "Alle brukere. Tast for å velge bruker eller gruppe.", + "(Group)" : "(Gruppe)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)", "Enable encryption" : "Aktiver kryptering", "Enable previews" : "Skru på forhåndsvisninger", @@ -98,6 +99,7 @@ OC.L10N.register( "SFTP" : "SFTP", "Root" : "Rot", "SFTP with secret key login" : "SFTP med hemmelig nøkkel for pålogging", + "SMB/CIFS" : "SMB/CIFS", "Share" : "Delt ressurs", "Show hidden files" : "Vis skjulte filer", "Timeout" : "Tidsavbrudd", diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json index 038965e0f5f..633021d0cae 100644 --- a/apps/files_external/l10n/nb.json +++ b/apps/files_external/l10n/nb.json @@ -9,6 +9,7 @@ "Generate keys" : "Generer nøkler", "Error generating key pair" : "Feil ved nøkkelgenerering", "All users. Type to select user or group." : "Alle brukere. Tast for å velge bruker eller gruppe.", + "(Group)" : "(Gruppe)", "Compatibility with Mac NFD encoding (slow)" : "Kompatibelt med Mac NFD koding (treg)", "Enable encryption" : "Aktiver kryptering", "Enable previews" : "Skru på forhåndsvisninger", @@ -96,6 +97,7 @@ "SFTP" : "SFTP", "Root" : "Rot", "SFTP with secret key login" : "SFTP med hemmelig nøkkel for pålogging", + "SMB/CIFS" : "SMB/CIFS", "Share" : "Delt ressurs", "Show hidden files" : "Vis skjulte filer", "Timeout" : "Tidsavbrudd", diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js index 3a1b5397ac3..6f15981ecd9 100644 --- a/apps/files_external/l10n/nl.js +++ b/apps/files_external/l10n/nl.js @@ -80,6 +80,7 @@ OC.L10N.register( "Public key" : "Publieke sleutel", "RSA private key" : "RSA privésleutel", "Private key" : "Privésleutel", + "Kerberos ticket Apache mode" : "Kerberos ticket Apache modus", "Kerberos ticket" : "Kerberos ticket", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", @@ -135,6 +136,7 @@ OC.L10N.register( "Allow users to mount external storage" : "Sta gebruikers toe om een externe opslag aan te koppelen", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale inloggegevens kunnen worden gebruikt met meerdere externe opslagsystemen met dezelfde inloggegevens.", "Delete" : "Verwijder", - "Are you sure you want to delete this external storage?" : "Weet je zeker dat je deze externe opslag wilt verwijderen" + "Are you sure you want to delete this external storage?" : "Weet je zeker dat je deze externe opslag wilt verwijderen", + "Kerberos ticket apache mode" : "Kerberos ticket apache modus" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json index 0c5ae4ffed3..41b0876bde2 100644 --- a/apps/files_external/l10n/nl.json +++ b/apps/files_external/l10n/nl.json @@ -78,6 +78,7 @@ "Public key" : "Publieke sleutel", "RSA private key" : "RSA privésleutel", "Private key" : "Privésleutel", + "Kerberos ticket Apache mode" : "Kerberos ticket Apache modus", "Kerberos ticket" : "Kerberos ticket", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", @@ -133,6 +134,7 @@ "Allow users to mount external storage" : "Sta gebruikers toe om een externe opslag aan te koppelen", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Globale inloggegevens kunnen worden gebruikt met meerdere externe opslagsystemen met dezelfde inloggegevens.", "Delete" : "Verwijder", - "Are you sure you want to delete this external storage?" : "Weet je zeker dat je deze externe opslag wilt verwijderen" + "Are you sure you want to delete this external storage?" : "Weet je zeker dat je deze externe opslag wilt verwijderen", + "Kerberos ticket apache mode" : "Kerberos ticket apache modus" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js index 0698ba4cc83..4d6e6e6f273 100644 --- a/apps/files_external/l10n/sl.js +++ b/apps/files_external/l10n/sl.js @@ -22,6 +22,7 @@ OC.L10N.register( "Read only" : "Le za branje", "Disconnect" : "Prekini povezavo", "Admin defined" : "Skrbnik je določen", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ali ste prepričani, da želite odklopiti to mesto zunanje shrambe? Odklopljena shramba ni na voljo v oblaku Nextcloud, mape in datoteke pa ne bodo dostopne in ne usklajevanje. Datoteke zunanje shrambe ostanejo nedotaknjene.", "Delete storage?" : "Ali ste prepričani, da želite izbrisati shrambo?", "Saved" : "Shranjeno", "Saving …" : "Poteka shranjevanje ...", @@ -40,6 +41,7 @@ OC.L10N.register( "Credentials saved" : "Poverila so shranjena", "Credentials saving failed" : "Shranjevanje poveril je spodletelo", "Credentials required" : "Zahtevana so poverila", + "Forbidden to manage local mounts" : "Ni ustreznih dovoljenj za urejanje krajevnih priklopnih točk", "Storage with ID \"%d\" not found" : "Shrambe z ID »%d« ni mogoče najti.", "Invalid backend or authentication mechanism class" : "Neveljaven ozadnji program oziroma razred mehanizma overitve", "Invalid mount point" : "Neveljavna priklopna točka", diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json index 5c6b15104a2..67d46763b9a 100644 --- a/apps/files_external/l10n/sl.json +++ b/apps/files_external/l10n/sl.json @@ -20,6 +20,7 @@ "Read only" : "Le za branje", "Disconnect" : "Prekini povezavo", "Admin defined" : "Skrbnik je določen", + "Are you sure you want to disconnect this external storage? It will make the storage unavailable in Nextcloud and will lead to a deletion of these files and folders on any sync client that is currently connected but will not delete any files and folders on the external storage itself." : "Ali ste prepričani, da želite odklopiti to mesto zunanje shrambe? Odklopljena shramba ni na voljo v oblaku Nextcloud, mape in datoteke pa ne bodo dostopne in ne usklajevanje. Datoteke zunanje shrambe ostanejo nedotaknjene.", "Delete storage?" : "Ali ste prepričani, da želite izbrisati shrambo?", "Saved" : "Shranjeno", "Saving …" : "Poteka shranjevanje ...", @@ -38,6 +39,7 @@ "Credentials saved" : "Poverila so shranjena", "Credentials saving failed" : "Shranjevanje poveril je spodletelo", "Credentials required" : "Zahtevana so poverila", + "Forbidden to manage local mounts" : "Ni ustreznih dovoljenj za urejanje krajevnih priklopnih točk", "Storage with ID \"%d\" not found" : "Shrambe z ID »%d« ni mogoče najti.", "Invalid backend or authentication mechanism class" : "Neveljaven ozadnji program oziroma razred mehanizma overitve", "Invalid mount point" : "Neveljavna priklopna točka", diff --git a/apps/files_external/l10n/uk.js b/apps/files_external/l10n/uk.js index 2aad19b497c..bf7702ad9a0 100644 --- a/apps/files_external/l10n/uk.js +++ b/apps/files_external/l10n/uk.js @@ -7,22 +7,27 @@ OC.L10N.register( "Grant access" : "Дозволити доступ", "Error configuring OAuth1" : "Помилка з конфігуруванням OAuth1", "Please provide a valid app key and secret." : "Будь ласка, надайте дійсний ключ застосунку та пароль.", + "Error configuring OAuth2" : "Помилка налаштування OAuth2", "Generate keys" : "Створити ключі", "Error generating key pair" : "Помилка створення ключової пари", "All users. Type to select user or group." : "Всі користувачі. Введіть ім'я користувача або групи.", "(Group)" : "(група)", + "Compatibility with Mac NFD encoding (slow)" : "Сумісність із кодуванням Mac NFD (повільно)", "Enable encryption" : "Увімкнути шифрування", "Enable previews" : "Увімкнути попередній перегляд", "Enable sharing" : "Увімкнути спільний доступ", "Check for changes" : "Перевірити на зміни", "Never" : "Ніколи", + "Once every direct access" : "Один раз при кожному прямому доступі", "Read only" : "Тільки читання", "Disconnect" : "Від'єднати", + "Admin defined" : "Визначено адміністратором", "Delete storage?" : "Вилучити сховище?", "Saved" : "Збережено", "Saving …" : "Збереження ..", "Save" : "Зберегти", "Empty response from the server" : "Отримано порожню відповідь від сервера", + "Couldn't get the list of external mount points: {type}" : "Не вдалося отримати список зовнішніх точок підключення: {type}", "There was an error with message: " : "Сповіщення про помилку:", "External mount error" : "Помилка з приєднанням зовнішнього ресурсу", "external-storage" : "зовнішнє сховище", @@ -34,8 +39,13 @@ OC.L10N.register( "Credentials saving failed" : "Помилка зі збереженням даних авторизації", "Credentials required" : "Потрібно зазначити дані авторизації", "Storage with ID \"%d\" not found" : "Сховище з ідентифікатором \"%d\" не знайдено", + "Invalid backend or authentication mechanism class" : "Недійсний сервер або клас механізму автентифікації", "Invalid mount point" : "Невірна точка монтування", + "Objectstore forbidden" : "Objectstore заборонено", "Invalid storage backend \"%s\"" : "Невірне сховище \"%s\"", + "Not permitted to use backend \"%s\"" : "Не дозволено використовувати бекенд \"%s\"", + "Unsatisfied backend parameters" : "Незадоволені параметри серверної частини", + "Unsatisfied authentication mechanism parameters" : "Незадоволені параметри механізму автентифікації", "Insufficient data: %s" : "Недостатні дані: %s", "%s" : "%s ", "Storage with ID \"%d\" is not user editable" : "У користувачів відсутній доступ на запис до сховища з ідентифікатором \"%d\"", @@ -43,11 +53,16 @@ OC.L10N.register( "Secret key" : "Пароль", "Builtin" : "Вбудовано", "None" : "Жоден", + "OAuth1" : "OAuth1", "App key" : "Ключ застосунку", "App secret" : "Секретний ключ застосунку", + "OAuth2" : "OAuth2", "Client ID" : "Ідентифікатор клієнта", "Client secret" : "Ключ клієнта", + "Tenant name" : "Ім'я орендаря", + "Identity endpoint URL" : "URL кінцевої точки ідентифікації", "Domain" : "Домен", + "Rackspace" : "Rackspace", "API key" : "ключ API", "Global credentials" : "Системні дані авторизації", "Log-in credentials, save in database" : "Дані авторизації у системі, зберегти у базі даних", @@ -55,6 +70,7 @@ OC.L10N.register( "Log-in credentials, save in session" : "Дані авторизації у системі, зберегти у сесії", "Global credentials, user entered" : "Системні дані авторизації, зазначені користувачем", "User entered, store in database" : "Зазначено користувачем, зберегти у базі даних", + "RSA public key" : "Відкритий ключ RSA", "Public key" : "Відкритий ключ", "Private key" : "Приватний ключ", "Amazon S3" : "Amazon S3", @@ -68,18 +84,22 @@ OC.L10N.register( "URL" : "URL", "Remote subfolder" : "Віддалена підтека", "Secure https://" : "Захищений https://", + "FTP" : "FTP", "Host" : "Хост", "Secure ftps://" : "Захищений ftps://", "Local" : "Локально", "Location" : "Місце", "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", "Root" : "Початкова тека", + "SFTP with secret key login" : "SFTP із секретним ключем входу", "Share" : "Поділитися", "Show hidden files" : "Показати приховані файли", "Timeout" : "Час вичерпано", "Username as share" : "Ім'я для відкритого доступу", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Назва служби", + "Request timeout (seconds)" : "Час очікування запиту (секунди)", "Name" : "Ім'я", "Storage type" : "Тип сховища", "Scope" : "Область", diff --git a/apps/files_external/l10n/uk.json b/apps/files_external/l10n/uk.json index 74776842267..f7fe8f70746 100644 --- a/apps/files_external/l10n/uk.json +++ b/apps/files_external/l10n/uk.json @@ -5,22 +5,27 @@ "Grant access" : "Дозволити доступ", "Error configuring OAuth1" : "Помилка з конфігуруванням OAuth1", "Please provide a valid app key and secret." : "Будь ласка, надайте дійсний ключ застосунку та пароль.", + "Error configuring OAuth2" : "Помилка налаштування OAuth2", "Generate keys" : "Створити ключі", "Error generating key pair" : "Помилка створення ключової пари", "All users. Type to select user or group." : "Всі користувачі. Введіть ім'я користувача або групи.", "(Group)" : "(група)", + "Compatibility with Mac NFD encoding (slow)" : "Сумісність із кодуванням Mac NFD (повільно)", "Enable encryption" : "Увімкнути шифрування", "Enable previews" : "Увімкнути попередній перегляд", "Enable sharing" : "Увімкнути спільний доступ", "Check for changes" : "Перевірити на зміни", "Never" : "Ніколи", + "Once every direct access" : "Один раз при кожному прямому доступі", "Read only" : "Тільки читання", "Disconnect" : "Від'єднати", + "Admin defined" : "Визначено адміністратором", "Delete storage?" : "Вилучити сховище?", "Saved" : "Збережено", "Saving …" : "Збереження ..", "Save" : "Зберегти", "Empty response from the server" : "Отримано порожню відповідь від сервера", + "Couldn't get the list of external mount points: {type}" : "Не вдалося отримати список зовнішніх точок підключення: {type}", "There was an error with message: " : "Сповіщення про помилку:", "External mount error" : "Помилка з приєднанням зовнішнього ресурсу", "external-storage" : "зовнішнє сховище", @@ -32,8 +37,13 @@ "Credentials saving failed" : "Помилка зі збереженням даних авторизації", "Credentials required" : "Потрібно зазначити дані авторизації", "Storage with ID \"%d\" not found" : "Сховище з ідентифікатором \"%d\" не знайдено", + "Invalid backend or authentication mechanism class" : "Недійсний сервер або клас механізму автентифікації", "Invalid mount point" : "Невірна точка монтування", + "Objectstore forbidden" : "Objectstore заборонено", "Invalid storage backend \"%s\"" : "Невірне сховище \"%s\"", + "Not permitted to use backend \"%s\"" : "Не дозволено використовувати бекенд \"%s\"", + "Unsatisfied backend parameters" : "Незадоволені параметри серверної частини", + "Unsatisfied authentication mechanism parameters" : "Незадоволені параметри механізму автентифікації", "Insufficient data: %s" : "Недостатні дані: %s", "%s" : "%s ", "Storage with ID \"%d\" is not user editable" : "У користувачів відсутній доступ на запис до сховища з ідентифікатором \"%d\"", @@ -41,11 +51,16 @@ "Secret key" : "Пароль", "Builtin" : "Вбудовано", "None" : "Жоден", + "OAuth1" : "OAuth1", "App key" : "Ключ застосунку", "App secret" : "Секретний ключ застосунку", + "OAuth2" : "OAuth2", "Client ID" : "Ідентифікатор клієнта", "Client secret" : "Ключ клієнта", + "Tenant name" : "Ім'я орендаря", + "Identity endpoint URL" : "URL кінцевої точки ідентифікації", "Domain" : "Домен", + "Rackspace" : "Rackspace", "API key" : "ключ API", "Global credentials" : "Системні дані авторизації", "Log-in credentials, save in database" : "Дані авторизації у системі, зберегти у базі даних", @@ -53,6 +68,7 @@ "Log-in credentials, save in session" : "Дані авторизації у системі, зберегти у сесії", "Global credentials, user entered" : "Системні дані авторизації, зазначені користувачем", "User entered, store in database" : "Зазначено користувачем, зберегти у базі даних", + "RSA public key" : "Відкритий ключ RSA", "Public key" : "Відкритий ключ", "Private key" : "Приватний ключ", "Amazon S3" : "Amazon S3", @@ -66,18 +82,22 @@ "URL" : "URL", "Remote subfolder" : "Віддалена підтека", "Secure https://" : "Захищений https://", + "FTP" : "FTP", "Host" : "Хост", "Secure ftps://" : "Захищений ftps://", "Local" : "Локально", "Location" : "Місце", "Nextcloud" : "Nextcloud", + "SFTP" : "SFTP", "Root" : "Початкова тека", + "SFTP with secret key login" : "SFTP із секретним ключем входу", "Share" : "Поділитися", "Show hidden files" : "Показати приховані файли", "Timeout" : "Час вичерпано", "Username as share" : "Ім'я для відкритого доступу", "OpenStack Object Storage" : "OpenStack Object Storage", "Service name" : "Назва служби", + "Request timeout (seconds)" : "Час очікування запиту (секунди)", "Name" : "Ім'я", "Storage type" : "Тип сховища", "Scope" : "Область", diff --git a/apps/files_external/lib/Config/ConfigAdapter.php b/apps/files_external/lib/Config/ConfigAdapter.php index 57faf91fcdc..7f7c5e3e2eb 100644 --- a/apps/files_external/lib/Config/ConfigAdapter.php +++ b/apps/files_external/lib/Config/ConfigAdapter.php @@ -163,7 +163,7 @@ class ConfigAdapter implements IMountProvider { $storageConfig->getId() ); } else { - return new ExternalMountPoint( + return new SystemMountPoint( $storageConfig, $storage, '/' . $user->getUID() . '/files' . $storageConfig->getMountPoint(), diff --git a/apps/files_external/lib/Config/SystemMountPoint.php b/apps/files_external/lib/Config/SystemMountPoint.php new file mode 100644 index 00000000000..7de07699164 --- /dev/null +++ b/apps/files_external/lib/Config/SystemMountPoint.php @@ -0,0 +1,30 @@ +<?php + +declare(strict_types=1); +/** + * @copyright Copyright (c) 2022 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 OCP\Files\Mount\ISystemMountPoint; + +class SystemMountPoint extends ExternalMountPoint implements ISystemMountPoint { +} diff --git a/apps/files_external/lib/Lib/Storage/AmazonS3.php b/apps/files_external/lib/Lib/Storage/AmazonS3.php index 6ebbed33a87..d5b8eff6fe5 100644 --- a/apps/files_external/lib/Lib/Storage/AmazonS3.php +++ b/apps/files_external/lib/Lib/Storage/AmazonS3.php @@ -744,7 +744,7 @@ class AmazonS3 extends \OC\Files\Storage\Common { return $result->get('Status') === 'Enabled'; } catch (S3Exception $s3Exception) { // This is needed for compatibility with Storj gateway which does not support versioning yet - if ($s3Exception->getAwsErrorCode() === 'NotImplemented') { + if ($s3Exception->getAwsErrorCode() === 'NotImplemented' || $s3Exception->getAwsErrorCode() === 'AccessDenied') { return false; } throw $s3Exception; diff --git a/apps/files_external/templates/list.php b/apps/files_external/templates/list.php index 1d4f6993168..8f68157652b 100644 --- a/apps/files_external/templates/list.php +++ b/apps/files_external/templates/list.php @@ -1,21 +1,18 @@ <?php /** @var \OCP\IL10N $l */ ?> -<div id="controls"> - <div id="file_action_panel"></div> +<div class="files-controls"> + <div></div> </div> -<div id='notification'></div> -<div id="emptycontent" class="hidden"> +<div class="emptyfilelist emptycontent hidden"> <div class="icon-external"></div> <h2><?php p($l->t('No external storage configured or you don\'t have the permission to configure them')); ?></h2> </div> -<input type="hidden" name="dir" value="" id="dir"> - -<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> +<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> <thead> <tr> - <th id='headerName' class="hidden column-name"> - <div id="headerName-container"> + <th class="hidden column-name"> + <div class="column-name-container"> <a class="name sort columntitle" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a> </div> </th> @@ -27,7 +24,7 @@ </th> </tr> </thead> - <tbody id="fileList"> + <tbody class="files-fileList"> </tbody> <tfoot> </tfoot> diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index 2b5b1a1bcd2..d8dd91822c5 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -95,7 +95,7 @@ $canCreateMounts = $_['visibilityType'] === BackendService::VISIBILITY_ADMIN || } ?> -<div id="emptycontent" class="hidden"> +<div class="emptyfilelist emptycontent hidden"> <div class="icon-external"></div> <h2><?php p($l->t('No external storage configured or you don\'t have the permission to configure them')); ?></h2> </div> @@ -173,11 +173,11 @@ $canCreateMounts = $_['visibilityType'] === BackendService::VISIBILITY_ADMIN || </td> <?php endif; ?> <td class="mountOptionsToggle hidden"> - <div class="icon-more" title="<?php p($l->t('Advanced settings')); ?>"></div> + <button type="button" class="icon-more" aria-expanded="false" title="<?php p($l->t('Advanced settings')); ?>"></button> <input type="hidden" class="mountOptions" value="" /> </td> <td class="save hidden"> - <div class="icon-checkmark" title="<?php p($l->t('Save')); ?>"></div> + <button type="button" class="icon-checkmark" title="<?php p($l->t('Save')); ?>"></button> </td> </tr> </tbody> diff --git a/apps/files_external/tests/appSpec.js b/apps/files_external/tests/appSpec.js index 42a8e08950b..8e5ab5b8d98 100644 --- a/apps/files_external/tests/appSpec.js +++ b/apps/files_external/tests/appSpec.js @@ -72,7 +72,7 @@ describe('OCA.Files_External.App tests', function() { const setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView') // create dummy table so we can click the dom - const $table = '<table><thead></thead><tbody id="fileList"></tbody></table>' + const $table = '<table><thead></thead><tbody class="files-fileList"></tbody></table>' $('#app-content-extstoragemounts').append($table) App._inFileList = null diff --git a/apps/files_external/tests/js/mountsfilelistSpec.js b/apps/files_external/tests/js/mountsfilelistSpec.js index 662a820f364..389b76550b7 100644 --- a/apps/files_external/tests/js/mountsfilelistSpec.js +++ b/apps/files_external/tests/js/mountsfilelistSpec.js @@ -31,21 +31,20 @@ describe('OCA.Files_External.FileList tests', function() { // init parameters and test table elements $('#testArea').append( - '<div id="app-content-container">' + + '<div id="app-content">' + // init horrible parameters - '<input type="hidden" id="dir" value="/"></input>' + '<input type="hidden" id="permissions" value="31"></input>' + // dummy controls - '<div id="controls">' + + '<div class="files-controls">' + ' <div class="actions creatable"></div>' + ' <div class="notCreatable"></div>' + '</div>' + // dummy table // TODO: at some point this will be rendered by the fileList class itself! - '<table id="filestable">' + + '<table class="files-filestable">' + '<thead><tr>' + - '<th id="headerName" class="hidden column-name">' + - ' <div id="headerName-container">' + + '<th class="hidden column-name">' + + ' <div id="column-name-container">' + ' <a class="name sort columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + ' </div>' + '</th>' + @@ -56,10 +55,10 @@ describe('OCA.Files_External.FileList tests', function() { ' <a class="scope sort columntitle" data-sort="scope"><span>Scope</span><span class="sort-indicator"></span></a>' + '</th>' + '</tr></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '<tfoot></tfoot>' + '</table>' + - '<div id="emptycontent">Empty content message</div>' + + '<div class="emptyfilelist emptycontent">Empty content message</div>' + '</div>' ); }); @@ -78,7 +77,7 @@ describe('OCA.Files_External.FileList tests', function() { beforeEach(function() { fileList = new OCA.Files_External.FileList( - $('#app-content-container') + $('#app-content') ); reloading = fileList.reload(); diff --git a/apps/files_sharing/composer/composer/autoload_classmap.php b/apps/files_sharing/composer/composer/autoload_classmap.php index 2810910c8c9..e4a493cadfb 100644 --- a/apps/files_sharing/composer/composer/autoload_classmap.php +++ b/apps/files_sharing/composer/composer/autoload_classmap.php @@ -80,4 +80,5 @@ return array( 'OCA\\Files_Sharing\\SharedMount' => $baseDir . '/../lib/SharedMount.php', 'OCA\\Files_Sharing\\SharedStorage' => $baseDir . '/../lib/SharedStorage.php', 'OCA\\Files_Sharing\\Updater' => $baseDir . '/../lib/Updater.php', + 'OCA\\Files_Sharing\\ViewOnly' => $baseDir . '/../lib/ViewOnly.php', ); diff --git a/apps/files_sharing/composer/composer/autoload_static.php b/apps/files_sharing/composer/composer/autoload_static.php index 70149b1cdc0..3c92a46fc82 100644 --- a/apps/files_sharing/composer/composer/autoload_static.php +++ b/apps/files_sharing/composer/composer/autoload_static.php @@ -95,6 +95,7 @@ class ComposerStaticInitFiles_Sharing 'OCA\\Files_Sharing\\SharedMount' => __DIR__ . '/..' . '/../lib/SharedMount.php', 'OCA\\Files_Sharing\\SharedStorage' => __DIR__ . '/..' . '/../lib/SharedStorage.php', 'OCA\\Files_Sharing\\Updater' => __DIR__ . '/..' . '/../lib/Updater.php', + 'OCA\\Files_Sharing\\ViewOnly' => __DIR__ . '/..' . '/../lib/ViewOnly.php', ); public static function getInitializer(ClassLoader $loader) diff --git a/apps/files_sharing/composer/composer/installed.php b/apps/files_sharing/composer/composer/installed.php index 1d332e29100..c54b7ff5437 100644 --- a/apps/files_sharing/composer/composer/installed.php +++ b/apps/files_sharing/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'ea4531aaaa6eb9fb3859e05b69ab773bfbfe7437', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'ea4531aaaa6eb9fb3859e05b69ab773bfbfe7437', 'dev_requirement' => false, ), ), diff --git a/apps/files_sharing/css/mobile.css b/apps/files_sharing/css/mobile.css index 63acecb90c8..96b9736b6ac 100644 --- a/apps/files_sharing/css/mobile.css +++ b/apps/files_sharing/css/mobile.css @@ -27,9 +27,9 @@ } /* hide size and date columns */ - table th#headerSize, + table th.column-size, table td.filesize, -table th#headerDate, +table th.column-mtime, table td.date { display: none; } @@ -43,7 +43,6 @@ table td.date { #imgframe { width: 100%; padding: 0; - margin-bottom: 35px; } /* some margin for the file type icon */ @@ -52,12 +51,12 @@ table td.date { } /* some padding for better clickability */ - #fileList a.action img { + .files-fileList a.action img { padding: 0 6px 0 12px; } /* hide text of the actions on mobile */ - #fileList a.action:not(.menuitem) span { + .files-fileList a.action:not(.menuitem) span { display: none; } @@ -78,7 +77,7 @@ table td.date { padding: 0 20px; } - #emptycontent { + .emptycontent { margin-top: 10vh; } } diff --git a/apps/files_sharing/css/mobile.css.map b/apps/files_sharing/css/mobile.css.map index 36f4289e94a..ab822b947db 100644 --- a/apps/files_sharing/css/mobile.css.map +++ b/apps/files_sharing/css/mobile.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAEA;EACA;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;IACA;;;EAGD;IACI;IACA;;;EAEJ;IACC;;;EAGD;IACC","file":"mobile.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAEA;EACA;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;IACA;;;EAGD;IACI;IACA;;;EAEJ;IACC;;;EAGD;IACC","file":"mobile.css"}
\ No newline at end of file diff --git a/apps/files_sharing/css/mobile.scss b/apps/files_sharing/css/mobile.scss index 38a7a9cd711..5800bf6755f 100644 --- a/apps/files_sharing/css/mobile.scss +++ b/apps/files_sharing/css/mobile.scss @@ -8,9 +8,9 @@ } /* hide size and date columns */ -table th#headerSize, +table th.column-size, table td.filesize, -table th#headerDate, +table th.column-mtime, table td.date { display: none; } @@ -24,7 +24,6 @@ table td.filename .nametext { #imgframe { width: 100%; padding: 0; - margin-bottom: 35px; } /* some margin for the file type icon */ #imgframe .publicpreview { @@ -32,11 +31,11 @@ table td.filename .nametext { } /* some padding for better clickability */ -#fileList a.action img { +.files-fileList a.action img { padding: 0 6px 0 12px; } /* hide text of the actions on mobile */ -#fileList a.action:not(.menuitem) span { +.files-fileList a.action:not(.menuitem) span { display: none; } @@ -56,7 +55,7 @@ table td.filename .nametext { padding: 0 20px; } -#emptycontent { +.emptycontent { margin-top: 10vh; } } diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css index 21dd876905c..ad80b871454 100644 --- a/apps/files_sharing/css/public.css +++ b/apps/files_sharing/css/public.css @@ -41,6 +41,11 @@ margin: 0 auto; } +#imgframe #viewer { + height: 100%; + width: 100%; +} + #imgframe img { max-height: 100% !important; max-width: 100% !important; @@ -67,6 +72,15 @@ font-size: 1.2em; } +#imgframe .viewer__file { + height: 100%; + width: 100%; +} + +#imgframe .plyr { + max-height: 100%; +} + /* fix multiselect bar offset on shared page */ thead { left: 0 !important; @@ -122,19 +136,19 @@ thead { margin: 0 auto; } -#emptycontent.has-note { +.emptycontent.has-note { margin-top: 5vh; } -#public-upload #emptycontent h2 { +#public-upload .emptycontent h2 { margin: 10px 0 5px 0; } -#public-upload #emptycontent h2 + p { +#public-upload .emptycontent h2 + p { margin-bottom: 30px; } -#public-upload #emptycontent .icon-folder { +#public-upload .emptycontent .icon-folder { height: 16px; width: 16px; background-size: 16px; @@ -145,13 +159,13 @@ thead { opacity: 1; } -#public-upload #emptycontent #displayavatar .icon-folder { +#public-upload .emptycontent #displayavatar .icon-folder { height: 48px; width: 48px; background-size: 48px; } -#public-upload #emptycontent .button { +#public-upload .emptycontent .button { display: inline-block; height: auto; width: auto; @@ -165,20 +179,20 @@ thead { padding-left: 42px; } -#public-upload #emptycontent ul { +#public-upload .emptycontent ul { width: 230px; margin: 5px auto 5vh; text-align: left; } -#public-upload #emptycontent li { +#public-upload .emptycontent li { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 7px 0; } -#public-upload #emptycontent li img { +#public-upload .emptycontent li img { margin-right: 5px; position: relative; top: 2px; diff --git a/apps/files_sharing/css/public.css.map b/apps/files_sharing/css/public.css.map index c100a63b6d8..685bc56dd9e 100644 --- a/apps/files_sharing/css/public.css.map +++ b/apps/files_sharing/css/public.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAID;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAED;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;AAAA;AAGC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AACA;EACC;EACA;;;AAIF;EACC;EACA;;;AAKD;EAII;IACC;;;AAQL;EAGG;IACC","file":"public.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAED;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;AAAA;AAGC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AACA;EACC;EACA;;;AAIF;EACC;EACA;;;AAKD;EAII;IACC;;;AAQL;EAGG;IACC","file":"public.css"}
\ No newline at end of file diff --git a/apps/files_sharing/css/public.scss b/apps/files_sharing/css/public.scss index a3754b7be9f..588a11d30a7 100644 --- a/apps/files_sharing/css/public.scss +++ b/apps/files_sharing/css/public.scss @@ -21,6 +21,10 @@ margin:0 auto; } +#imgframe #viewer { + height: 100%; + width: 100%; +} #imgframe img { max-height: 100% !important; @@ -48,6 +52,15 @@ font-size: 1.2em; } +#imgframe .viewer__file { + height: 100%; + width: 100%; +} + +#imgframe .plyr { + max-height: 100%; +} + /* fix multiselect bar offset on shared page */ thead { left: 0 !important; @@ -101,21 +114,21 @@ thead { margin: 0 auto; } -#emptycontent { +.emptycontent { &.has-note { margin-top: 5vh; } } -#public-upload #emptycontent h2 { +#public-upload .emptycontent h2 { margin: 10px 0 5px 0; } -#public-upload #emptycontent h2+p { +#public-upload .emptycontent h2+p { margin-bottom: 30px; } -#public-upload #emptycontent .icon-folder { +#public-upload .emptycontent .icon-folder { height: 16px; width: 16px; background-size: 16px; @@ -126,13 +139,13 @@ thead { opacity: 1; } -#public-upload #emptycontent #displayavatar .icon-folder { +#public-upload .emptycontent #displayavatar .icon-folder { height: 48px; width: 48px; background-size: 48px; } -#public-upload #emptycontent .button { +#public-upload .emptycontent .button { display: inline-block; height: auto; width: auto; @@ -146,20 +159,20 @@ thead { padding-left: 42px; } -#public-upload #emptycontent ul { +#public-upload .emptycontent ul { width: 230px; margin: 5px auto 5vh; text-align: left; } -#public-upload #emptycontent li { +#public-upload .emptycontent li { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 7px 0; } -#public-upload #emptycontent li img { +#public-upload .emptycontent li img { margin-right: 5px; position: relative; top: 2px; diff --git a/apps/files_sharing/css/publicView.css b/apps/files_sharing/css/publicView.css index c10620e59bf..d37218f76aa 100644 --- a/apps/files_sharing/css/publicView.css +++ b/apps/files_sharing/css/publicView.css @@ -41,6 +41,11 @@ margin: 0 auto; } +#imgframe #viewer { + height: 100%; + width: 100%; +} + #imgframe img { max-height: 100% !important; max-width: 100% !important; @@ -67,6 +72,15 @@ font-size: 1.2em; } +#imgframe .viewer__file { + height: 100%; + width: 100%; +} + +#imgframe .plyr { + max-height: 100%; +} + /* fix multiselect bar offset on shared page */ thead { left: 0 !important; @@ -122,19 +136,19 @@ thead { margin: 0 auto; } -#emptycontent.has-note { +.emptycontent.has-note { margin-top: 5vh; } -#public-upload #emptycontent h2 { +#public-upload .emptycontent h2 { margin: 10px 0 5px 0; } -#public-upload #emptycontent h2 + p { +#public-upload .emptycontent h2 + p { margin-bottom: 30px; } -#public-upload #emptycontent .icon-folder { +#public-upload .emptycontent .icon-folder { height: 16px; width: 16px; background-size: 16px; @@ -145,13 +159,13 @@ thead { opacity: 1; } -#public-upload #emptycontent #displayavatar .icon-folder { +#public-upload .emptycontent #displayavatar .icon-folder { height: 48px; width: 48px; background-size: 48px; } -#public-upload #emptycontent .button { +#public-upload .emptycontent .button { display: inline-block; height: auto; width: auto; @@ -165,20 +179,20 @@ thead { padding-left: 42px; } -#public-upload #emptycontent ul { +#public-upload .emptycontent ul { width: 230px; margin: 5px auto 5vh; text-align: left; } -#public-upload #emptycontent li { +#public-upload .emptycontent li { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 7px 0; } -#public-upload #emptycontent li img { +#public-upload .emptycontent li img { margin-right: 5px; position: relative; top: 2px; @@ -261,9 +275,9 @@ thead { } /* hide size and date columns */ - table th#headerSize, + table th.column-size, table td.filesize, -table th#headerDate, +table th.column-mtime, table td.date { display: none; } @@ -277,7 +291,6 @@ table td.date { #imgframe { width: 100%; padding: 0; - margin-bottom: 35px; } /* some margin for the file type icon */ @@ -286,12 +299,12 @@ table td.date { } /* some padding for better clickability */ - #fileList a.action img { + .files-fileList a.action img { padding: 0 6px 0 12px; } /* hide text of the actions on mobile */ - #fileList a.action:not(.menuitem) span { + .files-fileList a.action:not(.menuitem) span { display: none; } @@ -312,7 +325,7 @@ table td.date { padding: 0 20px; } - #emptycontent { + .emptycontent { margin-top: 10vh; } } diff --git a/apps/files_sharing/css/publicView.css.map b/apps/files_sharing/css/publicView.css.map index e49de3e17ba..5ece94c690a 100644 --- a/apps/files_sharing/css/publicView.css.map +++ b/apps/files_sharing/css/publicView.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","public.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAID;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAED;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;AAAA;AAGC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AACA;EACC;EACA;;;AAIF;EACC;EACA;;;AAKD;EAII;IACC;;;AAQL;EAGG;IACC;;;ADjOJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AEEA;AAEA;EACA;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;IACA;;;EAGD;IACI;IACA;;;EAEJ;IACC;;;EAGD;IACC","file":"publicView.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","public.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAED;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;AAAA;AAGC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AACA;EACC;EACA;;;AAIF;EACC;EACA;;;AAKD;EAII;IACC;;;AAQL;EAGG;IACC;;;AD9OJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AEEA;AAEA;EACA;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;IACA;;;EAGD;IACI;IACA;;;EAEJ;IACC;;;EAGD;IACC","file":"publicView.css"}
\ No newline at end of file diff --git a/apps/files_sharing/js/app.js b/apps/files_sharing/js/app.js index 24416fd5a3f..b9a60c73dab 100644 --- a/apps/files_sharing/js/app.js +++ b/apps/files_sharing/js/app.js @@ -46,7 +46,7 @@ OCA.Sharing.App = { this._extendFileList(this._inFileList) this._inFileList.appName = t('files_sharing', 'Shared with you') - this._inFileList.$el.find('#emptycontent').html('<div class="icon-shared"></div>' + this._inFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-shared"></div>' + '<h2>' + t('files_sharing', 'Nothing shared with you yet') + '</h2>' + '<p>' + t('files_sharing', 'Files and folders others share with you will show up here') + '</p>') return this._inFileList @@ -72,7 +72,7 @@ OCA.Sharing.App = { this._extendFileList(this._outFileList) this._outFileList.appName = t('files_sharing', 'Shared with others') - this._outFileList.$el.find('#emptycontent').html('<div class="icon-shared"></div>' + this._outFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-shared"></div>' + '<h2>' + t('files_sharing', 'Nothing shared yet') + '</h2>' + '<p>' + t('files_sharing', 'Files and folders you share will show up here') + '</p>') return this._outFileList @@ -98,7 +98,7 @@ OCA.Sharing.App = { this._extendFileList(this._linkFileList) this._linkFileList.appName = t('files_sharing', 'Shared by link') - this._linkFileList.$el.find('#emptycontent').html('<div class="icon-public"></div>' + this._linkFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-public"></div>' + '<h2>' + t('files_sharing', 'No shared links') + '</h2>' + '<p>' + t('files_sharing', 'Files and folders you share by link will show up here') + '</p>') return this._linkFileList @@ -126,7 +126,7 @@ OCA.Sharing.App = { this._extendFileList(this._deletedFileList) this._deletedFileList.appName = t('files_sharing', 'Deleted shares') - this._deletedFileList.$el.find('#emptycontent').html('<div class="icon-share"></div>' + this._deletedFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>' + '<h2>' + t('files_sharing', 'No deleted shares') + '</h2>' + '<p>' + t('files_sharing', 'Shares you deleted will show up here') + '</p>') return this._deletedFileList @@ -155,7 +155,7 @@ OCA.Sharing.App = { this._extendFileList(this._pendingFileList) this._pendingFileList.appName = t('files_sharing', 'Pending shares') - this._pendingFileList.$el.find('#emptycontent').html('<div class="icon-share"></div>' + this._pendingFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>' + '<h2>' + t('files_sharing', 'No pending shares') + '</h2>' + '<p>' + t('files_sharing', 'Shares you have received but not confirmed will show up here') + '</p>') return this._pendingFileList @@ -181,7 +181,7 @@ OCA.Sharing.App = { this._extendFileList(this._overviewFileList) this._overviewFileList.appName = t('files_sharing', 'Shares') - this._overviewFileList.$el.find('#emptycontent').html('<div class="icon-share"></div>' + this._overviewFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>' + '<h2>' + t('files_sharing', 'No shares') + '</h2>' + '<p>' + t('files_sharing', 'Shares will show up here') + '</p>') return this._overviewFileList diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js index e2830aeea9e..42151bca1cb 100644 --- a/apps/files_sharing/js/files_drop.js +++ b/apps/files_sharing/js/files_drop.js @@ -140,7 +140,7 @@ }); $('#public-upload .button.icon-upload').click(function(e) { e.preventDefault(); - $('#public-upload #emptycontent input').focus().trigger('click'); + $('#public-upload .emptycontent input').focus().trigger('click'); }); window.onbeforeunload = function() { return self.confirmBeforeUnload(); diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js index bfb035fb817..a0a57c41e9d 100644 --- a/apps/files_sharing/js/public.js +++ b/apps/files_sharing/js/public.js @@ -45,7 +45,8 @@ OCA.Sharing.PublicApp = { OCA.Files.fileActions = fileActions; this._initialized = true; - this.initialDir = $('#dir').val(); + var urlParams = OC.Util.History.parseUrlQuery(); + this.initialDir = urlParams.path || '/'; var token = $('#sharingToken').val(); var hideDownload = $('#hideDownload').val(); @@ -60,7 +61,7 @@ OCA.Sharing.PublicApp = { } // file list mode ? - if ($el.find('#filestable').length) { + if ($el.find('.files-filestable').length) { var filesClient = new OC.Files.Client({ host: OC.getHost(), port: OC.getPort(), @@ -128,7 +129,6 @@ OCA.Sharing.PublicApp = { } } - // dynamically load image previews var bottomMargin = 350; var previewWidth = $(window).width(); @@ -152,13 +152,10 @@ OCA.Sharing.PublicApp = { 'max-height': previewHeight }); - var fileSize = parseInt($('#filesize').val(), 10); - var maxGifSize = parseInt($('#maxSizeAnimateGif').val(), 10); - - if (mimetype === 'image/gif' && - (maxGifSize === -1 || fileSize <= (maxGifSize * 1024 * 1024))) { - img.attr('src', $('#downloadURL').val()); - imgcontainer.appendTo('#imgframe'); + if (OCA.Viewer && OCA.Viewer.mimetypes.includes(mimetype) + && (mimetype.startsWith('image/') || mimetype.startsWith('video/'))) { + OCA.Viewer.setRootElement('#imgframe') + OCA.Viewer.open({ path: '/' }) } else if (mimetype.substr(0, mimetype.indexOf('/')) === 'text' && window.btoa) { if (OC.appswebroots['files_texteditor'] !== undefined || OC.appswebroots['text'] !== undefined) { @@ -188,8 +185,7 @@ OCA.Sharing.PublicApp = { // the icon should appear before, so the container should be // prepended to the frame. imgcontainer.prependTo('#imgframe'); - } - else if (previewSupported === 'true') { + } else if (previewSupported === 'true') { $('#imgframe > video').attr('poster', OC.generateUrl('/apps/files_sharing/publicpreview/' + token + '?' + OC.buildQueryString(params))); } @@ -277,7 +273,7 @@ OCA.Sharing.PublicApp = { }; this.fileList.updateEmptyContent = function() { - this.$el.find('#emptycontent .uploadmessage').text( + this.$el.find('.emptycontent .uploadmessage').text( t('files_sharing', 'You can upload into this folder') ); OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments); @@ -306,7 +302,6 @@ OCA.Sharing.PublicApp = { }); if (hideDownload === 'true') { - this.fileList.$el.find('#headerSelection').remove(); this.fileList.$el.find('.summary').find('td:first-child').remove(); } } diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js index e8420113ad9..7d7e91dd965 100644 --- a/apps/files_sharing/js/sharedfilelist.js +++ b/apps/files_sharing/js/sharedfilelist.js @@ -17,7 +17,7 @@ * @classdesc Sharing file list. * Contains both "shared with others" and "shared with you" modes. * - * @param $el container element with existing markup for the #controls + * @param $el container element with existing markup for the .files-controls * and a table * @param [options] map of options, see other parameters * @param {boolean} [options.sharedWithUser] true to return files shared with @@ -158,8 +158,8 @@ var dir = this.getCurrentDirectory() if (dir === '/') { // root has special permissions - this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty) - this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty) + this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty) + this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty) // hide expiration date header for non link only shares if (!this._linksOnly) { diff --git a/apps/files_sharing/l10n/bg.js b/apps/files_sharing/l10n/bg.js index eea722c7e1a..da9d7462897 100644 --- a/apps/files_sharing/l10n/bg.js +++ b/apps/files_sharing/l10n/bg.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Възелът не можа да се заключи", "Could not lock path" : "Пътя не можа да се заключи", "Wrong or no update parameter given" : "Грешен или не е даден параметър за актуализация", + "Cannot increase permissions" : "Не могат да се увеличат права", "Share must at least have READ or CREATE permissions" : "Споделянето трябва да има права поне за ЧЕТЕНЕ или СЪЗДАВАНЕ", "Share must have READ permission if UPDATE or DELETE permission is set" : "Споделянето трябва да има право за ЧЕТЕНЕ ако е зададено право за ОБНОВЯВАНЕ или за ИЗТРИВАНЕ", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "„Изпращането на паролата от Nextcloud Talk“ за споделяне на файл или папка не беше успешно, тъй като Nextcloud Talk не е активиран.", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "Споделено с групата {user} от {owner}", "Shared with the conversation {user} by {owner}" : "Споделено с разговора {user} от {owner}", "Shared with {user} by {owner}" : "Споделено с {user} от {owner}", + "Allow download" : "Позволяване на изтегляне/сваляне/", "Added by {initiator}" : "Добавено от {initiator}", "Via “{folder}”" : "Чрез “{folder}”", "Internal link" : "Вътрешна връзка", + "Copy internal link to clipboard" : "Копиране на вътрешна връзката в клипборда", "Link copied" : "Връзката е копирана", "Cannot copy, please copy the link manually" : "Не може да се копира, моля, копирайте връзката ръчно", "Copy to clipboard" : "Копирай", "Only works for users with access to this folder" : "Работи само за потребители, които имат достъп до тази папка", "Only works for users with access to this file" : "Работи само за потребители, които имат достъп до този файл", + "Copy public link to clipboard" : "Копиране на публична връзка в клипборда", "Please enter the following required information before creating the share" : "Моля, въведете следната необходима информация, преди да създадете споделянето", "Password protection (enforced)" : "Защита с парола (приложена)", "Password protection" : "Password protection", diff --git a/apps/files_sharing/l10n/bg.json b/apps/files_sharing/l10n/bg.json index 51a2c5e6ab1..c7c79da78f3 100644 --- a/apps/files_sharing/l10n/bg.json +++ b/apps/files_sharing/l10n/bg.json @@ -121,6 +121,7 @@ "Could not lock node" : "Възелът не можа да се заключи", "Could not lock path" : "Пътя не можа да се заключи", "Wrong or no update parameter given" : "Грешен или не е даден параметър за актуализация", + "Cannot increase permissions" : "Не могат да се увеличат права", "Share must at least have READ or CREATE permissions" : "Споделянето трябва да има права поне за ЧЕТЕНЕ или СЪЗДАВАНЕ", "Share must have READ permission if UPDATE or DELETE permission is set" : "Споделянето трябва да има право за ЧЕТЕНЕ ако е зададено право за ОБНОВЯВАНЕ или за ИЗТРИВАНЕ", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "„Изпращането на паролата от Nextcloud Talk“ за споделяне на файл или папка не беше успешно, тъй като Nextcloud Talk не е активиран.", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "Споделено с групата {user} от {owner}", "Shared with the conversation {user} by {owner}" : "Споделено с разговора {user} от {owner}", "Shared with {user} by {owner}" : "Споделено с {user} от {owner}", + "Allow download" : "Позволяване на изтегляне/сваляне/", "Added by {initiator}" : "Добавено от {initiator}", "Via “{folder}”" : "Чрез “{folder}”", "Internal link" : "Вътрешна връзка", + "Copy internal link to clipboard" : "Копиране на вътрешна връзката в клипборда", "Link copied" : "Връзката е копирана", "Cannot copy, please copy the link manually" : "Не може да се копира, моля, копирайте връзката ръчно", "Copy to clipboard" : "Копирай", "Only works for users with access to this folder" : "Работи само за потребители, които имат достъп до тази папка", "Only works for users with access to this file" : "Работи само за потребители, които имат достъп до този файл", + "Copy public link to clipboard" : "Копиране на публична връзка в клипборда", "Please enter the following required information before creating the share" : "Моля, въведете следната необходима информация, преди да създадете споделянето", "Password protection (enforced)" : "Защита с парола (приложена)", "Password protection" : "Password protection", diff --git a/apps/files_sharing/l10n/ca.js b/apps/files_sharing/l10n/ca.js index ad562755205..18291e7afe8 100644 --- a/apps/files_sharing/l10n/ca.js +++ b/apps/files_sharing/l10n/ca.js @@ -100,6 +100,7 @@ OC.L10N.register( "Shared link" : "Enllaç compartit", "Could not delete share" : "No s'ha pogut suprimir la compartició", "Please specify a file or folder path" : "Si us plau, especifiqueu un camí de fitxer o carpeta", + "Wrong path, file/folder does not exist" : "Camí incorrecte, fitxer/carpeta no existeix", "Could not create share" : "No s'ha pogut crear la compartició", "Please specify a valid user" : "Si us plau, especifiqueu un usuari vàlid", "Group sharing is disabled by the administrator" : "L'administrador ha desactivat l'opció per compartir grups", @@ -118,6 +119,7 @@ OC.L10N.register( "Could not lock node" : "No s'ha pogut bloquejar el node", "Could not lock path" : "No s'ha pogut bloquejar la ruta d'accés", "Wrong or no update parameter given" : "S'ha donat un paràmetre o un paràmetre d'actualització incorrecte", + "Cannot increase permissions" : "No es poden augmentar els permisos", "shared by %s" : "compartit per %s", "Download all files" : "Descarrega tots els fitxers", "Direct link" : "Enllaç directe", @@ -222,6 +224,8 @@ OC.L10N.register( "sharing is disabled" : "s'ha desactivat la compartició", "For more info, please ask the person who sent this link." : "Per més informació contacteu amb qui us ha enviat l'enllaç.", "Share note" : "Comparteix nota", + "Show list view" : "Mostra en vista de llista", + "Show grid view" : "Mostra en vista de graella", "Upload files to %s" : "Carrega fitxers a %s", "Note" : "Nota", "Select or drop files" : "Selecciona o deixa anar els fitxers", diff --git a/apps/files_sharing/l10n/ca.json b/apps/files_sharing/l10n/ca.json index f64449f3e69..89fc363996f 100644 --- a/apps/files_sharing/l10n/ca.json +++ b/apps/files_sharing/l10n/ca.json @@ -98,6 +98,7 @@ "Shared link" : "Enllaç compartit", "Could not delete share" : "No s'ha pogut suprimir la compartició", "Please specify a file or folder path" : "Si us plau, especifiqueu un camí de fitxer o carpeta", + "Wrong path, file/folder does not exist" : "Camí incorrecte, fitxer/carpeta no existeix", "Could not create share" : "No s'ha pogut crear la compartició", "Please specify a valid user" : "Si us plau, especifiqueu un usuari vàlid", "Group sharing is disabled by the administrator" : "L'administrador ha desactivat l'opció per compartir grups", @@ -116,6 +117,7 @@ "Could not lock node" : "No s'ha pogut bloquejar el node", "Could not lock path" : "No s'ha pogut bloquejar la ruta d'accés", "Wrong or no update parameter given" : "S'ha donat un paràmetre o un paràmetre d'actualització incorrecte", + "Cannot increase permissions" : "No es poden augmentar els permisos", "shared by %s" : "compartit per %s", "Download all files" : "Descarrega tots els fitxers", "Direct link" : "Enllaç directe", @@ -220,6 +222,8 @@ "sharing is disabled" : "s'ha desactivat la compartició", "For more info, please ask the person who sent this link." : "Per més informació contacteu amb qui us ha enviat l'enllaç.", "Share note" : "Comparteix nota", + "Show list view" : "Mostra en vista de llista", + "Show grid view" : "Mostra en vista de graella", "Upload files to %s" : "Carrega fitxers a %s", "Note" : "Nota", "Select or drop files" : "Selecciona o deixa anar els fitxers", diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index 14b0edaee6e..3b200282a4d 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Uzel se nedaří uzamknout", "Could not lock path" : "Nepodařilo se uzamknout popis umístění", "Wrong or no update parameter given" : "Chyba nebo žádná aktualizace dle zadaných parametrů", + "Cannot increase permissions" : "Nelze navýšit oprávnění", "Share must at least have READ or CREATE permissions" : "Je třeba, aby sdílení mělo alespoň oprávnění pro ČÍST nebo VYTVÁŘET", "Share must have READ permission if UPDATE or DELETE permission is set" : "Pokud je nastaveno oprávnění AKTUALIZOVAT nebo MAZAT je třeba, aby sdílení mělo oprávnění ČÍST", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "„Zaslání hesla prostřednictvím Nextcloud Talk“ pro sdílení souboru či složky se nezdařilo protože Nextcloud Talk není zapnuté.", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "{owner} sdílí se skupinou {user}", "Shared with the conversation {user} by {owner}" : "{owner} sdílí konverzaci {user}", "Shared with {user} by {owner}" : "{owner} sdílí s {user}", + "Allow download" : "Umožnit stahování", "Added by {initiator}" : "Přidal(a) {initiator}", "Via “{folder}”" : "Prostřednictvím „{folder}“", "Internal link" : "Interní odkaz", + "Copy internal link to clipboard" : "Zkopírovat interní odkaz do schránky", "Link copied" : "Odkaz zkopírován", "Cannot copy, please copy the link manually" : "Nedaří se zkopírovat, zkopírujte odkaz ručně", "Copy to clipboard" : "Zkopírovat do schránky", "Only works for users with access to this folder" : "Funguje pouze pro uživatele, kteří mají přístup k této složce", "Only works for users with access to this file" : "Funguje pouze pro uživatele, kteří mají přístup k tomuto souboru", + "Copy public link to clipboard" : "Zkopírovat veřejný odkaz do schránky", "Please enter the following required information before creating the share" : "Před vytvořením sdílení zadejte následující potřebné informace", "Password protection (enforced)" : "Ochrana heslem (vynucená)", "Password protection" : "Ochrana heslem", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index 838af6aebe0..60acaf0fba0 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -121,6 +121,7 @@ "Could not lock node" : "Uzel se nedaří uzamknout", "Could not lock path" : "Nepodařilo se uzamknout popis umístění", "Wrong or no update parameter given" : "Chyba nebo žádná aktualizace dle zadaných parametrů", + "Cannot increase permissions" : "Nelze navýšit oprávnění", "Share must at least have READ or CREATE permissions" : "Je třeba, aby sdílení mělo alespoň oprávnění pro ČÍST nebo VYTVÁŘET", "Share must have READ permission if UPDATE or DELETE permission is set" : "Pokud je nastaveno oprávnění AKTUALIZOVAT nebo MAZAT je třeba, aby sdílení mělo oprávnění ČÍST", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "„Zaslání hesla prostřednictvím Nextcloud Talk“ pro sdílení souboru či složky se nezdařilo protože Nextcloud Talk není zapnuté.", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "{owner} sdílí se skupinou {user}", "Shared with the conversation {user} by {owner}" : "{owner} sdílí konverzaci {user}", "Shared with {user} by {owner}" : "{owner} sdílí s {user}", + "Allow download" : "Umožnit stahování", "Added by {initiator}" : "Přidal(a) {initiator}", "Via “{folder}”" : "Prostřednictvím „{folder}“", "Internal link" : "Interní odkaz", + "Copy internal link to clipboard" : "Zkopírovat interní odkaz do schránky", "Link copied" : "Odkaz zkopírován", "Cannot copy, please copy the link manually" : "Nedaří se zkopírovat, zkopírujte odkaz ručně", "Copy to clipboard" : "Zkopírovat do schránky", "Only works for users with access to this folder" : "Funguje pouze pro uživatele, kteří mají přístup k této složce", "Only works for users with access to this file" : "Funguje pouze pro uživatele, kteří mají přístup k tomuto souboru", + "Copy public link to clipboard" : "Zkopírovat veřejný odkaz do schránky", "Please enter the following required information before creating the share" : "Před vytvořením sdílení zadejte následující potřebné informace", "Password protection (enforced)" : "Ochrana heslem (vynucená)", "Password protection" : "Ochrana heslem", diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js index a62ba179b74..244694a2ef8 100644 --- a/apps/files_sharing/l10n/da.js +++ b/apps/files_sharing/l10n/da.js @@ -26,7 +26,9 @@ OC.L10N.register( "Something happened. Unable to accept the share." : "Der skete et eller andet. Ude af stand til at acceptere delingen.", "Reject share" : "Afvis deling", "Something happened. Unable to reject the share." : "Der skete et eller andet. Ude af stand til at afvise delingen.", + "Waiting…" : "Venter …", "error" : "fejl", + "finished" : "Færdiggjort", "This will stop your current uploads." : "Dette vil stoppe din nuværende uploads.", "Move or copy" : "Flyt eller kopier", "Download" : "Hent", @@ -96,8 +98,12 @@ OC.L10N.register( "Files" : "Filer", "A file or folder has been <strong>shared</strong>" : "En fil eller mappe er blevet <strong>delt</strong>", "Shared link" : "Delt link", + "Wrong share ID, share does not exist" : "Forkert DelingsID, deling findes ikke", "Could not delete share" : "Kunne ikke slette deling", "Please specify a file or folder path" : "Præciser venligst en fil eller mappesti", + "Wrong path, file/folder does not exist" : "Forkert sti, fil/mappe findes ikke", + "Could not create share" : "Kunne ikke oprette deling", + "Invalid permissions" : "Ugyldige rettigheder", "Please specify a valid user" : "Angiv en gyldig bruger", "Group sharing is disabled by the administrator" : "Gruppedeling er deaktiveret af administratoren", "Please specify a valid group" : "Angiv en gyldig gruppe", diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json index 05aed230dbb..d13f0543dfe 100644 --- a/apps/files_sharing/l10n/da.json +++ b/apps/files_sharing/l10n/da.json @@ -24,7 +24,9 @@ "Something happened. Unable to accept the share." : "Der skete et eller andet. Ude af stand til at acceptere delingen.", "Reject share" : "Afvis deling", "Something happened. Unable to reject the share." : "Der skete et eller andet. Ude af stand til at afvise delingen.", + "Waiting…" : "Venter …", "error" : "fejl", + "finished" : "Færdiggjort", "This will stop your current uploads." : "Dette vil stoppe din nuværende uploads.", "Move or copy" : "Flyt eller kopier", "Download" : "Hent", @@ -94,8 +96,12 @@ "Files" : "Filer", "A file or folder has been <strong>shared</strong>" : "En fil eller mappe er blevet <strong>delt</strong>", "Shared link" : "Delt link", + "Wrong share ID, share does not exist" : "Forkert DelingsID, deling findes ikke", "Could not delete share" : "Kunne ikke slette deling", "Please specify a file or folder path" : "Præciser venligst en fil eller mappesti", + "Wrong path, file/folder does not exist" : "Forkert sti, fil/mappe findes ikke", + "Could not create share" : "Kunne ikke oprette deling", + "Invalid permissions" : "Ugyldige rettigheder", "Please specify a valid user" : "Angiv en gyldig bruger", "Group sharing is disabled by the administrator" : "Gruppedeling er deaktiveret af administratoren", "Please specify a valid group" : "Angiv en gyldig gruppe", diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index 9b5392681c0..afcd089eaf9 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -1,21 +1,21 @@ OC.L10N.register( "files_sharing", { - "Shared with you" : "Mit Dir geteilt", - "Nothing shared with you yet" : "Bis jetzt wurde nichts mit Dir geteilt", - "Files and folders others share with you will show up here" : "Mit Dir geteilte Dateien und Ordner anderer werden hier erscheinen", - "Shared with others" : "Von Dir geteilt", + "Shared with you" : "Mit dir geteilt", + "Nothing shared with you yet" : "Bis jetzt wurde nichts mit dir geteilt", + "Files and folders others share with you will show up here" : "Mit dir geteilte Dateien und Ordner anderer werden hier erscheinen", + "Shared with others" : "Von dir geteilt", "Nothing shared yet" : "Noch nichts geteilt", - "Files and folders you share will show up here" : "Von Dir geteilte Dateien und Ordner werden hier erscheinen", + "Files and folders you share will show up here" : "Von dir geteilte Dateien und Ordner werden hier erscheinen", "Shared by link" : "Geteilt über einen Link", "No shared links" : "Keine geteilten Links", "Files and folders you share by link will show up here" : "Per Link freigegebene Dateien und Ordner werden hier erscheinen", "Deleted shares" : "Gelöschte Freigaben", "No deleted shares" : "Keine gelöschten Freigaben", - "Shares you deleted will show up here" : "Von Dir gelöschte Freigaben werden hier erscheinen", + "Shares you deleted will show up here" : "Von dir gelöschte Freigaben werden hier erscheinen", "Pending shares" : "Ausstehende Freigaben", "No pending shares" : "Keine ausstehenden Freigaben", - "Shares you have received but not confirmed will show up here" : "Freigaben, die Du erhalten, aber nicht bestätigt hast, werden hier angezeigt", + "Shares you have received but not confirmed will show up here" : "Freigaben, die du erhalten, aber nicht bestätigt hast, werden hier angezeigt", "Shares" : "Freigaben", "No shares" : "Keine Freigaben", "Shares will show up here" : "Freigaben werden hier angezeigt", @@ -37,7 +37,7 @@ OC.L10N.register( "Terms of service" : "Nutzungsbedingungen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", - "Failed to add the public link to your Nextcloud" : "Fehler beim Hinzufügen des öffentlichen Links zu Deiner Nextcloud", + "Failed to add the public link to your Nextcloud" : "Fehler beim Hinzufügen des öffentlichen Links zu deiner Nextcloud", "No expiration date set" : "Kein Ablaufdatum gesetzt", "Shared by" : "Geteilt von", "File shares" : "Dateifreigaben", @@ -75,7 +75,7 @@ OC.L10N.register( "{user} unshared {file} from you" : "{user} hat die Freigabe für {file} entfernt", "Shared with {user}" : "Geteilt mit {user}", "Removed share for {user}" : "Freigabe für {user} entfernt", - "You removed yourself" : "Du hast Dich selbst entfernt", + "You removed yourself" : "Du hast dich selbst entfernt", "{actor} removed themselves" : "{actor} hat sich selbst entfernt", "{actor} shared with {user}" : "{actor} hat mit {user} geteilt", "{actor} removed share for {user}" : "{actor} hat die Freigabe für {user} entfernt", @@ -85,12 +85,12 @@ OC.L10N.register( "Share expired" : "Freigabe abgelaufen", "You shared {file} with {user}" : "Du hast {file} mit {user} geteilt", "You removed {user} from {file}" : "Du hast {user} von {file} entfernt", - "You removed yourself from {file}" : "Du hast Dich selbst entfernt von {file}", + "You removed yourself from {file}" : "Du hast dich selbst entfernt von {file}", "{actor} removed themselves from {file}" : "{actor} hat sich selbst entfernt von {file}", "{actor} shared {file} with {user}" : "{actor} hat {file} mit {user} geteilt", "{actor} removed {user} from {file}" : "{actor} hat {user} von {file} entfernt", - "{actor} shared {file} with you" : "{actor} hat {file} mit Dir geteilt", - "{actor} removed you from the share named {file}" : "{actor} hat Dich aus der Freigabe von {file} entfernt", + "{actor} shared {file} with you" : "{actor} hat {file} mit dir geteilt", + "{actor} removed you from the share named {file}" : "{actor} hat dich aus der Freigabe von {file} entfernt", "Share for file {file} with {user} expired" : "Freigabe für die Datei {file} mit {user} abgelaufen", "Share for file {file} expired" : "Freigabe für die Datei {file} abgelaufen", "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Öffentlich oder per E-Mail geteilte Datei oder Ordner wurde <strong>heruntergeladen</strong>", @@ -123,13 +123,14 @@ OC.L10N.register( "Could not lock node" : "Node konnte nicht gesperrt werden", "Could not lock path" : "Pfad konnte nicht gesperrt werden", "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter angegeben", + "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "Share must at least have READ or CREATE permissions" : "Freigabe muss mindestens Lese- oder Erstell-Rechte haben", "Share must have READ permission if UPDATE or DELETE permission is set" : "Die Freigabe muss das Recht Lesen haben, wenn das Recht für Aktualisieren oder Löschen gesetzt ist", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Senden des Passwortes über Nextcloud Talk\" zum Teilen einer Datei gescheitert, da Nextcloud Talk nicht verfügbar ist.", "shared by %s" : "von %s geteilt", "Download all files" : "Alle Dateien herunterladen", "Direct link" : "Direkter Link", - "Add to your %s" : "Hinzufügen zu Deiner %s", + "Add to your %s" : "Hinzufügen zu deiner %s", "Share API is disabled" : "Teilen-API ist deaktivert", "File sharing" : "Dateifreigabe", "Share will expire tomorrow" : "Freigabe läuft morgen ab", @@ -218,7 +219,7 @@ OC.L10N.register( "Unable to load the shares list" : "Liste der Freigaben konnte nicht geladen werden", "Expires {relativetime}" : "Läuft {relativetime} ab", "this share just expired." : "Diese Freigabe ist gerade abgelaufen.", - "Shared with you by {owner}" : "{owner} hat dies mit Dir geteilt", + "Shared with you by {owner}" : "{owner} hat dies mit dir geteilt", "Link to a file" : "Mit einer Datei verknüpfen", "Error creating the share: {errorMessage}" : "Fehler beim Erstellen der Freigabe: {errorMessage}", "Error creating the share" : "Fehler beim Erstellen der Freigabe", @@ -227,10 +228,10 @@ OC.L10N.register( "Shared" : "Geteilt", "Share" : "Teilen", "Shared with" : "Geteilt mit", - "Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Dir und der Gruppe {group} geteilt", - "Shared with you and {circle} by {owner}" : "{owner} hat dies mit Dir und dem Kreis {circle} geteilt", - "Shared with you and the conversation {conversation} by {owner}" : "{owner} hat dies mit Dir und der Unterhaltung {conversation} geteilt", - "Shared with you in a conversation by {owner}" : "{owner} hat dies mit Dir in einer Unterhaltung {conversation} geteilt", + "Shared with you and the group {group} by {owner}" : "{owner} hat dies mit dir und der Gruppe {group} geteilt", + "Shared with you and {circle} by {owner}" : "{owner} hat dies mit dir und dem Kreis {circle} geteilt", + "Shared with you and the conversation {conversation} by {owner}" : "{owner} hat dies mit dir und der Unterhaltung {conversation} geteilt", + "Shared with you in a conversation by {owner}" : "{owner} hat dies mit dir in einer Unterhaltung {conversation} geteilt", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Name" : "Name", "Share time" : "Freigabezeitpunkt", @@ -239,7 +240,7 @@ OC.L10N.register( "the item was removed" : "Das Element wurde entfernt", "the link expired" : "Der Link ist abgelaufen", "sharing is disabled" : "Teilen ist deaktiviert", - "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende Dich bitte an die Person, die Dir diesen Link geschickt hat.", + "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende dich bitte an die Person, die dir diesen Link geschickt hat.", "Share note" : "Notiz teilen", "Show list view" : "Listenansicht anzeigen", "Show grid view" : "Rasteransicht anzeigen", @@ -248,8 +249,8 @@ OC.L10N.register( "Select or drop files" : "Dateien auswählen oder hierher ziehen", "Uploading files" : "Dateien werden hochgeladen", "Uploaded files:" : "Hochgeladene Dateien: ", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmst Du den %1$sNutzungsbedingungen%2$s zu.", - "Add to your Nextcloud" : "Zu Deiner Nextcloud hinzufügen", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmst du den %1$sNutzungsbedingungen%2$s zu.", + "Add to your Nextcloud" : "Zu deiner Nextcloud hinzufügen", "Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht", "Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Ordner existiert nicht", "Cannot change permissions for public share links" : "Kann Berechtigungen für öffentlich freigegebene Links nicht ändern", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index 20668a3eb44..845006d7af5 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -1,19 +1,19 @@ { "translations": { - "Shared with you" : "Mit Dir geteilt", - "Nothing shared with you yet" : "Bis jetzt wurde nichts mit Dir geteilt", - "Files and folders others share with you will show up here" : "Mit Dir geteilte Dateien und Ordner anderer werden hier erscheinen", - "Shared with others" : "Von Dir geteilt", + "Shared with you" : "Mit dir geteilt", + "Nothing shared with you yet" : "Bis jetzt wurde nichts mit dir geteilt", + "Files and folders others share with you will show up here" : "Mit dir geteilte Dateien und Ordner anderer werden hier erscheinen", + "Shared with others" : "Von dir geteilt", "Nothing shared yet" : "Noch nichts geteilt", - "Files and folders you share will show up here" : "Von Dir geteilte Dateien und Ordner werden hier erscheinen", + "Files and folders you share will show up here" : "Von dir geteilte Dateien und Ordner werden hier erscheinen", "Shared by link" : "Geteilt über einen Link", "No shared links" : "Keine geteilten Links", "Files and folders you share by link will show up here" : "Per Link freigegebene Dateien und Ordner werden hier erscheinen", "Deleted shares" : "Gelöschte Freigaben", "No deleted shares" : "Keine gelöschten Freigaben", - "Shares you deleted will show up here" : "Von Dir gelöschte Freigaben werden hier erscheinen", + "Shares you deleted will show up here" : "Von dir gelöschte Freigaben werden hier erscheinen", "Pending shares" : "Ausstehende Freigaben", "No pending shares" : "Keine ausstehenden Freigaben", - "Shares you have received but not confirmed will show up here" : "Freigaben, die Du erhalten, aber nicht bestätigt hast, werden hier angezeigt", + "Shares you have received but not confirmed will show up here" : "Freigaben, die du erhalten, aber nicht bestätigt hast, werden hier angezeigt", "Shares" : "Freigaben", "No shares" : "Keine Freigaben", "Shares will show up here" : "Freigaben werden hier angezeigt", @@ -35,7 +35,7 @@ "Terms of service" : "Nutzungsbedingungen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", - "Failed to add the public link to your Nextcloud" : "Fehler beim Hinzufügen des öffentlichen Links zu Deiner Nextcloud", + "Failed to add the public link to your Nextcloud" : "Fehler beim Hinzufügen des öffentlichen Links zu deiner Nextcloud", "No expiration date set" : "Kein Ablaufdatum gesetzt", "Shared by" : "Geteilt von", "File shares" : "Dateifreigaben", @@ -73,7 +73,7 @@ "{user} unshared {file} from you" : "{user} hat die Freigabe für {file} entfernt", "Shared with {user}" : "Geteilt mit {user}", "Removed share for {user}" : "Freigabe für {user} entfernt", - "You removed yourself" : "Du hast Dich selbst entfernt", + "You removed yourself" : "Du hast dich selbst entfernt", "{actor} removed themselves" : "{actor} hat sich selbst entfernt", "{actor} shared with {user}" : "{actor} hat mit {user} geteilt", "{actor} removed share for {user}" : "{actor} hat die Freigabe für {user} entfernt", @@ -83,12 +83,12 @@ "Share expired" : "Freigabe abgelaufen", "You shared {file} with {user}" : "Du hast {file} mit {user} geteilt", "You removed {user} from {file}" : "Du hast {user} von {file} entfernt", - "You removed yourself from {file}" : "Du hast Dich selbst entfernt von {file}", + "You removed yourself from {file}" : "Du hast dich selbst entfernt von {file}", "{actor} removed themselves from {file}" : "{actor} hat sich selbst entfernt von {file}", "{actor} shared {file} with {user}" : "{actor} hat {file} mit {user} geteilt", "{actor} removed {user} from {file}" : "{actor} hat {user} von {file} entfernt", - "{actor} shared {file} with you" : "{actor} hat {file} mit Dir geteilt", - "{actor} removed you from the share named {file}" : "{actor} hat Dich aus der Freigabe von {file} entfernt", + "{actor} shared {file} with you" : "{actor} hat {file} mit dir geteilt", + "{actor} removed you from the share named {file}" : "{actor} hat dich aus der Freigabe von {file} entfernt", "Share for file {file} with {user} expired" : "Freigabe für die Datei {file} mit {user} abgelaufen", "Share for file {file} expired" : "Freigabe für die Datei {file} abgelaufen", "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Öffentlich oder per E-Mail geteilte Datei oder Ordner wurde <strong>heruntergeladen</strong>", @@ -121,13 +121,14 @@ "Could not lock node" : "Node konnte nicht gesperrt werden", "Could not lock path" : "Pfad konnte nicht gesperrt werden", "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter angegeben", + "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "Share must at least have READ or CREATE permissions" : "Freigabe muss mindestens Lese- oder Erstell-Rechte haben", "Share must have READ permission if UPDATE or DELETE permission is set" : "Die Freigabe muss das Recht Lesen haben, wenn das Recht für Aktualisieren oder Löschen gesetzt ist", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Senden des Passwortes über Nextcloud Talk\" zum Teilen einer Datei gescheitert, da Nextcloud Talk nicht verfügbar ist.", "shared by %s" : "von %s geteilt", "Download all files" : "Alle Dateien herunterladen", "Direct link" : "Direkter Link", - "Add to your %s" : "Hinzufügen zu Deiner %s", + "Add to your %s" : "Hinzufügen zu deiner %s", "Share API is disabled" : "Teilen-API ist deaktivert", "File sharing" : "Dateifreigabe", "Share will expire tomorrow" : "Freigabe läuft morgen ab", @@ -216,7 +217,7 @@ "Unable to load the shares list" : "Liste der Freigaben konnte nicht geladen werden", "Expires {relativetime}" : "Läuft {relativetime} ab", "this share just expired." : "Diese Freigabe ist gerade abgelaufen.", - "Shared with you by {owner}" : "{owner} hat dies mit Dir geteilt", + "Shared with you by {owner}" : "{owner} hat dies mit dir geteilt", "Link to a file" : "Mit einer Datei verknüpfen", "Error creating the share: {errorMessage}" : "Fehler beim Erstellen der Freigabe: {errorMessage}", "Error creating the share" : "Fehler beim Erstellen der Freigabe", @@ -225,10 +226,10 @@ "Shared" : "Geteilt", "Share" : "Teilen", "Shared with" : "Geteilt mit", - "Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Dir und der Gruppe {group} geteilt", - "Shared with you and {circle} by {owner}" : "{owner} hat dies mit Dir und dem Kreis {circle} geteilt", - "Shared with you and the conversation {conversation} by {owner}" : "{owner} hat dies mit Dir und der Unterhaltung {conversation} geteilt", - "Shared with you in a conversation by {owner}" : "{owner} hat dies mit Dir in einer Unterhaltung {conversation} geteilt", + "Shared with you and the group {group} by {owner}" : "{owner} hat dies mit dir und der Gruppe {group} geteilt", + "Shared with you and {circle} by {owner}" : "{owner} hat dies mit dir und dem Kreis {circle} geteilt", + "Shared with you and the conversation {conversation} by {owner}" : "{owner} hat dies mit dir und der Unterhaltung {conversation} geteilt", + "Shared with you in a conversation by {owner}" : "{owner} hat dies mit dir in einer Unterhaltung {conversation} geteilt", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Name" : "Name", "Share time" : "Freigabezeitpunkt", @@ -237,7 +238,7 @@ "the item was removed" : "Das Element wurde entfernt", "the link expired" : "Der Link ist abgelaufen", "sharing is disabled" : "Teilen ist deaktiviert", - "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende Dich bitte an die Person, die Dir diesen Link geschickt hat.", + "For more info, please ask the person who sent this link." : "Um nähere Informationen zu erhalten, wende dich bitte an die Person, die dir diesen Link geschickt hat.", "Share note" : "Notiz teilen", "Show list view" : "Listenansicht anzeigen", "Show grid view" : "Rasteransicht anzeigen", @@ -246,8 +247,8 @@ "Select or drop files" : "Dateien auswählen oder hierher ziehen", "Uploading files" : "Dateien werden hochgeladen", "Uploaded files:" : "Hochgeladene Dateien: ", - "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmst Du den %1$sNutzungsbedingungen%2$s zu.", - "Add to your Nextcloud" : "Zu Deiner Nextcloud hinzufügen", + "By uploading files, you agree to the %1$sterms of service%2$s." : "Durch das Hochladen von Dateien stimmst du den %1$sNutzungsbedingungen%2$s zu.", + "Add to your Nextcloud" : "Zu deiner Nextcloud hinzufügen", "Wrong share ID, share doesn't exist" : "Fehlerhafte Freigabe-ID, Freigabe existiert nicht", "Wrong path, file/folder doesn't exist" : "Falscher Pfad, Datei/Ordner existiert nicht", "Cannot change permissions for public share links" : "Kann Berechtigungen für öffentlich freigegebene Links nicht ändern", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 4930ecb0535..cab1af8744c 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Knotenpunkt konnte nicht gesperrt werden", "Could not lock path" : "Pfad konnte nicht gesperrt werden", "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter angegeben", + "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "Share must at least have READ or CREATE permissions" : "Freigabe muss mindestens LESEN- oder ERSTELLEN-Rechte haben", "Share must have READ permission if UPDATE or DELETE permission is set" : "Die Freigabe muss das Recht LESEN haben, wenn das Recht AKTUALISIEREN oder LÖSCHEN gesetzt ist", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Senden des Passwortes über Nextcloud Talk\" zum Teilen einer Datei gescheitert, da Nextcloud Talk nicht verfügbar ist.", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "Geteilt mit der Gruppe {user} von {owner}", "Shared with the conversation {user} by {owner}" : "Geteilt mit der Unterhaltung {user} von {owner}", "Shared with {user} by {owner}" : "Geteilt mit {user} von {owner}", + "Allow download" : "Download erlauben", "Added by {initiator}" : "Hinzugefügt von {initiator}", "Via “{folder}”" : "Über “{folder}”", "Internal link" : "Interner Link", + "Copy internal link to clipboard" : "Internen Link in die Zwischenablage kopieren", "Link copied" : "Link kopiert", "Cannot copy, please copy the link manually" : "Kopieren fehlgeschlagen. Bitte kopieren Sie den Link manuell", "Copy to clipboard" : "In die Zwischenablage kopieren", "Only works for users with access to this folder" : "Funktioniert nur für Benutzer, die Zugriff auf diesen Ordner haben", "Only works for users with access to this file" : "Funktioniert nur für Benutzer, die Zugriff auf diese Datei haben", + "Copy public link to clipboard" : "Öffentlichen Link in die Zwischenablage kopieren", "Please enter the following required information before creating the share" : "Bitte geben Sie die benötigten Informationen ein bevor die Freigabe erstellt wird", "Password protection (enforced)" : "Passwortschutz (erzwungen)", "Password protection" : "Passwortschutz", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 521bcf8465c..f4b444c9ff1 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -121,6 +121,7 @@ "Could not lock node" : "Knotenpunkt konnte nicht gesperrt werden", "Could not lock path" : "Pfad konnte nicht gesperrt werden", "Wrong or no update parameter given" : "Es wurde ein falscher oder kein Updateparameter angegeben", + "Cannot increase permissions" : "Berechtigungen können nicht erhöht werden", "Share must at least have READ or CREATE permissions" : "Freigabe muss mindestens LESEN- oder ERSTELLEN-Rechte haben", "Share must have READ permission if UPDATE or DELETE permission is set" : "Die Freigabe muss das Recht LESEN haben, wenn das Recht AKTUALISIEREN oder LÖSCHEN gesetzt ist", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Senden des Passwortes über Nextcloud Talk\" zum Teilen einer Datei gescheitert, da Nextcloud Talk nicht verfügbar ist.", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "Geteilt mit der Gruppe {user} von {owner}", "Shared with the conversation {user} by {owner}" : "Geteilt mit der Unterhaltung {user} von {owner}", "Shared with {user} by {owner}" : "Geteilt mit {user} von {owner}", + "Allow download" : "Download erlauben", "Added by {initiator}" : "Hinzugefügt von {initiator}", "Via “{folder}”" : "Über “{folder}”", "Internal link" : "Interner Link", + "Copy internal link to clipboard" : "Internen Link in die Zwischenablage kopieren", "Link copied" : "Link kopiert", "Cannot copy, please copy the link manually" : "Kopieren fehlgeschlagen. Bitte kopieren Sie den Link manuell", "Copy to clipboard" : "In die Zwischenablage kopieren", "Only works for users with access to this folder" : "Funktioniert nur für Benutzer, die Zugriff auf diesen Ordner haben", "Only works for users with access to this file" : "Funktioniert nur für Benutzer, die Zugriff auf diese Datei haben", + "Copy public link to clipboard" : "Öffentlichen Link in die Zwischenablage kopieren", "Please enter the following required information before creating the share" : "Bitte geben Sie die benötigten Informationen ein bevor die Freigabe erstellt wird", "Password protection (enforced)" : "Passwortschutz (erzwungen)", "Password protection" : "Passwortschutz", diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index 550ce74d786..5b149f1422f 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -120,6 +120,7 @@ OC.L10N.register( "Could not lock node" : "Δεν ήταν δυνατό να κλειδώσει ο κόμβος", "Could not lock path" : "Αδυναμία κλειδώματος διαδρομής", "Wrong or no update parameter given" : "Λάθος ή καμία παράμετρος αναβάθμισης δεν δόθηκε", + "Cannot increase permissions" : "Δεν μπορούμε να αυξήσουμε δικαιώματα", "shared by %s" : "Διαμοιράστηκε από 1 %s", "Download all files" : "Λήψη όλων των αρχείων", "Direct link" : "Άμεσος σύνδεσμος", diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index 83a0c4d0e68..a60953fee7e 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -118,6 +118,7 @@ "Could not lock node" : "Δεν ήταν δυνατό να κλειδώσει ο κόμβος", "Could not lock path" : "Αδυναμία κλειδώματος διαδρομής", "Wrong or no update parameter given" : "Λάθος ή καμία παράμετρος αναβάθμισης δεν δόθηκε", + "Cannot increase permissions" : "Δεν μπορούμε να αυξήσουμε δικαιώματα", "shared by %s" : "Διαμοιράστηκε από 1 %s", "Download all files" : "Λήψη όλων των αρχείων", "Direct link" : "Άμεσος σύνδεσμος", diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js index 89f160dc828..419007e6677 100644 --- a/apps/files_sharing/l10n/en_GB.js +++ b/apps/files_sharing/l10n/en_GB.js @@ -84,6 +84,7 @@ OC.L10N.register( "Not a directory" : "Not a directory", "Could not lock path" : "Could not lock path", "Wrong or no update parameter given" : "Wrong or no update parameter given", + "Cannot increase permissions" : "Cannot increase permissions", "shared by %s" : "shared by %s", "Direct link" : "Direct link", "Share API is disabled" : "Share API is disabled", diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json index b231d02d834..af8f9e6d5af 100644 --- a/apps/files_sharing/l10n/en_GB.json +++ b/apps/files_sharing/l10n/en_GB.json @@ -82,6 +82,7 @@ "Not a directory" : "Not a directory", "Could not lock path" : "Could not lock path", "Wrong or no update parameter given" : "Wrong or no update parameter given", + "Cannot increase permissions" : "Cannot increase permissions", "shared by %s" : "shared by %s", "Direct link" : "Direct link", "Share API is disabled" : "Share API is disabled", diff --git a/apps/files_sharing/l10n/eo.js b/apps/files_sharing/l10n/eo.js index 949a821b544..e81d5aa8e17 100644 --- a/apps/files_sharing/l10n/eo.js +++ b/apps/files_sharing/l10n/eo.js @@ -107,6 +107,7 @@ OC.L10N.register( "Not a directory" : "Ne estas dosierujo", "Could not lock path" : "Ne eblis ŝlosi vojon", "Wrong or no update parameter given" : "Neniu aŭ neĝusta ĝisdatiga parametro donita", + "Cannot increase permissions" : "Ne eblas pliigi permesojn", "shared by %s" : "kunhavigita de %s", "Download all files" : "Elŝuti ĉiujn dosierojn", "Direct link" : "Direkta ligilo", diff --git a/apps/files_sharing/l10n/eo.json b/apps/files_sharing/l10n/eo.json index d41d8c96512..09bbedadf7c 100644 --- a/apps/files_sharing/l10n/eo.json +++ b/apps/files_sharing/l10n/eo.json @@ -105,6 +105,7 @@ "Not a directory" : "Ne estas dosierujo", "Could not lock path" : "Ne eblis ŝlosi vojon", "Wrong or no update parameter given" : "Neniu aŭ neĝusta ĝisdatiga parametro donita", + "Cannot increase permissions" : "Ne eblas pliigi permesojn", "shared by %s" : "kunhavigita de %s", "Download all files" : "Elŝuti ĉiujn dosierojn", "Direct link" : "Direkta ligilo", diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index eee40b0534d..7def658fa94 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "No se ha podido bloquear el nodo", "Could not lock path" : "No se ha podido bloquear la ruta", "Wrong or no update parameter given" : "No se ha suministrado un parametro correcto", + "Cannot increase permissions" : "No es posible aumentar los permisos", "Share must at least have READ or CREATE permissions" : "El recurso compartido debe tener al menos el permiso de LECTURA o CREACIÓN", "Share must have READ permission if UPDATE or DELETE permission is set" : "El recurso compartido debe tener el permiso de LECTURA si el permiso de ACTUALIZAR o ELIMINAR está activado.", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"El envío de la contraseña por Nextcloud Talk\" para compartir un archivo o carpeta falló porque Nextcloud Talk no está habilitado.", diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index af4958ce2ce..e8fb2306d41 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -121,6 +121,7 @@ "Could not lock node" : "No se ha podido bloquear el nodo", "Could not lock path" : "No se ha podido bloquear la ruta", "Wrong or no update parameter given" : "No se ha suministrado un parametro correcto", + "Cannot increase permissions" : "No es posible aumentar los permisos", "Share must at least have READ or CREATE permissions" : "El recurso compartido debe tener al menos el permiso de LECTURA o CREACIÓN", "Share must have READ permission if UPDATE or DELETE permission is set" : "El recurso compartido debe tener el permiso de LECTURA si el permiso de ACTUALIZAR o ELIMINAR está activado.", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"El envío de la contraseña por Nextcloud Talk\" para compartir un archivo o carpeta falló porque Nextcloud Talk no está habilitado.", diff --git a/apps/files_sharing/l10n/es_419.js b/apps/files_sharing/l10n/es_419.js index f75de45ce7c..056b172791e 100644 --- a/apps/files_sharing/l10n/es_419.js +++ b/apps/files_sharing/l10n/es_419.js @@ -84,6 +84,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_419.json b/apps/files_sharing/l10n/es_419.json index 352da573a70..9d1eb831314 100644 --- a/apps/files_sharing/l10n/es_419.json +++ b/apps/files_sharing/l10n/es_419.json @@ -82,6 +82,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_AR.js b/apps/files_sharing/l10n/es_AR.js index 6d0405f3591..392f255fde5 100644 --- a/apps/files_sharing/l10n/es_AR.js +++ b/apps/files_sharing/l10n/es_AR.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización esta erróneo o faltante", + "Cannot increase permissions" : "No es posible incrementar los permisos", "Direct link" : "Link directa", "Share API is disabled" : "El API para compartir está deshabilitado", "File sharing" : "Compartir archivos", diff --git a/apps/files_sharing/l10n/es_AR.json b/apps/files_sharing/l10n/es_AR.json index ba22861d26f..1fe7eafd429 100644 --- a/apps/files_sharing/l10n/es_AR.json +++ b/apps/files_sharing/l10n/es_AR.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización esta erróneo o faltante", + "Cannot increase permissions" : "No es posible incrementar los permisos", "Direct link" : "Link directa", "Share API is disabled" : "El API para compartir está deshabilitado", "File sharing" : "Compartir archivos", diff --git a/apps/files_sharing/l10n/es_CL.js b/apps/files_sharing/l10n/es_CL.js index b2beba46938..f909f7ff8a2 100644 --- a/apps/files_sharing/l10n/es_CL.js +++ b/apps/files_sharing/l10n/es_CL.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_CL.json b/apps/files_sharing/l10n/es_CL.json index f7ccb907f58..797a65f8e1d 100644 --- a/apps/files_sharing/l10n/es_CL.json +++ b/apps/files_sharing/l10n/es_CL.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_CO.js b/apps/files_sharing/l10n/es_CO.js index d4ef48df4e7..fd4b2b8c6f5 100644 --- a/apps/files_sharing/l10n/es_CO.js +++ b/apps/files_sharing/l10n/es_CO.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_CO.json b/apps/files_sharing/l10n/es_CO.json index a896730f4ad..9c4c85dbe7e 100644 --- a/apps/files_sharing/l10n/es_CO.json +++ b/apps/files_sharing/l10n/es_CO.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_CR.js b/apps/files_sharing/l10n/es_CR.js index 01b8c23159d..5ab6e3c2459 100644 --- a/apps/files_sharing/l10n/es_CR.js +++ b/apps/files_sharing/l10n/es_CR.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_CR.json b/apps/files_sharing/l10n/es_CR.json index 00480fcc844..2985b7ae911 100644 --- a/apps/files_sharing/l10n/es_CR.json +++ b/apps/files_sharing/l10n/es_CR.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_DO.js b/apps/files_sharing/l10n/es_DO.js index f9f42e0c62c..8cc5965ea30 100644 --- a/apps/files_sharing/l10n/es_DO.js +++ b/apps/files_sharing/l10n/es_DO.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_DO.json b/apps/files_sharing/l10n/es_DO.json index af4976d027b..48719ef9b45 100644 --- a/apps/files_sharing/l10n/es_DO.json +++ b/apps/files_sharing/l10n/es_DO.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_EC.js b/apps/files_sharing/l10n/es_EC.js index 9593c0281e7..764ed2c9fcc 100644 --- a/apps/files_sharing/l10n/es_EC.js +++ b/apps/files_sharing/l10n/es_EC.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Enlace directo", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_EC.json b/apps/files_sharing/l10n/es_EC.json index 4acca61eeaa..1d33a5440db 100644 --- a/apps/files_sharing/l10n/es_EC.json +++ b/apps/files_sharing/l10n/es_EC.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Enlace directo", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_GT.js b/apps/files_sharing/l10n/es_GT.js index 01b8c23159d..5ab6e3c2459 100644 --- a/apps/files_sharing/l10n/es_GT.js +++ b/apps/files_sharing/l10n/es_GT.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_GT.json b/apps/files_sharing/l10n/es_GT.json index 00480fcc844..2985b7ae911 100644 --- a/apps/files_sharing/l10n/es_GT.json +++ b/apps/files_sharing/l10n/es_GT.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_HN.js b/apps/files_sharing/l10n/es_HN.js index cac9c37587e..9736fcb5dd8 100644 --- a/apps/files_sharing/l10n/es_HN.js +++ b/apps/files_sharing/l10n/es_HN.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_HN.json b/apps/files_sharing/l10n/es_HN.json index 679b4735769..59285dd41a3 100644 --- a/apps/files_sharing/l10n/es_HN.json +++ b/apps/files_sharing/l10n/es_HN.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_MX.js b/apps/files_sharing/l10n/es_MX.js index d4f01520991..e6966650182 100644 --- a/apps/files_sharing/l10n/es_MX.js +++ b/apps/files_sharing/l10n/es_MX.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json index 7b77c1ec3a8..7a25f9028ff 100644 --- a/apps/files_sharing/l10n/es_MX.json +++ b/apps/files_sharing/l10n/es_MX.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_NI.js b/apps/files_sharing/l10n/es_NI.js index a59be44409b..f362a5c4d99 100644 --- a/apps/files_sharing/l10n/es_NI.js +++ b/apps/files_sharing/l10n/es_NI.js @@ -84,6 +84,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_NI.json b/apps/files_sharing/l10n/es_NI.json index 560501d858d..9fa51e8c925 100644 --- a/apps/files_sharing/l10n/es_NI.json +++ b/apps/files_sharing/l10n/es_NI.json @@ -82,6 +82,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_PA.js b/apps/files_sharing/l10n/es_PA.js index a59be44409b..f362a5c4d99 100644 --- a/apps/files_sharing/l10n/es_PA.js +++ b/apps/files_sharing/l10n/es_PA.js @@ -84,6 +84,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_PA.json b/apps/files_sharing/l10n/es_PA.json index 560501d858d..9fa51e8c925 100644 --- a/apps/files_sharing/l10n/es_PA.json +++ b/apps/files_sharing/l10n/es_PA.json @@ -82,6 +82,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_PE.js b/apps/files_sharing/l10n/es_PE.js index d6433eb1e3d..73295102d2d 100644 --- a/apps/files_sharing/l10n/es_PE.js +++ b/apps/files_sharing/l10n/es_PE.js @@ -84,6 +84,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_PE.json b/apps/files_sharing/l10n/es_PE.json index 42502c2ed51..d588031a566 100644 --- a/apps/files_sharing/l10n/es_PE.json +++ b/apps/files_sharing/l10n/es_PE.json @@ -82,6 +82,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_PR.js b/apps/files_sharing/l10n/es_PR.js index a59be44409b..f362a5c4d99 100644 --- a/apps/files_sharing/l10n/es_PR.js +++ b/apps/files_sharing/l10n/es_PR.js @@ -84,6 +84,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_PR.json b/apps/files_sharing/l10n/es_PR.json index 560501d858d..9fa51e8c925 100644 --- a/apps/files_sharing/l10n/es_PR.json +++ b/apps/files_sharing/l10n/es_PR.json @@ -82,6 +82,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_PY.js b/apps/files_sharing/l10n/es_PY.js index f6c8fb305b2..8112d140c37 100644 --- a/apps/files_sharing/l10n/es_PY.js +++ b/apps/files_sharing/l10n/es_PY.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_PY.json b/apps/files_sharing/l10n/es_PY.json index 5888ea1de63..60c6b5782f0 100644 --- a/apps/files_sharing/l10n/es_PY.json +++ b/apps/files_sharing/l10n/es_PY.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_SV.js b/apps/files_sharing/l10n/es_SV.js index 5955286ee48..5ab6e3c2459 100644 --- a/apps/files_sharing/l10n/es_SV.js +++ b/apps/files_sharing/l10n/es_SV.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", @@ -135,4 +136,4 @@ OC.L10N.register( "Wrong path, file/folder doesn't exist" : "La ruta es incorrecta, el correo / carpeta no existe ", "Sorry, this link doesn’t seem to work anymore." : "Lo sentimos, parece que esta liga ya no funciona. " }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_sharing/l10n/es_SV.json b/apps/files_sharing/l10n/es_SV.json index c8f3b1866bd..2985b7ae911 100644 --- a/apps/files_sharing/l10n/es_SV.json +++ b/apps/files_sharing/l10n/es_SV.json @@ -83,6 +83,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", @@ -132,5 +133,5 @@ "Wrong share ID, share doesn't exist" : "ID del elemento compartido equivocado, el elemento compartido no existe", "Wrong path, file/folder doesn't exist" : "La ruta es incorrecta, el correo / carpeta no existe ", "Sorry, this link doesn’t seem to work anymore." : "Lo sentimos, parece que esta liga ya no funciona. " -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/es_UY.js b/apps/files_sharing/l10n/es_UY.js index 604651eddaa..6eb038f1142 100644 --- a/apps/files_sharing/l10n/es_UY.js +++ b/apps/files_sharing/l10n/es_UY.js @@ -84,6 +84,7 @@ OC.L10N.register( "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/es_UY.json b/apps/files_sharing/l10n/es_UY.json index 32010d2045e..987eba9f25d 100644 --- a/apps/files_sharing/l10n/es_UY.json +++ b/apps/files_sharing/l10n/es_UY.json @@ -82,6 +82,7 @@ "Not a directory" : "No es una carpeta", "Could not lock path" : "No fue posible bloquear la ruta", "Wrong or no update parameter given" : "El parametro de actualización está erróneo o falta", + "Cannot increase permissions" : "No es posible incrementar los permisos", "shared by %s" : "compartido por %s", "Direct link" : "Liga directa", "Share API is disabled" : "El API para compartir está deshabilitado", diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js index 6fd46f7e5f0..967d78cc918 100644 --- a/apps/files_sharing/l10n/et_EE.js +++ b/apps/files_sharing/l10n/et_EE.js @@ -104,6 +104,7 @@ OC.L10N.register( "Not a directory" : "Ei ole kaust", "Could not lock path" : "Ei saanud rada lukustada", "Wrong or no update parameter given" : "Antud vale või aegunud parameeter", + "Cannot increase permissions" : "Ei saa õigusi suurendada", "shared by %s" : "jagas %s", "Download all files" : "Lae kõik failid alla", "Direct link" : "Otsene link", diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json index dfe90a4009d..22d76641371 100644 --- a/apps/files_sharing/l10n/et_EE.json +++ b/apps/files_sharing/l10n/et_EE.json @@ -102,6 +102,7 @@ "Not a directory" : "Ei ole kaust", "Could not lock path" : "Ei saanud rada lukustada", "Wrong or no update parameter given" : "Antud vale või aegunud parameeter", + "Cannot increase permissions" : "Ei saa õigusi suurendada", "shared by %s" : "jagas %s", "Download all files" : "Lae kõik failid alla", "Direct link" : "Otsene link", diff --git a/apps/files_sharing/l10n/eu.js b/apps/files_sharing/l10n/eu.js index aa045de5a0d..11607a92ad7 100644 --- a/apps/files_sharing/l10n/eu.js +++ b/apps/files_sharing/l10n/eu.js @@ -33,7 +33,7 @@ OC.L10N.register( "Move or copy" : "Mugitu edo kopiatu", "Download" : "Deskargatu", "Delete" : "Ezabatu", - "You can upload into this folder" : "Karpeta honetara igo dezakezu", + "You can upload into this folder" : "Karpeta honetara kargatu dezakezu", "Terms of service" : "Erabilera baldintzak", "No compatible server found at {remote}" : "Ez da zerbitzari bateragarririk aurkitu {remote} helbidean", "Invalid server URL" : "Zerbitzari URL baliogabea", @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Ezin izan da nodoa blokeatu", "Could not lock path" : "Ezin izan da bidea blokeatu", "Wrong or no update parameter given" : "Eguneraketa parametrorik ez da eman edo okerra da", + "Cannot increase permissions" : "Ezin dira baimenak handitu", "Share must at least have READ or CREATE permissions" : "Partekatzeak gutxienez IRAKURRI edo SORTU egiteko baimenak behar ditu", "Share must have READ permission if UPDATE or DELETE permission is set" : "Partekatzeak IRAKURRI egiteko baimenak behar ditu, EGUNERATU edo EZABATU baimenak baldin badauzka", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Nextcloud Talk-ek pasahitza bidaltzeak\" huts egin du ez dagoelako Nextcloud Talk gaituta fitxategi edo karpeta bat partekatzeko.", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "{owner} jabeak {user} taldearekin partekatua", "Shared with the conversation {user} by {owner}" : "{owner} jabeak {user} elkarrizketarekin partekatua", "Shared with {user} by {owner}" : "{owner} jabeak {user} erabiltzailearekin partekatua", + "Allow download" : "Baimendu deskarga", "Added by {initiator}" : "Honek gehitua: {initiator}", "Via “{folder}”" : "“{folder}” bidez", "Internal link" : "Barneko esteka", + "Copy internal link to clipboard" : "Kopiatu barne esteka arbelera", "Link copied" : "Esteka kopiatu da", "Cannot copy, please copy the link manually" : "Ezin izan da kopiatu. Kopiatu esteka eskuz", "Copy to clipboard" : "Kopiatu arbelera", "Only works for users with access to this folder" : "Karpeta atzitu dezaketen erabiltzaileentzat bakarrik funtzionatzen du", "Only works for users with access to this file" : "Fitxategi hau atzitu dezaketen erabiltzaileentzat bakarrik funtzionatzen du", + "Copy public link to clipboard" : "Kopiatu esteka publikoa arbelera", "Please enter the following required information before creating the share" : "Sartu ondorengo beharrezko informazioa partekatzea sortu aurretik", "Password protection (enforced)" : "Pasahitz bidez babestua (betearazita)", "Password protection" : "Pasahitz bidezko babesa", @@ -207,7 +211,7 @@ OC.L10N.register( "No recommendations. Start typing." : "Gomendiorik ez. Hasi idazten.", "Resharing is not allowed" : "Birpartekatzea ez da onartzen", "Name or email …" : "Izena edo posta ...", - "Name, email, or Federated Cloud ID …" : "Izena, posta, edo Federatutako Lainoaren IDa ...", + "Name, email, or Federated Cloud ID …" : "Izena, posta, edo federatutako hodei IDa...", "Searching …" : "Bilatzen…", "No elements found." : "Ez da elementurik aurkitu.", "Search globally" : "Bilatu globalki", @@ -250,7 +254,7 @@ OC.L10N.register( "Note" : "Oharra", "Select or drop files" : "Hautatu edo jaregin fitxategiak", "Uploading files" : "Fitxategiak kargatzen", - "Uploaded files:" : "Igotako fitxategiak:", + "Uploaded files:" : "Kargatutako fitxategiak:", "By uploading files, you agree to the %1$sterms of service%2$s." : "Fitxategiak kargatzean, %1$szerbitzu-baldintzak%2$s onartzen dituzu.", "Add to your Nextcloud" : "Gehitu zure Nextclouden", "Wrong share ID, share doesn't exist" : "Partekatze ID okerra, partekatzea ez da existitzen", diff --git a/apps/files_sharing/l10n/eu.json b/apps/files_sharing/l10n/eu.json index 5c9afe75afc..f01a21fae98 100644 --- a/apps/files_sharing/l10n/eu.json +++ b/apps/files_sharing/l10n/eu.json @@ -31,7 +31,7 @@ "Move or copy" : "Mugitu edo kopiatu", "Download" : "Deskargatu", "Delete" : "Ezabatu", - "You can upload into this folder" : "Karpeta honetara igo dezakezu", + "You can upload into this folder" : "Karpeta honetara kargatu dezakezu", "Terms of service" : "Erabilera baldintzak", "No compatible server found at {remote}" : "Ez da zerbitzari bateragarririk aurkitu {remote} helbidean", "Invalid server URL" : "Zerbitzari URL baliogabea", @@ -121,6 +121,7 @@ "Could not lock node" : "Ezin izan da nodoa blokeatu", "Could not lock path" : "Ezin izan da bidea blokeatu", "Wrong or no update parameter given" : "Eguneraketa parametrorik ez da eman edo okerra da", + "Cannot increase permissions" : "Ezin dira baimenak handitu", "Share must at least have READ or CREATE permissions" : "Partekatzeak gutxienez IRAKURRI edo SORTU egiteko baimenak behar ditu", "Share must have READ permission if UPDATE or DELETE permission is set" : "Partekatzeak IRAKURRI egiteko baimenak behar ditu, EGUNERATU edo EZABATU baimenak baldin badauzka", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Nextcloud Talk-ek pasahitza bidaltzeak\" huts egin du ez dagoelako Nextcloud Talk gaituta fitxategi edo karpeta bat partekatzeko.", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "{owner} jabeak {user} taldearekin partekatua", "Shared with the conversation {user} by {owner}" : "{owner} jabeak {user} elkarrizketarekin partekatua", "Shared with {user} by {owner}" : "{owner} jabeak {user} erabiltzailearekin partekatua", + "Allow download" : "Baimendu deskarga", "Added by {initiator}" : "Honek gehitua: {initiator}", "Via “{folder}”" : "“{folder}” bidez", "Internal link" : "Barneko esteka", + "Copy internal link to clipboard" : "Kopiatu barne esteka arbelera", "Link copied" : "Esteka kopiatu da", "Cannot copy, please copy the link manually" : "Ezin izan da kopiatu. Kopiatu esteka eskuz", "Copy to clipboard" : "Kopiatu arbelera", "Only works for users with access to this folder" : "Karpeta atzitu dezaketen erabiltzaileentzat bakarrik funtzionatzen du", "Only works for users with access to this file" : "Fitxategi hau atzitu dezaketen erabiltzaileentzat bakarrik funtzionatzen du", + "Copy public link to clipboard" : "Kopiatu esteka publikoa arbelera", "Please enter the following required information before creating the share" : "Sartu ondorengo beharrezko informazioa partekatzea sortu aurretik", "Password protection (enforced)" : "Pasahitz bidez babestua (betearazita)", "Password protection" : "Pasahitz bidezko babesa", @@ -205,7 +209,7 @@ "No recommendations. Start typing." : "Gomendiorik ez. Hasi idazten.", "Resharing is not allowed" : "Birpartekatzea ez da onartzen", "Name or email …" : "Izena edo posta ...", - "Name, email, or Federated Cloud ID …" : "Izena, posta, edo Federatutako Lainoaren IDa ...", + "Name, email, or Federated Cloud ID …" : "Izena, posta, edo federatutako hodei IDa...", "Searching …" : "Bilatzen…", "No elements found." : "Ez da elementurik aurkitu.", "Search globally" : "Bilatu globalki", @@ -248,7 +252,7 @@ "Note" : "Oharra", "Select or drop files" : "Hautatu edo jaregin fitxategiak", "Uploading files" : "Fitxategiak kargatzen", - "Uploaded files:" : "Igotako fitxategiak:", + "Uploaded files:" : "Kargatutako fitxategiak:", "By uploading files, you agree to the %1$sterms of service%2$s." : "Fitxategiak kargatzean, %1$szerbitzu-baldintzak%2$s onartzen dituzu.", "Add to your Nextcloud" : "Gehitu zure Nextclouden", "Wrong share ID, share doesn't exist" : "Partekatze ID okerra, partekatzea ez da existitzen", diff --git a/apps/files_sharing/l10n/fi.js b/apps/files_sharing/l10n/fi.js index 4d82c290613..43d4894b9e6 100644 --- a/apps/files_sharing/l10n/fi.js +++ b/apps/files_sharing/l10n/fi.js @@ -121,6 +121,7 @@ OC.L10N.register( "Could not lock node" : "Solmua ei voitu lukita", "Could not lock path" : "Polun lukitseminen ei onnistunut", "Wrong or no update parameter given" : "Päivitettävä parametri puuttuu tai on väärin", + "Cannot increase permissions" : "Oikeuksien lisääminen ei onnistu", "shared by %s" : "käyttäjän %s jakama", "Download all files" : "Lataa kaikki tiedostot", "Direct link" : "Suora linkki", @@ -232,6 +233,8 @@ OC.L10N.register( "sharing is disabled" : "jakaminen on poistettu käytöstä", "For more info, please ask the person who sent this link." : "Kysy lisätietoja henkilöltä, jolta sait linkin.", "Share note" : "Jaa muistiinpano", + "Show list view" : "Näytä listanäkymä", + "Show grid view" : "Näytä ruudukkonäkymä", "Upload files to %s" : "Lähetä tiedostoja käyttäjälle %s", "Note" : "Huomio", "Select or drop files" : "Valitse tai pudota tiedostoja", diff --git a/apps/files_sharing/l10n/fi.json b/apps/files_sharing/l10n/fi.json index 5077d982bd7..a48ad331bc7 100644 --- a/apps/files_sharing/l10n/fi.json +++ b/apps/files_sharing/l10n/fi.json @@ -119,6 +119,7 @@ "Could not lock node" : "Solmua ei voitu lukita", "Could not lock path" : "Polun lukitseminen ei onnistunut", "Wrong or no update parameter given" : "Päivitettävä parametri puuttuu tai on väärin", + "Cannot increase permissions" : "Oikeuksien lisääminen ei onnistu", "shared by %s" : "käyttäjän %s jakama", "Download all files" : "Lataa kaikki tiedostot", "Direct link" : "Suora linkki", @@ -230,6 +231,8 @@ "sharing is disabled" : "jakaminen on poistettu käytöstä", "For more info, please ask the person who sent this link." : "Kysy lisätietoja henkilöltä, jolta sait linkin.", "Share note" : "Jaa muistiinpano", + "Show list view" : "Näytä listanäkymä", + "Show grid view" : "Näytä ruudukkonäkymä", "Upload files to %s" : "Lähetä tiedostoja käyttäjälle %s", "Note" : "Huomio", "Select or drop files" : "Valitse tai pudota tiedostoja", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index c8ec96b730f..5da3e1bdfde 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Impossible de verrouiller le nœud", "Could not lock path" : "Impossible de verrouiller le chemin", "Wrong or no update parameter given" : "Mauvais ou aucun paramètre donné ", + "Cannot increase permissions" : "Impossible d'augmenter les permissions", "Share must at least have READ or CREATE permissions" : "Le partage nécessite de disposer à minima des permissions de LECTURE et de CREATION", "Share must have READ permission if UPDATE or DELETE permission is set" : "Le partage doit disposer de l'autorisation LECTURE si l'autorisation METTRE À JOUR ou SUPPRIMER est définie", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"L'envoi du mot de passe par Nextcloud Talk\" pour partager un fichier a échoué car Nextcloud Talk n'est pas activé", @@ -141,7 +142,7 @@ OC.L10N.register( "Reject" : "Refuser", "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Cette application permet aux utilisateurs de partager des fichiers dans Nextcloud. Si cette option est activée, l'administrateur peut choisir quels groupes peuvent partager des fichiers. Les utilisateurs concernés peuvent ensuite partager des fichiers et des dossiers avec d'autres utilisateurs et groupes au sein de Nextcloud. De plus, si l'administrateur active la fonction de lien de partage, un lien externe peut être utilisé pour partager des fichiers avec d'autres utilisateurs en dehors de Nextcloud. Les administrateurs peuvent également faire respecter les mots de passe, les dates d'expiration et permettre le partage de serveur à serveur via des liens de partage, aussi bien que le partage à partir d'appareils mobiles.\nDésactiver cette fonction supprime les fichiers et dossiers partagés sur le serveur pour tous les destinataires de partage, ainsi que sur les clients de synchronisation et les applications mobiles. Plus d'informations sont disponibles dans la documentation Nextcloud.", "Sharing" : "Partage", - "Accept user and group shares by default" : "Par défaut accepter les partages utilisateur et groupe", + "Accept user and group shares by default" : "Accepter par défaut les partages d'utilisateurs et de groupes", "Error while toggling options" : "Erreur pendant le choix des options", "Set default folder for accepted shares" : "Définir le répertoire par défaut pour les partages acceptés", "Reset" : "Réinitialiser", @@ -174,6 +175,7 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "Partagé avec le groupe {user} par {owner}", "Shared with the conversation {user} by {owner}" : "Partagé avec la conversation {user} par {owner}", "Shared with {user} by {owner}" : "Partagé avec {user} par {owner}", + "Allow download" : "Autoriser le téléchargement", "Added by {initiator}" : "Ajouté par {initiator}", "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Lien interne", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 0075bd1ab30..828eb87ac0f 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -121,6 +121,7 @@ "Could not lock node" : "Impossible de verrouiller le nœud", "Could not lock path" : "Impossible de verrouiller le chemin", "Wrong or no update parameter given" : "Mauvais ou aucun paramètre donné ", + "Cannot increase permissions" : "Impossible d'augmenter les permissions", "Share must at least have READ or CREATE permissions" : "Le partage nécessite de disposer à minima des permissions de LECTURE et de CREATION", "Share must have READ permission if UPDATE or DELETE permission is set" : "Le partage doit disposer de l'autorisation LECTURE si l'autorisation METTRE À JOUR ou SUPPRIMER est définie", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"L'envoi du mot de passe par Nextcloud Talk\" pour partager un fichier a échoué car Nextcloud Talk n'est pas activé", @@ -139,7 +140,7 @@ "Reject" : "Refuser", "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Cette application permet aux utilisateurs de partager des fichiers dans Nextcloud. Si cette option est activée, l'administrateur peut choisir quels groupes peuvent partager des fichiers. Les utilisateurs concernés peuvent ensuite partager des fichiers et des dossiers avec d'autres utilisateurs et groupes au sein de Nextcloud. De plus, si l'administrateur active la fonction de lien de partage, un lien externe peut être utilisé pour partager des fichiers avec d'autres utilisateurs en dehors de Nextcloud. Les administrateurs peuvent également faire respecter les mots de passe, les dates d'expiration et permettre le partage de serveur à serveur via des liens de partage, aussi bien que le partage à partir d'appareils mobiles.\nDésactiver cette fonction supprime les fichiers et dossiers partagés sur le serveur pour tous les destinataires de partage, ainsi que sur les clients de synchronisation et les applications mobiles. Plus d'informations sont disponibles dans la documentation Nextcloud.", "Sharing" : "Partage", - "Accept user and group shares by default" : "Par défaut accepter les partages utilisateur et groupe", + "Accept user and group shares by default" : "Accepter par défaut les partages d'utilisateurs et de groupes", "Error while toggling options" : "Erreur pendant le choix des options", "Set default folder for accepted shares" : "Définir le répertoire par défaut pour les partages acceptés", "Reset" : "Réinitialiser", @@ -172,6 +173,7 @@ "Shared with the group {user} by {owner}" : "Partagé avec le groupe {user} par {owner}", "Shared with the conversation {user} by {owner}" : "Partagé avec la conversation {user} par {owner}", "Shared with {user} by {owner}" : "Partagé avec {user} par {owner}", + "Allow download" : "Autoriser le téléchargement", "Added by {initiator}" : "Ajouté par {initiator}", "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Lien interne", diff --git a/apps/files_sharing/l10n/gl.js b/apps/files_sharing/l10n/gl.js index fd9a36eaaa2..05b99fa3b5e 100644 --- a/apps/files_sharing/l10n/gl.js +++ b/apps/files_sharing/l10n/gl.js @@ -118,6 +118,7 @@ OC.L10N.register( "Could not lock node" : "Non foi posíbel bloquear o nodo", "Could not lock path" : "Non foi posíbel bloquear a ruta", "Wrong or no update parameter given" : "Parámetro incorrecto ou non actualizado", + "Cannot increase permissions" : "Non é posíbel aumentar os permisos", "shared by %s" : "compartido por %s", "Download all files" : "Descargar todos os ficheiros", "Direct link" : "Ligazón directa", diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json index 58b0d04b5f4..62750bd94c4 100644 --- a/apps/files_sharing/l10n/gl.json +++ b/apps/files_sharing/l10n/gl.json @@ -116,6 +116,7 @@ "Could not lock node" : "Non foi posíbel bloquear o nodo", "Could not lock path" : "Non foi posíbel bloquear a ruta", "Wrong or no update parameter given" : "Parámetro incorrecto ou non actualizado", + "Cannot increase permissions" : "Non é posíbel aumentar os permisos", "shared by %s" : "compartido por %s", "Download all files" : "Descargar todos os ficheiros", "Direct link" : "Ligazón directa", diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js index 7b7fd8cfe26..beacb8b1cc4 100644 --- a/apps/files_sharing/l10n/he.js +++ b/apps/files_sharing/l10n/he.js @@ -118,6 +118,7 @@ OC.L10N.register( "Could not lock node" : "לא היה ניתן לנעול את הצומת", "Could not lock path" : "לא ניתן היה לנעול נתיב", "Wrong or no update parameter given" : "משתנה עדכון שניתן שגוי או לא קיים", + "Cannot increase permissions" : "לא ניתן להעלות הרשאות", "shared by %s" : "שותף על ידי %s", "Download all files" : "הורדת כל הקבצים", "Direct link" : "קישור ישיר", diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json index 7ef4984310a..90a0cd489ab 100644 --- a/apps/files_sharing/l10n/he.json +++ b/apps/files_sharing/l10n/he.json @@ -116,6 +116,7 @@ "Could not lock node" : "לא היה ניתן לנעול את הצומת", "Could not lock path" : "לא ניתן היה לנעול נתיב", "Wrong or no update parameter given" : "משתנה עדכון שניתן שגוי או לא קיים", + "Cannot increase permissions" : "לא ניתן להעלות הרשאות", "shared by %s" : "שותף על ידי %s", "Download all files" : "הורדת כל הקבצים", "Direct link" : "קישור ישיר", diff --git a/apps/files_sharing/l10n/hu.js b/apps/files_sharing/l10n/hu.js index 54d71c000a5..d0faddf7f22 100644 --- a/apps/files_sharing/l10n/hu.js +++ b/apps/files_sharing/l10n/hu.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Nem sikerült zárolni a csomópontot", "Could not lock path" : "Nem sikerült zárolni az útvonalat", "Wrong or no update parameter given" : "Hibás vagy üres frissítési paraméter", + "Cannot increase permissions" : "Nem lehet növelni az engedélyeket", "Share must at least have READ or CREATE permissions" : "A megosztásnak legalább OLVASÁSI és LÉTREHOZÁSI engedéllyel kell rendelkeznie", "Share must have READ permission if UPDATE or DELETE permission is set" : "A megosztásnak OLVASÁSI jogosultsággal kell rendelkeznie, ha a FRISSÍTÉSI vagy TÖRLÉSI jogosultság meg van adva", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "A „Jelszó kiküldése a Nextcloud Beszélgetéssel” nem sikerült a fájlnál vagy mappánál, mert a Nextcloud Beszélgetés nem engedélyezett.", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "{owner} megosztotta a(z) {user} csoporttal", "Shared with the conversation {user} by {owner}" : "{owner} megosztotta a(z) {user} beszélgetésben", "Shared with {user} by {owner}" : " {owner} megosztotta {user} felhasználóval", + "Allow download" : "Letöltés engedélyezése", "Added by {initiator}" : "Általa hozzáadva: {initiator}", "Via “{folder}”" : "A(z) „{folder}” mappán keretül", "Internal link" : "Belső hivatkozás", + "Copy internal link to clipboard" : "Belső hivatkozás másolása a vágólapra", "Link copied" : "Hivatkozás másolva", "Cannot copy, please copy the link manually" : "A másolás sikertelen, másolja kézzel a hivatkozást", "Copy to clipboard" : "Másolás a vágólapra", "Only works for users with access to this folder" : "Csak azoknál a felhasználóknál működik, akiknek hozzáférésük van ehhez a mappához", "Only works for users with access to this file" : "Csak azoknál a felhasználóknál működik, akiknek hozzáférésük van ehhez a fájlhoz", + "Copy public link to clipboard" : "Nyilvános hivatkozás másolása a vágólapra", "Please enter the following required information before creating the share" : "A megosztás létrehozása előtt adja meg a következő szükséges információkat", "Password protection (enforced)" : "Jelszavas védelem (megkövetelve)", "Password protection" : "Jelszavas védelem", diff --git a/apps/files_sharing/l10n/hu.json b/apps/files_sharing/l10n/hu.json index 3ce264afb8d..f9b308765ab 100644 --- a/apps/files_sharing/l10n/hu.json +++ b/apps/files_sharing/l10n/hu.json @@ -121,6 +121,7 @@ "Could not lock node" : "Nem sikerült zárolni a csomópontot", "Could not lock path" : "Nem sikerült zárolni az útvonalat", "Wrong or no update parameter given" : "Hibás vagy üres frissítési paraméter", + "Cannot increase permissions" : "Nem lehet növelni az engedélyeket", "Share must at least have READ or CREATE permissions" : "A megosztásnak legalább OLVASÁSI és LÉTREHOZÁSI engedéllyel kell rendelkeznie", "Share must have READ permission if UPDATE or DELETE permission is set" : "A megosztásnak OLVASÁSI jogosultsággal kell rendelkeznie, ha a FRISSÍTÉSI vagy TÖRLÉSI jogosultság meg van adva", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "A „Jelszó kiküldése a Nextcloud Beszélgetéssel” nem sikerült a fájlnál vagy mappánál, mert a Nextcloud Beszélgetés nem engedélyezett.", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "{owner} megosztotta a(z) {user} csoporttal", "Shared with the conversation {user} by {owner}" : "{owner} megosztotta a(z) {user} beszélgetésben", "Shared with {user} by {owner}" : " {owner} megosztotta {user} felhasználóval", + "Allow download" : "Letöltés engedélyezése", "Added by {initiator}" : "Általa hozzáadva: {initiator}", "Via “{folder}”" : "A(z) „{folder}” mappán keretül", "Internal link" : "Belső hivatkozás", + "Copy internal link to clipboard" : "Belső hivatkozás másolása a vágólapra", "Link copied" : "Hivatkozás másolva", "Cannot copy, please copy the link manually" : "A másolás sikertelen, másolja kézzel a hivatkozást", "Copy to clipboard" : "Másolás a vágólapra", "Only works for users with access to this folder" : "Csak azoknál a felhasználóknál működik, akiknek hozzáférésük van ehhez a mappához", "Only works for users with access to this file" : "Csak azoknál a felhasználóknál működik, akiknek hozzáférésük van ehhez a fájlhoz", + "Copy public link to clipboard" : "Nyilvános hivatkozás másolása a vágólapra", "Please enter the following required information before creating the share" : "A megosztás létrehozása előtt adja meg a következő szükséges információkat", "Password protection (enforced)" : "Jelszavas védelem (megkövetelve)", "Password protection" : "Jelszavas védelem", diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js index 5fb72750bab..42cb6a739cd 100644 --- a/apps/files_sharing/l10n/is.js +++ b/apps/files_sharing/l10n/is.js @@ -103,6 +103,7 @@ OC.L10N.register( "Not a directory" : "Er ekki mappa", "Could not lock path" : "Gat ekki læst slóð", "Wrong or no update parameter given" : "Rangt eða ekkert uppfærsluviðfang gefið", + "Cannot increase permissions" : "Get ekki aukið aðgangsheimildir", "shared by %s" : "Deilt af %s", "Download all files" : "Sækja allar skrár", "Direct link" : "Beinn tengill", @@ -171,6 +172,8 @@ OC.L10N.register( "sharing is disabled" : "slökkt er á skráadeilingu", "For more info, please ask the person who sent this link." : "Til að vita meira skaltu hafa samband við þann sem sendi þér þennan tengil.", "Share note" : "Deila minnispunkti", + "Show list view" : "Birta listasýn", + "Show grid view" : "Birta reitasýn", "Upload files to %s" : "Senda inn skrár á %s", "Note" : "Minnispunktur", "Select or drop files" : "Veldu eða slepptu skrám", diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json index 97ac3e5eb8b..c50048f1cfb 100644 --- a/apps/files_sharing/l10n/is.json +++ b/apps/files_sharing/l10n/is.json @@ -101,6 +101,7 @@ "Not a directory" : "Er ekki mappa", "Could not lock path" : "Gat ekki læst slóð", "Wrong or no update parameter given" : "Rangt eða ekkert uppfærsluviðfang gefið", + "Cannot increase permissions" : "Get ekki aukið aðgangsheimildir", "shared by %s" : "Deilt af %s", "Download all files" : "Sækja allar skrár", "Direct link" : "Beinn tengill", @@ -169,6 +170,8 @@ "sharing is disabled" : "slökkt er á skráadeilingu", "For more info, please ask the person who sent this link." : "Til að vita meira skaltu hafa samband við þann sem sendi þér þennan tengil.", "Share note" : "Deila minnispunkti", + "Show list view" : "Birta listasýn", + "Show grid view" : "Birta reitasýn", "Upload files to %s" : "Senda inn skrár á %s", "Note" : "Minnispunktur", "Select or drop files" : "Veldu eða slepptu skrám", diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index 68b723a78ab..5562fc66ce5 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -122,6 +122,7 @@ OC.L10N.register( "Could not lock node" : "Impossibile bloccare il nodo", "Could not lock path" : "Impossibile bloccare il percorso", "Wrong or no update parameter given" : "Parametro fornito non valido o non di aggiornamento", + "Cannot increase permissions" : "Impossibile aumentare i permessi", "Share must at least have READ or CREATE permissions" : "La condivisione deve disporre almeno delle autorizzazioni READ o CREATE", "Share must have READ permission if UPDATE or DELETE permission is set" : "La condivisione deve disporre dell'autorizzazione READ se l'autorizzazione è impostata su UPDATE o DELETE.", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Invio della password da Nextcloud Talk\" per condividere un file o una cartella non è riuscito poiché Nextcloud Talk non è attivato.", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index c8d1dde8e0d..fd0dc5c5224 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -120,6 +120,7 @@ "Could not lock node" : "Impossibile bloccare il nodo", "Could not lock path" : "Impossibile bloccare il percorso", "Wrong or no update parameter given" : "Parametro fornito non valido o non di aggiornamento", + "Cannot increase permissions" : "Impossibile aumentare i permessi", "Share must at least have READ or CREATE permissions" : "La condivisione deve disporre almeno delle autorizzazioni READ o CREATE", "Share must have READ permission if UPDATE or DELETE permission is set" : "La condivisione deve disporre dell'autorizzazione READ se l'autorizzazione è impostata su UPDATE o DELETE.", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Invio della password da Nextcloud Talk\" per condividere un file o una cartella non è riuscito poiché Nextcloud Talk non è attivato.", diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index b0b539c5bbe..d4f88eb1f8b 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "ノードをロックできませんでした", "Could not lock path" : "パスをロックできませんでした", "Wrong or no update parameter given" : "間違っているか、またはパラメータが更新されていません", + "Cannot increase permissions" : "パーミッションを追加できません", "Share must at least have READ or CREATE permissions" : "共有には少なくとも 読み込み または 作成の権限が必要です", "Share must have READ permission if UPDATE or DELETE permission is set" : "更新 または 削除権限が設定されている場合、共有者は 読み込み権限を持っている必要があります。", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "Nextcloud Talkが有効になっていないため、ファイルまたはフォルダーを共有するための「NextcloudTalkによるパスワードの送信」ができませんでした。", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "{owner}によってグループ{user}と共有されました", "Shared with the conversation {user} by {owner}" : "{owner}が{user}との会話を共有しました", "Shared with {user} by {owner}" : "{owner}が{user}と共有", + "Allow download" : "ダウンロードを許可", "Added by {initiator}" : "{initiator}によって追加されました", "Via “{folder}”" : "“{folder}” 経由", "Internal link" : "内部リンク", + "Copy internal link to clipboard" : "内部リンクをクリップボードにコピー", "Link copied" : "リンクをコピーしました", "Cannot copy, please copy the link manually" : "コピーできませんでした。手動でリンクをコピーしてください。", "Copy to clipboard" : "クリップボードにコピー", "Only works for users with access to this folder" : "このフォルダーにアクセスできるユーザーにのみ機能します", "Only works for users with access to this file" : "このファイルへのアクセス権を持つユーザーに対してのみ機能します", + "Copy public link to clipboard" : "公開リンクをクリップボードにコピー", "Please enter the following required information before creating the share" : "共有を作成する前に、次の必要な情報を入力してください", "Password protection (enforced)" : "パスワード保護(強制)", "Password protection" : "パスワード保護", diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index 985e4aefdf7..205c91469a8 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -121,6 +121,7 @@ "Could not lock node" : "ノードをロックできませんでした", "Could not lock path" : "パスをロックできませんでした", "Wrong or no update parameter given" : "間違っているか、またはパラメータが更新されていません", + "Cannot increase permissions" : "パーミッションを追加できません", "Share must at least have READ or CREATE permissions" : "共有には少なくとも 読み込み または 作成の権限が必要です", "Share must have READ permission if UPDATE or DELETE permission is set" : "更新 または 削除権限が設定されている場合、共有者は 読み込み権限を持っている必要があります。", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "Nextcloud Talkが有効になっていないため、ファイルまたはフォルダーを共有するための「NextcloudTalkによるパスワードの送信」ができませんでした。", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "{owner}によってグループ{user}と共有されました", "Shared with the conversation {user} by {owner}" : "{owner}が{user}との会話を共有しました", "Shared with {user} by {owner}" : "{owner}が{user}と共有", + "Allow download" : "ダウンロードを許可", "Added by {initiator}" : "{initiator}によって追加されました", "Via “{folder}”" : "“{folder}” 経由", "Internal link" : "内部リンク", + "Copy internal link to clipboard" : "内部リンクをクリップボードにコピー", "Link copied" : "リンクをコピーしました", "Cannot copy, please copy the link manually" : "コピーできませんでした。手動でリンクをコピーしてください。", "Copy to clipboard" : "クリップボードにコピー", "Only works for users with access to this folder" : "このフォルダーにアクセスできるユーザーにのみ機能します", "Only works for users with access to this file" : "このファイルへのアクセス権を持つユーザーに対してのみ機能します", + "Copy public link to clipboard" : "公開リンクをクリップボードにコピー", "Please enter the following required information before creating the share" : "共有を作成する前に、次の必要な情報を入力してください", "Password protection (enforced)" : "パスワード保護(強制)", "Password protection" : "パスワード保護", diff --git a/apps/files_sharing/l10n/ka_GE.js b/apps/files_sharing/l10n/ka_GE.js index f07d567fb75..06b8f7dd426 100644 --- a/apps/files_sharing/l10n/ka_GE.js +++ b/apps/files_sharing/l10n/ka_GE.js @@ -83,6 +83,7 @@ OC.L10N.register( "Not a directory" : "არაა დირექტორია", "Could not lock path" : "მისამართი ვერ ჩაიკეტა", "Wrong or no update parameter given" : "არასწორი ან განახლების პარამეტრის არარსებობა", + "Cannot increase permissions" : "უფლებების გაზრდა ვერ მოხერხდა", "shared by %s" : "გააზიარა მომხმარებელმა %s", "Direct link" : "პირდაპირი ბმული", "Share API is disabled" : "გაზიარების API არაა მოქმედი", diff --git a/apps/files_sharing/l10n/ka_GE.json b/apps/files_sharing/l10n/ka_GE.json index 66f5aa88375..7c0e6fcf136 100644 --- a/apps/files_sharing/l10n/ka_GE.json +++ b/apps/files_sharing/l10n/ka_GE.json @@ -81,6 +81,7 @@ "Not a directory" : "არაა დირექტორია", "Could not lock path" : "მისამართი ვერ ჩაიკეტა", "Wrong or no update parameter given" : "არასწორი ან განახლების პარამეტრის არარსებობა", + "Cannot increase permissions" : "უფლებების გაზრდა ვერ მოხერხდა", "shared by %s" : "გააზიარა მომხმარებელმა %s", "Direct link" : "პირდაპირი ბმული", "Share API is disabled" : "გაზიარების API არაა მოქმედი", diff --git a/apps/files_sharing/l10n/ko.js b/apps/files_sharing/l10n/ko.js index f3289c83810..72cab5c2b35 100644 --- a/apps/files_sharing/l10n/ko.js +++ b/apps/files_sharing/l10n/ko.js @@ -109,6 +109,7 @@ OC.L10N.register( "Not a directory" : "디렉터리가 아님", "Could not lock path" : "경로를 잠글 수 없음", "Wrong or no update parameter given" : "업데이트 인자가 잘못되었거나 지정되지 않았음", + "Cannot increase permissions" : "권한을 늘릴 수 없음", "shared by %s" : "%s에 의해 공유됨", "Download all files" : "모든 파일 다운로드", "Direct link" : "직접 링크", diff --git a/apps/files_sharing/l10n/ko.json b/apps/files_sharing/l10n/ko.json index 86501e14909..67b20bd3013 100644 --- a/apps/files_sharing/l10n/ko.json +++ b/apps/files_sharing/l10n/ko.json @@ -107,6 +107,7 @@ "Not a directory" : "디렉터리가 아님", "Could not lock path" : "경로를 잠글 수 없음", "Wrong or no update parameter given" : "업데이트 인자가 잘못되었거나 지정되지 않았음", + "Cannot increase permissions" : "권한을 늘릴 수 없음", "shared by %s" : "%s에 의해 공유됨", "Download all files" : "모든 파일 다운로드", "Direct link" : "직접 링크", diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index 8e1029c7799..fa2510ccd8f 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -120,6 +120,7 @@ OC.L10N.register( "Could not lock node" : "Nepavyko užrakinti mazgo", "Could not lock path" : "Nepavyko užrakinti kelio", "Wrong or no update parameter given" : "Neperduoti atnaujinimo parametrai", + "Cannot increase permissions" : "Negalima pridėti papildomų leidimų", "shared by %s" : "bendrina %s", "Download all files" : "Atsisiųsti visus failus ", "Direct link" : "Tiesioginė nuoroda", @@ -228,6 +229,8 @@ OC.L10N.register( "sharing is disabled" : "dalinimasis yra išjungtas", "For more info, please ask the person who sent this link." : "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.", "Share note" : "Pasidalinimo pastaba", + "Show list view" : "Rodyti sąrašo rodinį", + "Show grid view" : "Rodyti tinklelio rodinį", "Upload files to %s" : "Įkelkite failus į %s", "Note" : "Pastaba", "Select or drop files" : "Pasirinkite arba vilkite failus", diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index 1fdbd563813..3671a68d68d 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -118,6 +118,7 @@ "Could not lock node" : "Nepavyko užrakinti mazgo", "Could not lock path" : "Nepavyko užrakinti kelio", "Wrong or no update parameter given" : "Neperduoti atnaujinimo parametrai", + "Cannot increase permissions" : "Negalima pridėti papildomų leidimų", "shared by %s" : "bendrina %s", "Download all files" : "Atsisiųsti visus failus ", "Direct link" : "Tiesioginė nuoroda", @@ -226,6 +227,8 @@ "sharing is disabled" : "dalinimasis yra išjungtas", "For more info, please ask the person who sent this link." : "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.", "Share note" : "Pasidalinimo pastaba", + "Show list view" : "Rodyti sąrašo rodinį", + "Show grid view" : "Rodyti tinklelio rodinį", "Upload files to %s" : "Įkelkite failus į %s", "Note" : "Pastaba", "Select or drop files" : "Pasirinkite arba vilkite failus", diff --git a/apps/files_sharing/l10n/lv.js b/apps/files_sharing/l10n/lv.js index 3dffe166719..a37ea71e13f 100644 --- a/apps/files_sharing/l10n/lv.js +++ b/apps/files_sharing/l10n/lv.js @@ -113,6 +113,7 @@ OC.L10N.register( "Could not lock node" : "Nevarēja bloķēt", "Could not lock path" : "Nevarēja bloķēt ceļu", "Wrong or no update parameter given" : "Nepareizs atjaunināšanas parametrs vai tas nav norādīts", + "Cannot increase permissions" : "Nevar palielināt tiesības", "shared by %s" : "Koplietoja %s", "Download all files" : "Lejupielādēt visas datnes", "Direct link" : "Tiešā saite", diff --git a/apps/files_sharing/l10n/lv.json b/apps/files_sharing/l10n/lv.json index 1a24fb250f0..0f36a47851f 100644 --- a/apps/files_sharing/l10n/lv.json +++ b/apps/files_sharing/l10n/lv.json @@ -111,6 +111,7 @@ "Could not lock node" : "Nevarēja bloķēt", "Could not lock path" : "Nevarēja bloķēt ceļu", "Wrong or no update parameter given" : "Nepareizs atjaunināšanas parametrs vai tas nav norādīts", + "Cannot increase permissions" : "Nevar palielināt tiesības", "shared by %s" : "Koplietoja %s", "Download all files" : "Lejupielādēt visas datnes", "Direct link" : "Tiešā saite", diff --git a/apps/files_sharing/l10n/mk.js b/apps/files_sharing/l10n/mk.js index 60eeff1956c..cc609b1fd33 100644 --- a/apps/files_sharing/l10n/mk.js +++ b/apps/files_sharing/l10n/mk.js @@ -98,8 +98,10 @@ OC.L10N.register( "Files" : "Датотеки", "A file or folder has been <strong>shared</strong>" : "Датотека или папка беше <strong>споделена</strong>", "Shared link" : "Споделен линк", + "Wrong share ID, share does not exist" : "Погрешно ID на споделување, споделувањето не постои", "Could not delete share" : "Неможе да се избрише споделувањето", "Please specify a file or folder path" : "Изберете датотека или патека до папка", + "Wrong path, file/folder does not exist" : "Погрешна патека, датотеката/папката не постои", "Could not create share" : "Неможе да се креира споделување", "Invalid permissions" : "Неважечки дозволи", "Please specify a valid user" : "Изберете корисник", @@ -111,6 +113,8 @@ OC.L10N.register( "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Неуспешно испраќање на лозинка за споделувањето %s преку разговор бидејќи разговорот не е овозможен", "Invalid date, date format must be YYYY-MM-DD" : "Невалиден датум, форматот мора да биде ГГГГ-ММ-ДД", "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Споделувањето на %1$s е неуспешно бидејќи позадината не дозволува споделувања од видот %2$s", + "Please specify a valid federated user ID" : "Внесете валидно федерално корисничко ИД", + "Please specify a valid federated group ID" : "Внесете валидно федерално групно ИД", "You cannot share to a Circle if the app is not enabled" : "Неможете да споделите во круг ако апликацијата не е овозможена", "Please specify a valid circle" : "Изберете круг", "Sharing %s failed because the back end does not support room shares" : "Споделувањето на %s е неуспешно бидејќи позадината не дозволува споделувања во соби со разговори", @@ -119,6 +123,10 @@ OC.L10N.register( "Could not lock node" : "Не можам да го заклучам јазолот", "Could not lock path" : "Неможе да се заклучи патеката", "Wrong or no update parameter given" : "Погрешни или нема зададено параметри за ажурирање", + "Cannot increase permissions" : "Неможат да се зголемат дозволите на", + "Share must at least have READ or CREATE permissions" : "Споделувањето мора барем да има дозволи за ЧИТАЊЕ или СОДАВАЊЕ", + "Share must have READ permission if UPDATE or DELETE permission is set" : "Споделувањето мора да има дозвола за ЧИТАЊЕ ако е поставена дозвола за АЖУРИРАЊЕ или БРИШЕЊЕ", + "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "„Испраќањето на лозинката преку Talk“ за споделување датотека или папка не успеа бидејќи Talk не е овозможен.", "shared by %s" : "споделено од %s", "Download all files" : "Преземи ги сите датотеки", "Direct link" : "Директен линк", @@ -135,8 +143,10 @@ OC.L10N.register( "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Оваа апликација им овозможува на корисниците да споделуваат датотеки во рамките на Nextcloud. Доколку е овозможено, администраторот може да избере кои групи можат да споделуваат датотеки. Применливите корисници потоа можат да споделуваат датотеки и папки со други корисници и групи во рамките на Nextcloud. Покрај тоа, ако администраторот ја овозможи функцијата за далечно споделување, може да се користи надворешна врска за споделување датотеки со други корисници надвор од Nextcloud. Администраторот исто така може да овозможи поставување на лозинки, датуми на истекувања и да овозможи споделување од сервер на сервер преку линкови за споделување, како и споделување од мобилни уреди.\nИсклучувањето на функцијата ги отстранува споделените датотеки и папките на серверот за сите приматели на споделување, а исто така и на клиентите за синхронизација и апликациите за мобилни. Повеќе информации се достапни во Документацијата на Nextcloud.", "Sharing" : "Споделување", "Accept user and group shares by default" : "Стандардно прифаќај споделувања од корисници и групи", + "Error while toggling options" : "Грешка при префрлање опции", "Set default folder for accepted shares" : "Постави стандардна папка за прифатените споделувања", "Reset" : "Ресетирање", + "Reset folder to system default" : "Ресетирајте ја папката на стандардниот систем", "Choose a default folder for accepted shares" : "Избери стандардна папка за прифатените споделувања", "Invalid path selected" : "Избрана невалидна патека", "Unknown error" : "Непозната грешка", @@ -144,9 +154,11 @@ OC.L10N.register( "Read only" : "Само читај", "Allow upload and editing" : "Дозволи прикачување и уредување", "File drop (upload only)" : "Испуши датотека (само за прикачување)", + "Custom permissions" : "Прилагодени дозволи", "Read" : "Читај", "Upload" : "Прикачи", "Edit" : "Уреди", + "Bundled permissions" : "Пакет дозволи", "Allow creating" : "Дозволи креирање", "Allow deleting" : "Дозволи бришење", "Allow resharing" : "Дозволи повторно споделување", @@ -163,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "Споделено со група на {user} од {owner}", "Shared with the conversation {user} by {owner}" : "Споделено со разговор на {user} од {owner}", "Shared with {user} by {owner}" : "Споделено со {user} од {owner}", + "Allow download" : "Дозволи преземање", "Added by {initiator}" : "Додадено од {initiator}", "Via “{folder}”" : "Преку “{folder}”", "Internal link" : "Внатрешен линк", + "Copy internal link to clipboard" : "Копирај внатрешен линк во клипборд", "Link copied" : "Линкот е копиран", "Cannot copy, please copy the link manually" : "Неможе да се копира, копирајте го линкот рачно", "Copy to clipboard" : "Копирај во клипборд", "Only works for users with access to this folder" : "Функционира само за корисници со пристап до оваа папка", "Only works for users with access to this file" : "Функционира само за корисници со пристап до оваа датотека", + "Copy public link to clipboard" : "Копирај јавен линк во клипборд", "Please enter the following required information before creating the share" : "Внесете ги следниве потребни податоци пред да го креирате споделувањето", "Password protection (enforced)" : "Заштитено со лозинка (enforced)", "Password protection" : "Заштитено со лозинка", @@ -181,6 +196,8 @@ OC.L10N.register( "Share label" : "Ознака на споделувањето", "Hide download" : "Сокриј преземање", "Password protect" : "Заштити со лозинка", + "Password expires {passwordExpirationTime}" : "Лозинката истекува на {passwordExpirationTime}", + "Password expired" : "Лозинката е истечена", "Video verification" : "Верификација со видео", "Enter a note for the share recipient" : "Внесете белешка до примачот на споделуваето", "Add another link" : "Додади линк", @@ -224,6 +241,7 @@ OC.L10N.register( "Name" : "Име", "Share time" : "Време на споделување", "Expiration date" : "Рок на траење", + "Sorry, this link does not seem to work anymore." : "Извенете, но овој линк повеќе не функционира.", "Reasons might be:" : "Причината може да е:", "the item was removed" : "предметот беше отстранет", "the link expired" : "рокот на линкот е истечен", diff --git a/apps/files_sharing/l10n/mk.json b/apps/files_sharing/l10n/mk.json index f01bef06363..075367b053e 100644 --- a/apps/files_sharing/l10n/mk.json +++ b/apps/files_sharing/l10n/mk.json @@ -96,8 +96,10 @@ "Files" : "Датотеки", "A file or folder has been <strong>shared</strong>" : "Датотека или папка беше <strong>споделена</strong>", "Shared link" : "Споделен линк", + "Wrong share ID, share does not exist" : "Погрешно ID на споделување, споделувањето не постои", "Could not delete share" : "Неможе да се избрише споделувањето", "Please specify a file or folder path" : "Изберете датотека или патека до папка", + "Wrong path, file/folder does not exist" : "Погрешна патека, датотеката/папката не постои", "Could not create share" : "Неможе да се креира споделување", "Invalid permissions" : "Неважечки дозволи", "Please specify a valid user" : "Изберете корисник", @@ -109,6 +111,8 @@ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Неуспешно испраќање на лозинка за споделувањето %s преку разговор бидејќи разговорот не е овозможен", "Invalid date, date format must be YYYY-MM-DD" : "Невалиден датум, форматот мора да биде ГГГГ-ММ-ДД", "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Споделувањето на %1$s е неуспешно бидејќи позадината не дозволува споделувања од видот %2$s", + "Please specify a valid federated user ID" : "Внесете валидно федерално корисничко ИД", + "Please specify a valid federated group ID" : "Внесете валидно федерално групно ИД", "You cannot share to a Circle if the app is not enabled" : "Неможете да споделите во круг ако апликацијата не е овозможена", "Please specify a valid circle" : "Изберете круг", "Sharing %s failed because the back end does not support room shares" : "Споделувањето на %s е неуспешно бидејќи позадината не дозволува споделувања во соби со разговори", @@ -117,6 +121,10 @@ "Could not lock node" : "Не можам да го заклучам јазолот", "Could not lock path" : "Неможе да се заклучи патеката", "Wrong or no update parameter given" : "Погрешни или нема зададено параметри за ажурирање", + "Cannot increase permissions" : "Неможат да се зголемат дозволите на", + "Share must at least have READ or CREATE permissions" : "Споделувањето мора барем да има дозволи за ЧИТАЊЕ или СОДАВАЊЕ", + "Share must have READ permission if UPDATE or DELETE permission is set" : "Споделувањето мора да има дозвола за ЧИТАЊЕ ако е поставена дозвола за АЖУРИРАЊЕ или БРИШЕЊЕ", + "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "„Испраќањето на лозинката преку Talk“ за споделување датотека или папка не успеа бидејќи Talk не е овозможен.", "shared by %s" : "споделено од %s", "Download all files" : "Преземи ги сите датотеки", "Direct link" : "Директен линк", @@ -133,8 +141,10 @@ "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Оваа апликација им овозможува на корисниците да споделуваат датотеки во рамките на Nextcloud. Доколку е овозможено, администраторот може да избере кои групи можат да споделуваат датотеки. Применливите корисници потоа можат да споделуваат датотеки и папки со други корисници и групи во рамките на Nextcloud. Покрај тоа, ако администраторот ја овозможи функцијата за далечно споделување, може да се користи надворешна врска за споделување датотеки со други корисници надвор од Nextcloud. Администраторот исто така може да овозможи поставување на лозинки, датуми на истекувања и да овозможи споделување од сервер на сервер преку линкови за споделување, како и споделување од мобилни уреди.\nИсклучувањето на функцијата ги отстранува споделените датотеки и папките на серверот за сите приматели на споделување, а исто така и на клиентите за синхронизација и апликациите за мобилни. Повеќе информации се достапни во Документацијата на Nextcloud.", "Sharing" : "Споделување", "Accept user and group shares by default" : "Стандардно прифаќај споделувања од корисници и групи", + "Error while toggling options" : "Грешка при префрлање опции", "Set default folder for accepted shares" : "Постави стандардна папка за прифатените споделувања", "Reset" : "Ресетирање", + "Reset folder to system default" : "Ресетирајте ја папката на стандардниот систем", "Choose a default folder for accepted shares" : "Избери стандардна папка за прифатените споделувања", "Invalid path selected" : "Избрана невалидна патека", "Unknown error" : "Непозната грешка", @@ -142,9 +152,11 @@ "Read only" : "Само читај", "Allow upload and editing" : "Дозволи прикачување и уредување", "File drop (upload only)" : "Испуши датотека (само за прикачување)", + "Custom permissions" : "Прилагодени дозволи", "Read" : "Читај", "Upload" : "Прикачи", "Edit" : "Уреди", + "Bundled permissions" : "Пакет дозволи", "Allow creating" : "Дозволи креирање", "Allow deleting" : "Дозволи бришење", "Allow resharing" : "Дозволи повторно споделување", @@ -161,14 +173,17 @@ "Shared with the group {user} by {owner}" : "Споделено со група на {user} од {owner}", "Shared with the conversation {user} by {owner}" : "Споделено со разговор на {user} од {owner}", "Shared with {user} by {owner}" : "Споделено со {user} од {owner}", + "Allow download" : "Дозволи преземање", "Added by {initiator}" : "Додадено од {initiator}", "Via “{folder}”" : "Преку “{folder}”", "Internal link" : "Внатрешен линк", + "Copy internal link to clipboard" : "Копирај внатрешен линк во клипборд", "Link copied" : "Линкот е копиран", "Cannot copy, please copy the link manually" : "Неможе да се копира, копирајте го линкот рачно", "Copy to clipboard" : "Копирај во клипборд", "Only works for users with access to this folder" : "Функционира само за корисници со пристап до оваа папка", "Only works for users with access to this file" : "Функционира само за корисници со пристап до оваа датотека", + "Copy public link to clipboard" : "Копирај јавен линк во клипборд", "Please enter the following required information before creating the share" : "Внесете ги следниве потребни податоци пред да го креирате споделувањето", "Password protection (enforced)" : "Заштитено со лозинка (enforced)", "Password protection" : "Заштитено со лозинка", @@ -179,6 +194,8 @@ "Share label" : "Ознака на споделувањето", "Hide download" : "Сокриј преземање", "Password protect" : "Заштити со лозинка", + "Password expires {passwordExpirationTime}" : "Лозинката истекува на {passwordExpirationTime}", + "Password expired" : "Лозинката е истечена", "Video verification" : "Верификација со видео", "Enter a note for the share recipient" : "Внесете белешка до примачот на споделуваето", "Add another link" : "Додади линк", @@ -222,6 +239,7 @@ "Name" : "Име", "Share time" : "Време на споделување", "Expiration date" : "Рок на траење", + "Sorry, this link does not seem to work anymore." : "Извенете, но овој линк повеќе не функционира.", "Reasons might be:" : "Причината може да е:", "the item was removed" : "предметот беше отстранет", "the link expired" : "рокот на линкот е истечен", diff --git a/apps/files_sharing/l10n/nb.js b/apps/files_sharing/l10n/nb.js index fe262c910be..217b5a57ca9 100644 --- a/apps/files_sharing/l10n/nb.js +++ b/apps/files_sharing/l10n/nb.js @@ -117,6 +117,7 @@ OC.L10N.register( "Not a directory" : "Ikke en mappe", "Could not lock path" : "Kunne ikke låse sti", "Wrong or no update parameter given" : "Feil eller ingen parametre for oppdatering er angitt", + "Cannot increase permissions" : "Kan ikke øke tillatelser", "shared by %s" : "delt av %s", "Download all files" : "Last ned alle filer", "Direct link" : "Direkte lenke", @@ -125,6 +126,7 @@ OC.L10N.register( "File sharing" : "Fildeling", "Share will expire tomorrow" : "Deling utløper i morgen", "One or more of your shares will expire tomorrow" : "En eller flere av delingene dine utløper i morgen", + "Your share of {node} will expire tomorrow" : "Din deling av {node} vil løpe ut i morgen", "You received {share} as a share by {user}" : "Du mottok {share} som en deling fra {user}", "You received {share} to group {group} as a share by {user}" : "Du mottok {share} til gruppen {group} som en deling fra {user}", "Accept" : "Aksepter", @@ -153,6 +155,9 @@ OC.L10N.register( "remote" : "ekstern", "remote group" : "ekstern gruppe", "guest" : "gjest", + "Allow download" : "Tillat nedlasting", + "Added by {initiator}" : "Lagt til av {initiator}", + "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Intern lenke", "Link copied" : "Lenke kopiert", "Cannot copy, please copy the link manually" : "Kan ikke kopiere, kopier lenken manuelt", @@ -169,6 +174,8 @@ OC.L10N.register( "Enter a note for the share recipient" : "Skriv inn en beskjed til mottaker av deling", "Add another link" : "Legg til en lenke til", "Create a new share link" : "Opprett ny delingslenke", + "{shareWith} by {initiator}" : "{shareWith} av {initiator}", + "Shared via link by {initiator}" : "Delt via lenke av {initiator}", "Share link ({label})" : "Del lenke ({label})", "Share link" : "Share link", "No recommendations. Start typing." : "Ingen forslag. Start skriving.", @@ -183,6 +190,7 @@ OC.L10N.register( "No other users with access found" : "Ingen andre brukere med tilgang funnet", "Toggle list of others with access to this directory" : "Endre liste over andre brukere med tilgang til denne mappen", "Toggle list of others with access to this file" : "Endre liste over andre brukere med tilgang til denne filen", + "Expires {relativetime}" : "Utløper {relativetime}", "this share just expired." : "denne delingen utløp akkurat.", "Shared with you by {owner}" : "Delt med deg av {owner}", "Link to a file" : "Lenke til en fil", @@ -203,6 +211,8 @@ OC.L10N.register( "sharing is disabled" : "deling er avskrudd", "For more info, please ask the person who sent this link." : "For mer informasjon, spør personen som sendte lenken.", "Share note" : "Delingsnotat", + "Show list view" : "Vis listevisning", + "Show grid view" : "Vis rutenett-visning", "Upload files to %s" : "Last opp filer til %s", "Note" : "Melding", "Select or drop files" : "Velg eller slipp filer", diff --git a/apps/files_sharing/l10n/nb.json b/apps/files_sharing/l10n/nb.json index f21993bcb48..57fb7b7fa0c 100644 --- a/apps/files_sharing/l10n/nb.json +++ b/apps/files_sharing/l10n/nb.json @@ -115,6 +115,7 @@ "Not a directory" : "Ikke en mappe", "Could not lock path" : "Kunne ikke låse sti", "Wrong or no update parameter given" : "Feil eller ingen parametre for oppdatering er angitt", + "Cannot increase permissions" : "Kan ikke øke tillatelser", "shared by %s" : "delt av %s", "Download all files" : "Last ned alle filer", "Direct link" : "Direkte lenke", @@ -123,6 +124,7 @@ "File sharing" : "Fildeling", "Share will expire tomorrow" : "Deling utløper i morgen", "One or more of your shares will expire tomorrow" : "En eller flere av delingene dine utløper i morgen", + "Your share of {node} will expire tomorrow" : "Din deling av {node} vil løpe ut i morgen", "You received {share} as a share by {user}" : "Du mottok {share} som en deling fra {user}", "You received {share} to group {group} as a share by {user}" : "Du mottok {share} til gruppen {group} som en deling fra {user}", "Accept" : "Aksepter", @@ -151,6 +153,9 @@ "remote" : "ekstern", "remote group" : "ekstern gruppe", "guest" : "gjest", + "Allow download" : "Tillat nedlasting", + "Added by {initiator}" : "Lagt til av {initiator}", + "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Intern lenke", "Link copied" : "Lenke kopiert", "Cannot copy, please copy the link manually" : "Kan ikke kopiere, kopier lenken manuelt", @@ -167,6 +172,8 @@ "Enter a note for the share recipient" : "Skriv inn en beskjed til mottaker av deling", "Add another link" : "Legg til en lenke til", "Create a new share link" : "Opprett ny delingslenke", + "{shareWith} by {initiator}" : "{shareWith} av {initiator}", + "Shared via link by {initiator}" : "Delt via lenke av {initiator}", "Share link ({label})" : "Del lenke ({label})", "Share link" : "Share link", "No recommendations. Start typing." : "Ingen forslag. Start skriving.", @@ -181,6 +188,7 @@ "No other users with access found" : "Ingen andre brukere med tilgang funnet", "Toggle list of others with access to this directory" : "Endre liste over andre brukere med tilgang til denne mappen", "Toggle list of others with access to this file" : "Endre liste over andre brukere med tilgang til denne filen", + "Expires {relativetime}" : "Utløper {relativetime}", "this share just expired." : "denne delingen utløp akkurat.", "Shared with you by {owner}" : "Delt med deg av {owner}", "Link to a file" : "Lenke til en fil", @@ -201,6 +209,8 @@ "sharing is disabled" : "deling er avskrudd", "For more info, please ask the person who sent this link." : "For mer informasjon, spør personen som sendte lenken.", "Share note" : "Delingsnotat", + "Show list view" : "Vis listevisning", + "Show grid view" : "Vis rutenett-visning", "Upload files to %s" : "Last opp filer til %s", "Note" : "Melding", "Select or drop files" : "Velg eller slipp filer", diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js index aa5c624ff2e..7d4652fe281 100644 --- a/apps/files_sharing/l10n/nl.js +++ b/apps/files_sharing/l10n/nl.js @@ -121,6 +121,7 @@ OC.L10N.register( "Could not lock node" : "Kon de node niet blokkeren", "Could not lock path" : "Kan pad niet blokkeren", "Wrong or no update parameter given" : "Verkeerde of geen update parameter opgegeven", + "Cannot increase permissions" : "Kan de rechten niet verruimen", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Het wachtwoord verzenden via Nextcloud Talk\" voor het delen van een bestand of map is mislukt omdat Nextcloud Talk niet is ingeschakeld.", "shared by %s" : "Gedeeld door %s", "Download all files" : "Download alle bestanden", diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json index e4fa7e15b60..d642537097d 100644 --- a/apps/files_sharing/l10n/nl.json +++ b/apps/files_sharing/l10n/nl.json @@ -119,6 +119,7 @@ "Could not lock node" : "Kon de node niet blokkeren", "Could not lock path" : "Kan pad niet blokkeren", "Wrong or no update parameter given" : "Verkeerde of geen update parameter opgegeven", + "Cannot increase permissions" : "Kan de rechten niet verruimen", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Het wachtwoord verzenden via Nextcloud Talk\" voor het delen van een bestand of map is mislukt omdat Nextcloud Talk niet is ingeschakeld.", "shared by %s" : "Gedeeld door %s", "Download all files" : "Download alle bestanden", diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js index 43ce4c31060..6745501353b 100644 --- a/apps/files_sharing/l10n/pl.js +++ b/apps/files_sharing/l10n/pl.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Nie można zablokować powiązania", "Could not lock path" : "Nie można zablokować ścieżki", "Wrong or no update parameter given" : "Brakujący lub błędny parametr aktualizacji", + "Cannot increase permissions" : "Nie można zwiększyć uprawnień", "Share must at least have READ or CREATE permissions" : "Udostępnienie musi mieć co najmniej uprawnienia do ODCZYTU lub TWORZENIA", "Share must have READ permission if UPDATE or DELETE permission is set" : "Udostępnienie musi mieć uprawnienie do ODCZYTU, jeśli ustawiono uprawnienie do AKTUALIZACJI lub USUWANIA", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Wysyłanie hasła przez Nextcloud Talk\" w celu udostępnienia pliku lub katalogu nie powiodło się, ponieważ usługa Nextcloud Talk jest wyłączona.", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "Udostępnione grupie {user} przez {owner}", "Shared with the conversation {user} by {owner}" : "Udostępnione w rozmowie {user} przez {owner}", "Shared with {user} by {owner}" : "Udostępnione {user} przez {owner}", + "Allow download" : "Zezwól na pobieranie", "Added by {initiator}" : "Dodane przez {initiator}", "Via “{folder}”" : "Przez “{folder}”", "Internal link" : "Link wewnętrzny", + "Copy internal link to clipboard" : "Kopiuj link wewnętrzny do schowka", "Link copied" : "Link skopiowany", "Cannot copy, please copy the link manually" : "Nie można skopiować, spróbuj skopiować link ręcznie", "Copy to clipboard" : "Kopiuj do schowka", "Only works for users with access to this folder" : "Działa tylko dla użytkowników mającym dostęp do tego katalogu", "Only works for users with access to this file" : "Działa tylko dla użytkowników mającym dostęp do tego pliku", + "Copy public link to clipboard" : "Kopiuj link publiczny do schowka", "Please enter the following required information before creating the share" : "Wprowadź następujące wymagane informacje przed udzieleniem dostępu", "Password protection (enforced)" : "Ochrona hasłem (wymuszona)", "Password protection" : "Ochrona hasła", diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json index ba826ea2348..48d6489a1af 100644 --- a/apps/files_sharing/l10n/pl.json +++ b/apps/files_sharing/l10n/pl.json @@ -121,6 +121,7 @@ "Could not lock node" : "Nie można zablokować powiązania", "Could not lock path" : "Nie można zablokować ścieżki", "Wrong or no update parameter given" : "Brakujący lub błędny parametr aktualizacji", + "Cannot increase permissions" : "Nie można zwiększyć uprawnień", "Share must at least have READ or CREATE permissions" : "Udostępnienie musi mieć co najmniej uprawnienia do ODCZYTU lub TWORZENIA", "Share must have READ permission if UPDATE or DELETE permission is set" : "Udostępnienie musi mieć uprawnienie do ODCZYTU, jeśli ustawiono uprawnienie do AKTUALIZACJI lub USUWANIA", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Wysyłanie hasła przez Nextcloud Talk\" w celu udostępnienia pliku lub katalogu nie powiodło się, ponieważ usługa Nextcloud Talk jest wyłączona.", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "Udostępnione grupie {user} przez {owner}", "Shared with the conversation {user} by {owner}" : "Udostępnione w rozmowie {user} przez {owner}", "Shared with {user} by {owner}" : "Udostępnione {user} przez {owner}", + "Allow download" : "Zezwól na pobieranie", "Added by {initiator}" : "Dodane przez {initiator}", "Via “{folder}”" : "Przez “{folder}”", "Internal link" : "Link wewnętrzny", + "Copy internal link to clipboard" : "Kopiuj link wewnętrzny do schowka", "Link copied" : "Link skopiowany", "Cannot copy, please copy the link manually" : "Nie można skopiować, spróbuj skopiować link ręcznie", "Copy to clipboard" : "Kopiuj do schowka", "Only works for users with access to this folder" : "Działa tylko dla użytkowników mającym dostęp do tego katalogu", "Only works for users with access to this file" : "Działa tylko dla użytkowników mającym dostęp do tego pliku", + "Copy public link to clipboard" : "Kopiuj link publiczny do schowka", "Please enter the following required information before creating the share" : "Wprowadź następujące wymagane informacje przed udzieleniem dostępu", "Password protection (enforced)" : "Ochrona hasłem (wymuszona)", "Password protection" : "Ochrona hasła", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index 002ac8ecd84..af7c2ee2d66 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Não foi possível bloquear o nó", "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", + "Cannot increase permissions" : "Não foi possível aumentar as permissões", "Share must at least have READ or CREATE permissions" : "O compartilhamento deve ter pelo menos permissões de LER ou CRIAR", "Share must have READ permission if UPDATE or DELETE permission is set" : "O compartilhamento deve ter permissão de LEITURA se a permissão ATUALIZAÇÃO ou EXCLUSÃO estiver definida", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "O \"envio da senha pelo Bate Papo Nextcloud\" para compartilhar um arquivo ou pasta falhou porque o Bate Papo Nextcloud não está habilitado. ", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "Compartilhado com o grupo {group} por {owner}", "Shared with the conversation {user} by {owner}" : "Compartilhado com a conversa {conversation} por {owner}", "Shared with {user} by {owner}" : "Compartilhado com {user} por {owner}", + "Allow download" : "Permitir baixar", "Added by {initiator}" : "Adicionado por {initiator}", "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Link interno", + "Copy internal link to clipboard" : "Copie o link interno para a área de transferência", "Link copied" : "Link copiado", "Cannot copy, please copy the link manually" : "Não é possível copiar, copie o link manualmente", "Copy to clipboard" : "Copiar para a área de transferência", "Only works for users with access to this folder" : "Funciona apenas para usuários com acesso a esta pasta", "Only works for users with access to this file" : "Funciona apenas para usuários com acesso a este arquivo", + "Copy public link to clipboard" : "Copie o link público para a área de transferência", "Please enter the following required information before creating the share" : "Digite as seguintes informações necessárias antes de criar o compartilhamento", "Password protection (enforced)" : "Proteção por senha (imposta)", "Password protection" : "Proteger com senha", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index 1612c927f47..2b73e36cfc2 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -121,6 +121,7 @@ "Could not lock node" : "Não foi possível bloquear o nó", "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", + "Cannot increase permissions" : "Não foi possível aumentar as permissões", "Share must at least have READ or CREATE permissions" : "O compartilhamento deve ter pelo menos permissões de LER ou CRIAR", "Share must have READ permission if UPDATE or DELETE permission is set" : "O compartilhamento deve ter permissão de LEITURA se a permissão ATUALIZAÇÃO ou EXCLUSÃO estiver definida", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "O \"envio da senha pelo Bate Papo Nextcloud\" para compartilhar um arquivo ou pasta falhou porque o Bate Papo Nextcloud não está habilitado. ", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "Compartilhado com o grupo {group} por {owner}", "Shared with the conversation {user} by {owner}" : "Compartilhado com a conversa {conversation} por {owner}", "Shared with {user} by {owner}" : "Compartilhado com {user} por {owner}", + "Allow download" : "Permitir baixar", "Added by {initiator}" : "Adicionado por {initiator}", "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Link interno", + "Copy internal link to clipboard" : "Copie o link interno para a área de transferência", "Link copied" : "Link copiado", "Cannot copy, please copy the link manually" : "Não é possível copiar, copie o link manualmente", "Copy to clipboard" : "Copiar para a área de transferência", "Only works for users with access to this folder" : "Funciona apenas para usuários com acesso a esta pasta", "Only works for users with access to this file" : "Funciona apenas para usuários com acesso a este arquivo", + "Copy public link to clipboard" : "Copie o link público para a área de transferência", "Please enter the following required information before creating the share" : "Digite as seguintes informações necessárias antes de criar o compartilhamento", "Password protection (enforced)" : "Proteção por senha (imposta)", "Password protection" : "Proteger com senha", diff --git a/apps/files_sharing/l10n/pt_PT.js b/apps/files_sharing/l10n/pt_PT.js index 0e5087d688a..fa50f4f66c6 100644 --- a/apps/files_sharing/l10n/pt_PT.js +++ b/apps/files_sharing/l10n/pt_PT.js @@ -87,6 +87,7 @@ OC.L10N.register( "Not a directory" : "Não é uma diretoria", "Could not lock path" : "Não foi possível bloquear o caminho", "Wrong or no update parameter given" : "Parâmetro indicado errado ou desatualizado", + "Cannot increase permissions" : "Não é possível incrementar as permissões", "shared by %s" : "partilhado por %s", "Download all files" : "Transferir todos os ficheiros", "Direct link" : "Hiperligação direta", diff --git a/apps/files_sharing/l10n/pt_PT.json b/apps/files_sharing/l10n/pt_PT.json index c8029706cfc..dbb15af2c91 100644 --- a/apps/files_sharing/l10n/pt_PT.json +++ b/apps/files_sharing/l10n/pt_PT.json @@ -85,6 +85,7 @@ "Not a directory" : "Não é uma diretoria", "Could not lock path" : "Não foi possível bloquear o caminho", "Wrong or no update parameter given" : "Parâmetro indicado errado ou desatualizado", + "Cannot increase permissions" : "Não é possível incrementar as permissões", "shared by %s" : "partilhado por %s", "Download all files" : "Transferir todos os ficheiros", "Direct link" : "Hiperligação direta", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 8aaef1c30aa..128a761aad7 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Не удалось заблокировать узел", "Could not lock path" : "Не удалось заблокировать путь", "Wrong or no update parameter given" : "Параметр для изменения неправилен или не задан", + "Cannot increase permissions" : "Не удалось повысить права доступа", "Share must at least have READ or CREATE permissions" : "Общий ресурс должен, по крайней мере, иметь разрешения READ или CREATE", "Share must have READ permission if UPDATE or DELETE permission is set" : "Общий ресурс должен иметь разрешение READ, если установлено разрешение UPDATE или DELETE", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "Не удалось отправить пароль для доступа, так как приложение Nextcloud Talk отключено.", @@ -182,6 +183,7 @@ OC.L10N.register( "Copy to clipboard" : "Копировать в буфер обмена", "Only works for users with access to this folder" : "Только для пользователей с доступом к этой папке", "Only works for users with access to this file" : "Только для пользователей с доступом к этому файлу", + "Copy public link to clipboard" : "Скопировать общедоступную ссылку в буфер обмена", "Please enter the following required information before creating the share" : "Для создания общего ресурса требуется указать следующие данные", "Password protection (enforced)" : "Защита паролем (требуется системной)", "Password protection" : "Защита паролем", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 81ed3ee3c59..79147c01434 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -121,6 +121,7 @@ "Could not lock node" : "Не удалось заблокировать узел", "Could not lock path" : "Не удалось заблокировать путь", "Wrong or no update parameter given" : "Параметр для изменения неправилен или не задан", + "Cannot increase permissions" : "Не удалось повысить права доступа", "Share must at least have READ or CREATE permissions" : "Общий ресурс должен, по крайней мере, иметь разрешения READ или CREATE", "Share must have READ permission if UPDATE or DELETE permission is set" : "Общий ресурс должен иметь разрешение READ, если установлено разрешение UPDATE или DELETE", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "Не удалось отправить пароль для доступа, так как приложение Nextcloud Talk отключено.", @@ -180,6 +181,7 @@ "Copy to clipboard" : "Копировать в буфер обмена", "Only works for users with access to this folder" : "Только для пользователей с доступом к этой папке", "Only works for users with access to this file" : "Только для пользователей с доступом к этому файлу", + "Copy public link to clipboard" : "Скопировать общедоступную ссылку в буфер обмена", "Please enter the following required information before creating the share" : "Для создания общего ресурса требуется указать следующие данные", "Password protection (enforced)" : "Защита паролем (требуется системной)", "Password protection" : "Защита паролем", diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js index 2b305fef4e8..f9162f9d2d2 100644 --- a/apps/files_sharing/l10n/sk.js +++ b/apps/files_sharing/l10n/sk.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Uzol sa nedarí uzamknúť", "Could not lock path" : "Nie je možné uzamknúť cestu", "Wrong or no update parameter given" : "Zlý alebo žiadny zadaný parameter aktualizácie", + "Cannot increase permissions" : "Nie je možné navýšiť oprávnenia", "Share must at least have READ or CREATE permissions" : "Zdieľanie musí mať aspoň povolenia READ alebo CREATE", "Share must have READ permission if UPDATE or DELETE permission is set" : "Ak je nastavené oprávnenie UPDATE alebo DELETE, zdieľanie musí mať povolenie READ.", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Odoslanie hesla cez Nextcloud Talk\" pre zdieľanie súboru alebo priečinka zlyhalo, pretože Nextcloud Talk nie je zapnutý.", diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json index 6ed734e3592..066bda9d217 100644 --- a/apps/files_sharing/l10n/sk.json +++ b/apps/files_sharing/l10n/sk.json @@ -121,6 +121,7 @@ "Could not lock node" : "Uzol sa nedarí uzamknúť", "Could not lock path" : "Nie je možné uzamknúť cestu", "Wrong or no update parameter given" : "Zlý alebo žiadny zadaný parameter aktualizácie", + "Cannot increase permissions" : "Nie je možné navýšiť oprávnenia", "Share must at least have READ or CREATE permissions" : "Zdieľanie musí mať aspoň povolenia READ alebo CREATE", "Share must have READ permission if UPDATE or DELETE permission is set" : "Ak je nastavené oprávnenie UPDATE alebo DELETE, zdieľanie musí mať povolenie READ.", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Odoslanie hesla cez Nextcloud Talk\" pre zdieľanie súboru alebo priečinka zlyhalo, pretože Nextcloud Talk nie je zapnutý.", diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js index 678cf41dc42..27f1822b766 100644 --- a/apps/files_sharing/l10n/sl.js +++ b/apps/files_sharing/l10n/sl.js @@ -122,6 +122,7 @@ OC.L10N.register( "Could not lock node" : "Vozlišča ni mogoče zakleniti", "Could not lock path" : "Poti ni mogoče zakleniti", "Wrong or no update parameter given" : "Parameter posodobitve ni podan, ali pa je navedena napačna vrednost", + "Cannot increase permissions" : "Ni mogoče povišati dovoljenj", "shared by %s" : "souporaba: %s", "Download all files" : "Prejmi vse datoteke", "Direct link" : "Neposredna povezava", diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json index d898c00f769..459d43202ba 100644 --- a/apps/files_sharing/l10n/sl.json +++ b/apps/files_sharing/l10n/sl.json @@ -120,6 +120,7 @@ "Could not lock node" : "Vozlišča ni mogoče zakleniti", "Could not lock path" : "Poti ni mogoče zakleniti", "Wrong or no update parameter given" : "Parameter posodobitve ni podan, ali pa je navedena napačna vrednost", + "Cannot increase permissions" : "Ni mogoče povišati dovoljenj", "shared by %s" : "souporaba: %s", "Download all files" : "Prejmi vse datoteke", "Direct link" : "Neposredna povezava", diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js index 8029b32d6b2..06be520d836 100644 --- a/apps/files_sharing/l10n/sq.js +++ b/apps/files_sharing/l10n/sq.js @@ -85,6 +85,7 @@ OC.L10N.register( "Not a directory" : "S’është drejtori", "Could not lock path" : "S’u kyç dot shtegu", "Wrong or no update parameter given" : "Ose u dha parametër i gabuar përditësimesh, pse s’u dha fare ", + "Cannot increase permissions" : "S’mund të fuqizohen lejet", "shared by %s" : "ndarë nga %s", "Direct link" : "Lidhje e drejtpërdrejtë", "Share API is disabled" : "API i ndarjeve është çaktivizuar", diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json index aea19675972..3f47fe35c4f 100644 --- a/apps/files_sharing/l10n/sq.json +++ b/apps/files_sharing/l10n/sq.json @@ -83,6 +83,7 @@ "Not a directory" : "S’është drejtori", "Could not lock path" : "S’u kyç dot shtegu", "Wrong or no update parameter given" : "Ose u dha parametër i gabuar përditësimesh, pse s’u dha fare ", + "Cannot increase permissions" : "S’mund të fuqizohen lejet", "shared by %s" : "ndarë nga %s", "Direct link" : "Lidhje e drejtpërdrejtë", "Share API is disabled" : "API i ndarjeve është çaktivizuar", diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js index a79b0280e89..9f42ef3ad11 100644 --- a/apps/files_sharing/l10n/sr.js +++ b/apps/files_sharing/l10n/sr.js @@ -98,9 +98,12 @@ OC.L10N.register( "Files" : "Фајлови", "A file or folder has been <strong>shared</strong>" : "Фајл или фасцикла је <strong>дељен</strong>", "Shared link" : "Подељена веза", + "Wrong share ID, share does not exist" : "Pogrešan ID deljenja, deljenje ne postoji", "Could not delete share" : "Не могу да обришем дељење", "Please specify a file or folder path" : "Молимо одаберите путању до фајла или фасцикле", + "Wrong path, file/folder does not exist" : "Pogrešna putanja, datoteka/fascikla ne postoji", "Could not create share" : "Не могу да направим дељење", + "Invalid permissions" : "Nevažeće dozvole", "Please specify a valid user" : "Одаберите исправног корисника", "Group sharing is disabled by the administrator" : "Администратор је забранио дељење са групом", "Please specify a valid group" : "Одаберите исправну групу", @@ -110,6 +113,8 @@ OC.L10N.register( "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење %s слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен", "Invalid date, date format must be YYYY-MM-DD" : "Неисправан датим, формат датума мора бити ГГГГ-ММ-ДД", "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Дељење %1$s није успело зато што позадина не дозвољава дељење које је типа %2$s", + "Please specify a valid federated user ID" : "Navedite važeći federalni korisnički ID", + "Please specify a valid federated group ID" : "Navedite važeći ID federalne grupe", "You cannot share to a Circle if the app is not enabled" : "Не можете делити са Круговима ако та апликација није укључена", "Please specify a valid circle" : "Одаберите исправан круг", "Sharing %s failed because the back end does not support room shares" : "Није успело дељење %s зато што позадински мотор дељења не подржава дељења у соби", @@ -118,9 +123,14 @@ OC.L10N.register( "Could not lock node" : "Не могу да закључам чвор", "Could not lock path" : "Не могу да закључам путању", "Wrong or no update parameter given" : "Погрешан или ненаведен параметер", + "Cannot increase permissions" : "Не могу да повећам привилегије", + "Share must at least have READ or CREATE permissions" : "Deljenje mora da ima bar dozvole ČITANJE ili KREIRANJE", + "Share must have READ permission if UPDATE or DELETE permission is set" : "Deljenje mora da ima dozvolu za ČITANJE ako je podešena dozvola UPDATE ili DELETE", + "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "„Slanje lozinke putem Nextcloud Talk-a“ za deljenje datoteke ili fascikle nije uspelo jer Nextcloud Talk nije omogućen.", "shared by %s" : "поделио %s", "Download all files" : "Преузми све фајлове", "Direct link" : "Директна веза", + "Add to your %s" : "Dodajte u svoj %s", "Share API is disabled" : "API за дељене је искључен", "File sharing" : "Дељења фајлова", "Share will expire tomorrow" : "Дељење истиче сутра", @@ -133,16 +143,22 @@ OC.L10N.register( "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Ова апликација омогућава корисницима да деле фајлове унутар Некстклауда. Када се укључи, администратор може да одабере које групе могу да деле фајлове. Такви корисници затим могу да деле фасцикле и фајлове са осталим корисницима и групама унутар Некстклауда. Додатно, ако администратор укључи и могућност за дељење везе, може се користити и спољна веза за дељење са корисницима ван Некстклауда. Администратори такође могу да захтевају лозинке, датум истека и да омогуће дељење између сервера преко веза дељења, као и дељење са мобилних уређаја.\nИскључивањем ове могућности искључује дељене фасцикле и фајлове на серверу за све дељенике, као и на синхронизованим клијентима и мобилним апликацијама. Више информација можете наћи у Некстклауд документацији.", "Sharing" : "Дељење", "Accept user and group shares by default" : "Подразумевано прихвати дељења корисника и група", + "Error while toggling options" : "Greška pri prebacivanju opcija", + "Set default folder for accepted shares" : "Podesite podrazumevani folder za prihvaćena deljenja", "Reset" : "Ресетуј", + "Reset folder to system default" : "Vratite fasciklu na podrazumevane vrednosti sistema", + "Choose a default folder for accepted shares" : "Izaberite podrazumevani folder za prihvaćena deljenja", "Invalid path selected" : "Одабрана неисправна путања", "Unknown error" : "Непозната грешка", "Allow editing" : "Дозволи уређивање", "Read only" : "Само за читање", "Allow upload and editing" : "Дозволи отпремање и уређивање", "File drop (upload only)" : "Превлачење фајлова (само за отпремање)", + "Custom permissions" : "Prilagođene dozvole", "Read" : "Читање", "Upload" : "Отпреми", "Edit" : "Измени", + "Bundled permissions" : "Skupljene dozvole", "Allow creating" : "Дозволи креирање", "Allow deleting" : "Дозволи брисање", "Allow resharing" : "Дозволи дељење даље", @@ -172,21 +188,27 @@ OC.L10N.register( "Password protection" : "Заштита лозинком", "Enter a password" : "Унесите лозинку", "Expiration date (enforced)" : "Захтевано постављање датума истека", + "Create share" : "Kreirajte deljenje", "Cancel" : "Одустани", "Share label" : "Подели ознаки", "Hide download" : "Сакриј преузимање", "Password protect" : "Заштићено лозинком", + "Password expires {passwordExpirationTime}" : "Lozinka ističe {passvordEkpirationTime}", + "Password expired" : "Lozinka istekla", "Video verification" : "Видео потврда", "Enter a note for the share recipient" : "Унесите белешку примаоцу дељења", "Add another link" : "Додај још једну везу", "Create a new share link" : "Направи нову везу дељења", + "{shareWith} by {initiator}" : "{shareWith} od {initiator}", "Shared via link by {initiator}" : "{initiator} поделио преко везе", + "Mail share ({label})" : "Deljenje pošte ({label})", "Share link ({label})" : "Подели везу ({label})", "Share link" : "Веза дељења", "Error, please enter proper password and/or expiration date" : "Грешка, унесите исправну лозинку и/или датум истицања", "No recommendations. Start typing." : "Нема препорука. Започните куцање.", "Resharing is not allowed" : "Дељење даље није дозвољено", "Name or email …" : "Име или адреса е-поште…", + "Name, email, or Federated Cloud ID …" : "Ime, imejl ili ID u federalnom oblaku…", "Searching …" : "Тражим…", "No elements found." : "Нема нађених елемената.", "Search globally" : "Претражите глобално", @@ -201,7 +223,9 @@ OC.L10N.register( "this share just expired." : "ово дељење је управо истекло.", "Shared with you by {owner}" : "{owner} је поделио са Вама", "Link to a file" : "Веза ка фајлу", + "Error creating the share: {errorMessage}" : "Greška pri pravljenju deljenja: {errorMessage}", "Error creating the share" : "Грешка при прављењу дељења", + "Error updating the share: {errorMessage}" : "Greška pri ažuriranju deljenja: {errorMessage}", "Error updating the share" : "Грешка при ажурирању дељења", "Shared" : "Подељено", "Share" : "Подели", @@ -214,12 +238,15 @@ OC.L10N.register( "Name" : "Назив", "Share time" : "Време дељења", "Expiration date" : "Датум истека", + "Sorry, this link does not seem to work anymore." : "Žao nam je, izgleda da ova veza više ne radi.", "Reasons might be:" : "Разлози могу бити:", "the item was removed" : "ставка је уклоњена", "the link expired" : "веза је истекла", "sharing is disabled" : "дељење је искључено", "For more info, please ask the person who sent this link." : "За више информација, питајте особу која вам је послала везу.", "Share note" : "Белешка дељења", + "Show list view" : "Prikaži prikaz liste", + "Show grid view" : "Prikaži prikaz mreže", "Upload files to %s" : "Отпремите фајлове на%s", "Note" : "Белешка", "Select or drop files" : "Одаберите или превуците фајлове", @@ -229,6 +256,7 @@ OC.L10N.register( "Add to your Nextcloud" : "Додајте у свој облак", "Wrong share ID, share doesn't exist" : "Погрешна идентификација дељења, дељење не постоји", "Wrong path, file/folder doesn't exist" : "Погрешна путања, фајл/фасцикла не постоји", + "Cannot change permissions for public share links" : "Nije moguće promeniti dozvole za javne veze za deljenje", "Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен", "Sorry, this link doesn’t seem to work anymore." : "Нажалост, изгледа да веза више не ради.", "Toggle grid view" : "Укључи/искључи приказ мреже" diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json index ce569261c94..97ab79ec2a9 100644 --- a/apps/files_sharing/l10n/sr.json +++ b/apps/files_sharing/l10n/sr.json @@ -96,9 +96,12 @@ "Files" : "Фајлови", "A file or folder has been <strong>shared</strong>" : "Фајл или фасцикла је <strong>дељен</strong>", "Shared link" : "Подељена веза", + "Wrong share ID, share does not exist" : "Pogrešan ID deljenja, deljenje ne postoji", "Could not delete share" : "Не могу да обришем дељење", "Please specify a file or folder path" : "Молимо одаберите путању до фајла или фасцикле", + "Wrong path, file/folder does not exist" : "Pogrešna putanja, datoteka/fascikla ne postoji", "Could not create share" : "Не могу да направим дељење", + "Invalid permissions" : "Nevažeće dozvole", "Please specify a valid user" : "Одаберите исправног корисника", "Group sharing is disabled by the administrator" : "Администратор је забранио дељење са групом", "Please specify a valid group" : "Одаберите исправну групу", @@ -108,6 +111,8 @@ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење %s слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен", "Invalid date, date format must be YYYY-MM-DD" : "Неисправан датим, формат датума мора бити ГГГГ-ММ-ДД", "Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Дељење %1$s није успело зато што позадина не дозвољава дељење које је типа %2$s", + "Please specify a valid federated user ID" : "Navedite važeći federalni korisnički ID", + "Please specify a valid federated group ID" : "Navedite važeći ID federalne grupe", "You cannot share to a Circle if the app is not enabled" : "Не можете делити са Круговима ако та апликација није укључена", "Please specify a valid circle" : "Одаберите исправан круг", "Sharing %s failed because the back end does not support room shares" : "Није успело дељење %s зато што позадински мотор дељења не подржава дељења у соби", @@ -116,9 +121,14 @@ "Could not lock node" : "Не могу да закључам чвор", "Could not lock path" : "Не могу да закључам путању", "Wrong or no update parameter given" : "Погрешан или ненаведен параметер", + "Cannot increase permissions" : "Не могу да повећам привилегије", + "Share must at least have READ or CREATE permissions" : "Deljenje mora da ima bar dozvole ČITANJE ili KREIRANJE", + "Share must have READ permission if UPDATE or DELETE permission is set" : "Deljenje mora da ima dozvolu za ČITANJE ako je podešena dozvola UPDATE ili DELETE", + "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "„Slanje lozinke putem Nextcloud Talk-a“ za deljenje datoteke ili fascikle nije uspelo jer Nextcloud Talk nije omogućen.", "shared by %s" : "поделио %s", "Download all files" : "Преузми све фајлове", "Direct link" : "Директна веза", + "Add to your %s" : "Dodajte u svoj %s", "Share API is disabled" : "API за дељене је искључен", "File sharing" : "Дељења фајлова", "Share will expire tomorrow" : "Дељење истиче сутра", @@ -131,16 +141,22 @@ "This application enables users to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable users can then share files and folders with other users and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other users outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Ова апликација омогућава корисницима да деле фајлове унутар Некстклауда. Када се укључи, администратор може да одабере које групе могу да деле фајлове. Такви корисници затим могу да деле фасцикле и фајлове са осталим корисницима и групама унутар Некстклауда. Додатно, ако администратор укључи и могућност за дељење везе, може се користити и спољна веза за дељење са корисницима ван Некстклауда. Администратори такође могу да захтевају лозинке, датум истека и да омогуће дељење између сервера преко веза дељења, као и дељење са мобилних уређаја.\nИскључивањем ове могућности искључује дељене фасцикле и фајлове на серверу за све дељенике, као и на синхронизованим клијентима и мобилним апликацијама. Више информација можете наћи у Некстклауд документацији.", "Sharing" : "Дељење", "Accept user and group shares by default" : "Подразумевано прихвати дељења корисника и група", + "Error while toggling options" : "Greška pri prebacivanju opcija", + "Set default folder for accepted shares" : "Podesite podrazumevani folder za prihvaćena deljenja", "Reset" : "Ресетуј", + "Reset folder to system default" : "Vratite fasciklu na podrazumevane vrednosti sistema", + "Choose a default folder for accepted shares" : "Izaberite podrazumevani folder za prihvaćena deljenja", "Invalid path selected" : "Одабрана неисправна путања", "Unknown error" : "Непозната грешка", "Allow editing" : "Дозволи уређивање", "Read only" : "Само за читање", "Allow upload and editing" : "Дозволи отпремање и уређивање", "File drop (upload only)" : "Превлачење фајлова (само за отпремање)", + "Custom permissions" : "Prilagođene dozvole", "Read" : "Читање", "Upload" : "Отпреми", "Edit" : "Измени", + "Bundled permissions" : "Skupljene dozvole", "Allow creating" : "Дозволи креирање", "Allow deleting" : "Дозволи брисање", "Allow resharing" : "Дозволи дељење даље", @@ -170,21 +186,27 @@ "Password protection" : "Заштита лозинком", "Enter a password" : "Унесите лозинку", "Expiration date (enforced)" : "Захтевано постављање датума истека", + "Create share" : "Kreirajte deljenje", "Cancel" : "Одустани", "Share label" : "Подели ознаки", "Hide download" : "Сакриј преузимање", "Password protect" : "Заштићено лозинком", + "Password expires {passwordExpirationTime}" : "Lozinka ističe {passvordEkpirationTime}", + "Password expired" : "Lozinka istekla", "Video verification" : "Видео потврда", "Enter a note for the share recipient" : "Унесите белешку примаоцу дељења", "Add another link" : "Додај још једну везу", "Create a new share link" : "Направи нову везу дељења", + "{shareWith} by {initiator}" : "{shareWith} od {initiator}", "Shared via link by {initiator}" : "{initiator} поделио преко везе", + "Mail share ({label})" : "Deljenje pošte ({label})", "Share link ({label})" : "Подели везу ({label})", "Share link" : "Веза дељења", "Error, please enter proper password and/or expiration date" : "Грешка, унесите исправну лозинку и/или датум истицања", "No recommendations. Start typing." : "Нема препорука. Започните куцање.", "Resharing is not allowed" : "Дељење даље није дозвољено", "Name or email …" : "Име или адреса е-поште…", + "Name, email, or Federated Cloud ID …" : "Ime, imejl ili ID u federalnom oblaku…", "Searching …" : "Тражим…", "No elements found." : "Нема нађених елемената.", "Search globally" : "Претражите глобално", @@ -199,7 +221,9 @@ "this share just expired." : "ово дељење је управо истекло.", "Shared with you by {owner}" : "{owner} је поделио са Вама", "Link to a file" : "Веза ка фајлу", + "Error creating the share: {errorMessage}" : "Greška pri pravljenju deljenja: {errorMessage}", "Error creating the share" : "Грешка при прављењу дељења", + "Error updating the share: {errorMessage}" : "Greška pri ažuriranju deljenja: {errorMessage}", "Error updating the share" : "Грешка при ажурирању дељења", "Shared" : "Подељено", "Share" : "Подели", @@ -212,12 +236,15 @@ "Name" : "Назив", "Share time" : "Време дељења", "Expiration date" : "Датум истека", + "Sorry, this link does not seem to work anymore." : "Žao nam je, izgleda da ova veza više ne radi.", "Reasons might be:" : "Разлози могу бити:", "the item was removed" : "ставка је уклоњена", "the link expired" : "веза је истекла", "sharing is disabled" : "дељење је искључено", "For more info, please ask the person who sent this link." : "За више информација, питајте особу која вам је послала везу.", "Share note" : "Белешка дељења", + "Show list view" : "Prikaži prikaz liste", + "Show grid view" : "Prikaži prikaz mreže", "Upload files to %s" : "Отпремите фајлове на%s", "Note" : "Белешка", "Select or drop files" : "Одаберите или превуците фајлове", @@ -227,6 +254,7 @@ "Add to your Nextcloud" : "Додајте у свој облак", "Wrong share ID, share doesn't exist" : "Погрешна идентификација дељења, дељење не постоји", "Wrong path, file/folder doesn't exist" : "Погрешна путања, фајл/фасцикла не постоји", + "Cannot change permissions for public share links" : "Nije moguće promeniti dozvole za javne veze za deljenje", "Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен", "Sorry, this link doesn’t seem to work anymore." : "Нажалост, изгледа да веза више не ради.", "Toggle grid view" : "Укључи/искључи приказ мреже" diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js index 3866644bb28..09d438bf70b 100644 --- a/apps/files_sharing/l10n/sv.js +++ b/apps/files_sharing/l10n/sv.js @@ -121,6 +121,7 @@ OC.L10N.register( "Could not lock node" : "Kunde inte låsa nod", "Could not lock path" : "Kunde inte låsa sökvägen", "Wrong or no update parameter given" : "Fel eller ingen uppdateringsparameter angiven", + "Cannot increase permissions" : "Kan inte utöka behörigheter", "Share must at least have READ or CREATE permissions" : "Delningen måste åtminstone ha LÄS- eller SKAPA-behörighet", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Skicka lösenord via Nextcloud Talk\" för att dela en fil eller mapp misslyckades eftersom Nextcloud Talk inte är aktiverat.", "shared by %s" : "delad av %s", diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json index f99d0e40983..cb1ca4056ee 100644 --- a/apps/files_sharing/l10n/sv.json +++ b/apps/files_sharing/l10n/sv.json @@ -119,6 +119,7 @@ "Could not lock node" : "Kunde inte låsa nod", "Could not lock path" : "Kunde inte låsa sökvägen", "Wrong or no update parameter given" : "Fel eller ingen uppdateringsparameter angiven", + "Cannot increase permissions" : "Kan inte utöka behörigheter", "Share must at least have READ or CREATE permissions" : "Delningen måste åtminstone ha LÄS- eller SKAPA-behörighet", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "\"Skicka lösenord via Nextcloud Talk\" för att dela en fil eller mapp misslyckades eftersom Nextcloud Talk inte är aktiverat.", "shared by %s" : "delad av %s", diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index 7af72233742..04de2198bbc 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -49,24 +49,24 @@ OC.L10N.register( "Removed share for group {group}" : "{group} grubunun paylaşımı kaldırıldı", "{actor} shared with group {group}" : "{actor} {group} grubuyla paylaştı", "{actor} removed share for group {group}" : "{actor} {group} grubunun paylaşımını kaldırdı", - "Share for group {group} expired" : "{group} grubuyla paylaşım süresi geçmiş", + "Share for group {group} expired" : "{group} grubuyla paylaşımın geçerlilik süresi dolmuş", "You shared {file} with group {group}" : "{file} dosyasını {group} grubuyla paylaştınız", "You removed group {group} from {file}" : "{file} dosyasının {group} grubuyla paylaşımını kaldırdınız", "{actor} shared {file} with group {group}" : "{actor} {file} dosyasını {group} grubuyla paylaştı", "{actor} removed group {group} from {file}" : "{actor} {file} dosyasının {group} grubuyla paylaşımını kaldırdı", - "Share for file {file} with group {group} expired" : "{file} dosyasının {group} grubuyla paylaşım süresi geçmiş", + "Share for file {file} with group {group} expired" : "{file} dosyasının {group} grubuyla paylaşımının geçerlilik süresi dolmuş", "Shared as public link" : "Herkese açık bağlantı olarak paylaşıldı", "Removed public link" : "Herkese açık bağlantı kaldırıldı", - "Public link expired" : "Herkese açık bağlantının süresi dolmuş", + "Public link expired" : "Herkese açık bağlantının geçerlilik süresi dolmuş", "{actor} shared as public link" : "{actor} herkese açık bağlantı olarak paylaştı", "{actor} removed public link" : "{actor} herkese açık paylaşım bağlantısını kaldırdı", - "Public link of {actor} expired" : "{actor} tarafından paylaşılan herkese açık bağlantının süresi dolmuş", + "Public link of {actor} expired" : "{actor} tarafından paylaşılan herkese açık bağlantının geçerlilik süresi dolmuş", "You shared {file} as public link" : "{file} dosyasını herkese açık bağlantı olarak paylaştınız", "You removed public link for {file}" : "{file} dosyasının herkese açık paylaşım bağlantısını kaldırdınız", - "Public link expired for {file}" : "{file} için herkese açık bağlantının süresi dolmuş", + "Public link expired for {file}" : "{file} için herkese açık bağlantının geçerlilik süresi dolmuş", "{actor} shared {file} as public link" : "{actor} {file} dosyasını herkese açık bağlantı olarak paylaştı", "{actor} removed public link for {file}" : "{actor} {file} dosyasının herkese açık paylaşım bağlantısını kaldırdı", - "Public link of {actor} for {file} expired" : "{actor} tarafından paylaşılan {file} dosyası bağlantısının süresi dolmuş", + "Public link of {actor} for {file} expired" : "{actor} tarafından paylaşılan {file} dosyası bağlantısının geçerlilik süresi dolmuş", "{user} accepted the remote share" : "{user} uzak paylaşımı kabul etti", "{user} declined the remote share" : "{user} uzak paylaşımı reddetti", "You received a new remote share {file} from {user}" : "{user} kullanıcısından yeni bir uzak {file} dosya paylaşımı aldınız", @@ -81,8 +81,8 @@ OC.L10N.register( "{actor} removed share for {user}" : "{actor} {user} kullanıcısının paylaşımını kaldırdı", "Shared by {actor}" : "{actor} tarafından paylaşıldı", "{actor} removed share" : "{actor} paylaşımı kaldırdı", - "Share for {user} expired" : "{user} kullanıcısı ile paylaşım süresi geçmiş", - "Share expired" : "Paylaşım süresi geçmiş", + "Share for {user} expired" : "{user} kullanıcısı ile paylaşımın geçerlilik süresi dolmuş", + "Share expired" : "Paylaşımın geçerlilik süresi dolmuş", "You shared {file} with {user}" : "{file} dosyasını {user} kullanıcısıyla paylaştınız", "You removed {user} from {file}" : "{file} dosyasının {user} kullanıcısıyla paylaşımını kaldırdınız", "You removed yourself from {file}" : "Kendinizi {file} dosyasından kaldırdınız", @@ -91,8 +91,8 @@ OC.L10N.register( "{actor} removed {user} from {file}" : "{actor} {file} dosyasının {user} kullanıcısıyla paylaşımını kaldırdı", "{actor} shared {file} with you" : "{actor} {file} dosyasını sizinle paylaştı", "{actor} removed you from the share named {file}" : "{actor} {file} dosyasının sizinle paylaşımını kaldırdı", - "Share for file {file} with {user} expired" : "{file} dosyasının {user} kullanıcısıyla paylaşım süresi geçmiş", - "Share for file {file} expired" : "{file} dosyasının paylaşım süresi geçmiş", + "Share for file {file} with {user} expired" : "{file} dosyasının {user} kullanıcısıyla paylaşımının geçerlilik süresi dolmuş", + "Share for file {file} expired" : "{file} dosyasının paylaşımının geçerlilik süresi dolmuş", "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "E-posta ya da herkese açık bağlantı ile paylaşılan bir dosya ya da klasör <strong>indirildi</strong>", "A file or folder was shared from <strong>another server</strong>" : "<strong>Başka bir sunucudan</strong> bir dosya ya da klasör paylaşıldı", "Files" : "Dosyalar", @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "Düğüm kilitlenemedi", "Could not lock path" : "Yol kilitlenemedi", "Wrong or no update parameter given" : "Parametre yanlış ya da herhangi bir parametre belirtilmemiş", + "Cannot increase permissions" : "Erişim izinleri yükseltilemedi", "Share must at least have READ or CREATE permissions" : "Paylaşım için en az OKUMA ve OLUŞTURMA izinleri olmalıdır", "Share must have READ permission if UPDATE or DELETE permission is set" : "UPDATE ya da DELETE izinleri verilmiş ise paylaşıma READ izni verilmelidir", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "Nextcloud Talk etkinleştirilmemiş olduğundan, paylaşım parolası Nextcloud Talk ile gönderilemedi.", @@ -132,9 +133,9 @@ OC.L10N.register( "Add to your %s" : "%s uygulamanıza ekleyin", "Share API is disabled" : "Paylaşım API arayüzü devre dışı", "File sharing" : "Dosya paylaşımı", - "Share will expire tomorrow" : "Paylaşımın süresi yarın dolacak", - "One or more of your shares will expire tomorrow" : "Bir ya da daha çok paylaşımınızın süresi yarın dolacak", - "Your share of {node} will expire tomorrow" : "{node} paylaşımınızın süresi yarın dolacak", + "Share will expire tomorrow" : "Paylaşımın geçerlilik süresi yarın dolacak", + "One or more of your shares will expire tomorrow" : "Bir ya da daha çok paylaşımınızın geçerlilik süresi yarın dolacak", + "Your share of {node} will expire tomorrow" : "{node} paylaşımınızın geçerlilik süresi yarın dolacak", "You received {share} as a share by {user}" : "{user} kullanıcısından {share} paylaşımını aldınız", "You received {share} to group {group} as a share by {user}" : "{user} kullanıcısından {group} grubu için {share} paylaşımını aldınız", "Accept" : "Kabul et", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "{owner} tarafından grup {user} ile paylaşılmış", "Shared with the conversation {user} by {owner}" : "{owner} tarafından görüşme {user} ile paylaştırılmış", "Shared with {user} by {owner}" : "{owner} tarafından {user} ile paylaşılmış", + "Allow download" : "İndirilebilsin", "Added by {initiator}" : "{initiator} tarafından eklendi", "Via “{folder}”" : "“{folder}” ile", "Internal link" : "İç bağlantı", + "Copy internal link to clipboard" : "İç bağlantıyı panoya kopyala", "Link copied" : "Bağlantı kopyalandı", "Cannot copy, please copy the link manually" : "Kopyalanamadı. Lütfen bağlantıyı el ile kopyalayın", "Copy to clipboard" : "Panoya kopyala", "Only works for users with access to this folder" : "Yalnızca bu klasöre erişebilen kullanıcılar için geçerlidir", "Only works for users with access to this file" : "Yalnızca bu dosyaya erişebilen kullanıcılar için geçerlidir", + "Copy public link to clipboard" : "Herkese açık bağlantıyı panoya kopyala", "Please enter the following required information before creating the share" : "Lütfen paylaşımı oluşturmadan önce aşağıdaki zorunlu bilgileri yazın", "Password protection (enforced)" : "Parola koruması (dayatılmış)", "Password protection" : "Parola koruması", @@ -192,7 +196,7 @@ OC.L10N.register( "Share label" : "Etiketi paylaş", "Hide download" : "İndirme gizlensin", "Password protect" : "Parola koruması", - "Password expires {passwordExpirationTime}" : "Parola geçerlilik sonu {passwordExpirationTime}", + "Password expires {passwordExpirationTime}" : "Parolanın geçerlilik süresi sonu {passwordExpirationTime}", "Password expired" : "Parolanın geçerlilik süresi dolmuş", "Video verification" : "Görüntü doğrulaması", "Enter a note for the share recipient" : "Paylaşım alıcısı için bir not yazın", @@ -218,8 +222,8 @@ OC.L10N.register( "Toggle list of others with access to this file" : "Bu dosyaya erişim izni olan diğer kişiler listesini aç/kapat", "Unable to fetch inherited shares" : "Devir alınan paylaşımlar alınamadı", "Unable to load the shares list" : "Paylaşımlar listesi yüklenemedi", - "Expires {relativetime}" : "Kullanma süresi sonu {relativetime}", - "this share just expired." : "bu paylaşımın kullanma süresi doldu.", + "Expires {relativetime}" : "Geçerlilik süresi sonu {relativetime}", + "this share just expired." : "bu paylaşımın geçerlilik süresi dolmuş.", "Shared with you by {owner}" : "{owner} tarafından sizinle paylaşılmış", "Link to a file" : "Bir dosya ile bağla", "Error creating the share: {errorMessage}" : "Paylaşım oluşturulurken sorun çıktı: {errorMessage}", @@ -240,7 +244,7 @@ OC.L10N.register( "Sorry, this link does not seem to work anymore." : "Ne yazık ki, bu bağlantı artık çalışmıyor gibi görünüyor.", "Reasons might be:" : "Nedenleri şunlar olabilir:", "the item was removed" : "öge silinmiş", - "the link expired" : "bağlantı süresi dolmuş", + "the link expired" : "bağlantının geçerlilik süresi dolmuş", "sharing is disabled" : "paylaşım devre dışı bırakılmış", "For more info, please ask the person who sent this link." : "Ayrıntılı bilgi almak için bu bağlantıyı aldığınız kişi ile görüşün.", "Share note" : "Notu paylaş", diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 7c014a5f88c..2bd2ae7b4f3 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -47,24 +47,24 @@ "Removed share for group {group}" : "{group} grubunun paylaşımı kaldırıldı", "{actor} shared with group {group}" : "{actor} {group} grubuyla paylaştı", "{actor} removed share for group {group}" : "{actor} {group} grubunun paylaşımını kaldırdı", - "Share for group {group} expired" : "{group} grubuyla paylaşım süresi geçmiş", + "Share for group {group} expired" : "{group} grubuyla paylaşımın geçerlilik süresi dolmuş", "You shared {file} with group {group}" : "{file} dosyasını {group} grubuyla paylaştınız", "You removed group {group} from {file}" : "{file} dosyasının {group} grubuyla paylaşımını kaldırdınız", "{actor} shared {file} with group {group}" : "{actor} {file} dosyasını {group} grubuyla paylaştı", "{actor} removed group {group} from {file}" : "{actor} {file} dosyasının {group} grubuyla paylaşımını kaldırdı", - "Share for file {file} with group {group} expired" : "{file} dosyasının {group} grubuyla paylaşım süresi geçmiş", + "Share for file {file} with group {group} expired" : "{file} dosyasının {group} grubuyla paylaşımının geçerlilik süresi dolmuş", "Shared as public link" : "Herkese açık bağlantı olarak paylaşıldı", "Removed public link" : "Herkese açık bağlantı kaldırıldı", - "Public link expired" : "Herkese açık bağlantının süresi dolmuş", + "Public link expired" : "Herkese açık bağlantının geçerlilik süresi dolmuş", "{actor} shared as public link" : "{actor} herkese açık bağlantı olarak paylaştı", "{actor} removed public link" : "{actor} herkese açık paylaşım bağlantısını kaldırdı", - "Public link of {actor} expired" : "{actor} tarafından paylaşılan herkese açık bağlantının süresi dolmuş", + "Public link of {actor} expired" : "{actor} tarafından paylaşılan herkese açık bağlantının geçerlilik süresi dolmuş", "You shared {file} as public link" : "{file} dosyasını herkese açık bağlantı olarak paylaştınız", "You removed public link for {file}" : "{file} dosyasının herkese açık paylaşım bağlantısını kaldırdınız", - "Public link expired for {file}" : "{file} için herkese açık bağlantının süresi dolmuş", + "Public link expired for {file}" : "{file} için herkese açık bağlantının geçerlilik süresi dolmuş", "{actor} shared {file} as public link" : "{actor} {file} dosyasını herkese açık bağlantı olarak paylaştı", "{actor} removed public link for {file}" : "{actor} {file} dosyasının herkese açık paylaşım bağlantısını kaldırdı", - "Public link of {actor} for {file} expired" : "{actor} tarafından paylaşılan {file} dosyası bağlantısının süresi dolmuş", + "Public link of {actor} for {file} expired" : "{actor} tarafından paylaşılan {file} dosyası bağlantısının geçerlilik süresi dolmuş", "{user} accepted the remote share" : "{user} uzak paylaşımı kabul etti", "{user} declined the remote share" : "{user} uzak paylaşımı reddetti", "You received a new remote share {file} from {user}" : "{user} kullanıcısından yeni bir uzak {file} dosya paylaşımı aldınız", @@ -79,8 +79,8 @@ "{actor} removed share for {user}" : "{actor} {user} kullanıcısının paylaşımını kaldırdı", "Shared by {actor}" : "{actor} tarafından paylaşıldı", "{actor} removed share" : "{actor} paylaşımı kaldırdı", - "Share for {user} expired" : "{user} kullanıcısı ile paylaşım süresi geçmiş", - "Share expired" : "Paylaşım süresi geçmiş", + "Share for {user} expired" : "{user} kullanıcısı ile paylaşımın geçerlilik süresi dolmuş", + "Share expired" : "Paylaşımın geçerlilik süresi dolmuş", "You shared {file} with {user}" : "{file} dosyasını {user} kullanıcısıyla paylaştınız", "You removed {user} from {file}" : "{file} dosyasının {user} kullanıcısıyla paylaşımını kaldırdınız", "You removed yourself from {file}" : "Kendinizi {file} dosyasından kaldırdınız", @@ -89,8 +89,8 @@ "{actor} removed {user} from {file}" : "{actor} {file} dosyasının {user} kullanıcısıyla paylaşımını kaldırdı", "{actor} shared {file} with you" : "{actor} {file} dosyasını sizinle paylaştı", "{actor} removed you from the share named {file}" : "{actor} {file} dosyasının sizinle paylaşımını kaldırdı", - "Share for file {file} with {user} expired" : "{file} dosyasının {user} kullanıcısıyla paylaşım süresi geçmiş", - "Share for file {file} expired" : "{file} dosyasının paylaşım süresi geçmiş", + "Share for file {file} with {user} expired" : "{file} dosyasının {user} kullanıcısıyla paylaşımının geçerlilik süresi dolmuş", + "Share for file {file} expired" : "{file} dosyasının paylaşımının geçerlilik süresi dolmuş", "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "E-posta ya da herkese açık bağlantı ile paylaşılan bir dosya ya da klasör <strong>indirildi</strong>", "A file or folder was shared from <strong>another server</strong>" : "<strong>Başka bir sunucudan</strong> bir dosya ya da klasör paylaşıldı", "Files" : "Dosyalar", @@ -121,6 +121,7 @@ "Could not lock node" : "Düğüm kilitlenemedi", "Could not lock path" : "Yol kilitlenemedi", "Wrong or no update parameter given" : "Parametre yanlış ya da herhangi bir parametre belirtilmemiş", + "Cannot increase permissions" : "Erişim izinleri yükseltilemedi", "Share must at least have READ or CREATE permissions" : "Paylaşım için en az OKUMA ve OLUŞTURMA izinleri olmalıdır", "Share must have READ permission if UPDATE or DELETE permission is set" : "UPDATE ya da DELETE izinleri verilmiş ise paylaşıma READ izni verilmelidir", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "Nextcloud Talk etkinleştirilmemiş olduğundan, paylaşım parolası Nextcloud Talk ile gönderilemedi.", @@ -130,9 +131,9 @@ "Add to your %s" : "%s uygulamanıza ekleyin", "Share API is disabled" : "Paylaşım API arayüzü devre dışı", "File sharing" : "Dosya paylaşımı", - "Share will expire tomorrow" : "Paylaşımın süresi yarın dolacak", - "One or more of your shares will expire tomorrow" : "Bir ya da daha çok paylaşımınızın süresi yarın dolacak", - "Your share of {node} will expire tomorrow" : "{node} paylaşımınızın süresi yarın dolacak", + "Share will expire tomorrow" : "Paylaşımın geçerlilik süresi yarın dolacak", + "One or more of your shares will expire tomorrow" : "Bir ya da daha çok paylaşımınızın geçerlilik süresi yarın dolacak", + "Your share of {node} will expire tomorrow" : "{node} paylaşımınızın geçerlilik süresi yarın dolacak", "You received {share} as a share by {user}" : "{user} kullanıcısından {share} paylaşımını aldınız", "You received {share} to group {group} as a share by {user}" : "{user} kullanıcısından {group} grubu için {share} paylaşımını aldınız", "Accept" : "Kabul et", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "{owner} tarafından grup {user} ile paylaşılmış", "Shared with the conversation {user} by {owner}" : "{owner} tarafından görüşme {user} ile paylaştırılmış", "Shared with {user} by {owner}" : "{owner} tarafından {user} ile paylaşılmış", + "Allow download" : "İndirilebilsin", "Added by {initiator}" : "{initiator} tarafından eklendi", "Via “{folder}”" : "“{folder}” ile", "Internal link" : "İç bağlantı", + "Copy internal link to clipboard" : "İç bağlantıyı panoya kopyala", "Link copied" : "Bağlantı kopyalandı", "Cannot copy, please copy the link manually" : "Kopyalanamadı. Lütfen bağlantıyı el ile kopyalayın", "Copy to clipboard" : "Panoya kopyala", "Only works for users with access to this folder" : "Yalnızca bu klasöre erişebilen kullanıcılar için geçerlidir", "Only works for users with access to this file" : "Yalnızca bu dosyaya erişebilen kullanıcılar için geçerlidir", + "Copy public link to clipboard" : "Herkese açık bağlantıyı panoya kopyala", "Please enter the following required information before creating the share" : "Lütfen paylaşımı oluşturmadan önce aşağıdaki zorunlu bilgileri yazın", "Password protection (enforced)" : "Parola koruması (dayatılmış)", "Password protection" : "Parola koruması", @@ -190,7 +194,7 @@ "Share label" : "Etiketi paylaş", "Hide download" : "İndirme gizlensin", "Password protect" : "Parola koruması", - "Password expires {passwordExpirationTime}" : "Parola geçerlilik sonu {passwordExpirationTime}", + "Password expires {passwordExpirationTime}" : "Parolanın geçerlilik süresi sonu {passwordExpirationTime}", "Password expired" : "Parolanın geçerlilik süresi dolmuş", "Video verification" : "Görüntü doğrulaması", "Enter a note for the share recipient" : "Paylaşım alıcısı için bir not yazın", @@ -216,8 +220,8 @@ "Toggle list of others with access to this file" : "Bu dosyaya erişim izni olan diğer kişiler listesini aç/kapat", "Unable to fetch inherited shares" : "Devir alınan paylaşımlar alınamadı", "Unable to load the shares list" : "Paylaşımlar listesi yüklenemedi", - "Expires {relativetime}" : "Kullanma süresi sonu {relativetime}", - "this share just expired." : "bu paylaşımın kullanma süresi doldu.", + "Expires {relativetime}" : "Geçerlilik süresi sonu {relativetime}", + "this share just expired." : "bu paylaşımın geçerlilik süresi dolmuş.", "Shared with you by {owner}" : "{owner} tarafından sizinle paylaşılmış", "Link to a file" : "Bir dosya ile bağla", "Error creating the share: {errorMessage}" : "Paylaşım oluşturulurken sorun çıktı: {errorMessage}", @@ -238,7 +242,7 @@ "Sorry, this link does not seem to work anymore." : "Ne yazık ki, bu bağlantı artık çalışmıyor gibi görünüyor.", "Reasons might be:" : "Nedenleri şunlar olabilir:", "the item was removed" : "öge silinmiş", - "the link expired" : "bağlantı süresi dolmuş", + "the link expired" : "bağlantının geçerlilik süresi dolmuş", "sharing is disabled" : "paylaşım devre dışı bırakılmış", "For more info, please ask the person who sent this link." : "Ayrıntılı bilgi almak için bu bağlantıyı aldığınız kişi ile görüşün.", "Share note" : "Notu paylaş", diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index db3575d2473..2f012c8bfa8 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -121,6 +121,7 @@ OC.L10N.register( "Could not lock node" : "无法锁定节点", "Could not lock path" : "无法锁定路径", "Wrong or no update parameter given" : "错误或没有更新参数给出", + "Cannot increase permissions" : "不能增加权限", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "“通过Nextcloud Talk发送密码”共享文件或文件夹失败了,因为未启用 Nextcloud Talk", "shared by %s" : "共享者 %s", "Download all files" : "下载所有文件", diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index b6ebe5eeacc..d2bad545a70 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -119,6 +119,7 @@ "Could not lock node" : "无法锁定节点", "Could not lock path" : "无法锁定路径", "Wrong or no update parameter given" : "错误或没有更新参数给出", + "Cannot increase permissions" : "不能增加权限", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "“通过Nextcloud Talk发送密码”共享文件或文件夹失败了,因为未启用 Nextcloud Talk", "shared by %s" : "共享者 %s", "Download all files" : "下载所有文件", diff --git a/apps/files_sharing/l10n/zh_HK.js b/apps/files_sharing/l10n/zh_HK.js index cb5474e2760..8ec96c098fc 100644 --- a/apps/files_sharing/l10n/zh_HK.js +++ b/apps/files_sharing/l10n/zh_HK.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "無法鎖定節點", "Could not lock path" : "無法鎖定路徑", "Wrong or no update parameter given" : "更新參數不正確或未提供", + "Cannot increase permissions" : "無法增加權限", "Share must at least have READ or CREATE permissions" : "分享必須至少具有 READ 或 CREATE 權限", "Share must have READ permission if UPDATE or DELETE permission is set" : "如果設置了 UPDATE 或 DELETE 權限,則分享必須具有 READ 權限", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "“通過 Nextcloud Talk 發送密碼”共享檔案或資料夾失敗,因為 Nextcloud Talk 未啟用。", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "由 {owner} 分享予群組 {user}", "Shared with the conversation {user} by {owner}" : "{owner}與{user}共享", "Shared with {user} by {owner}" : "{user}與{owner}共享", + "Allow download" : "允許下載", "Added by {initiator}" : "由{initiator}添加", "Via “{folder}”" : "透過 “{folder}”", "Internal link" : "內部連結", + "Copy internal link to clipboard" : "將內部連結複製到剪貼板", "Link copied" : "連結已複製", "Cannot copy, please copy the link manually" : "無法複製,請手動複製連結", "Copy to clipboard" : "複製到剪貼板", "Only works for users with access to this folder" : "只對可以存取此資料夾的用戶生效", "Only works for users with access to this file" : "僅適用於有權存取此檔案的用戶", + "Copy public link to clipboard" : "將公共連結複製到剪貼簿", "Please enter the following required information before creating the share" : "創建分享之前,請輸入以下必填信息", "Password protection (enforced)" : "密碼保護(強制)", "Password protection" : "密碼保護", diff --git a/apps/files_sharing/l10n/zh_HK.json b/apps/files_sharing/l10n/zh_HK.json index c2877de4016..95f548ddb60 100644 --- a/apps/files_sharing/l10n/zh_HK.json +++ b/apps/files_sharing/l10n/zh_HK.json @@ -121,6 +121,7 @@ "Could not lock node" : "無法鎖定節點", "Could not lock path" : "無法鎖定路徑", "Wrong or no update parameter given" : "更新參數不正確或未提供", + "Cannot increase permissions" : "無法增加權限", "Share must at least have READ or CREATE permissions" : "分享必須至少具有 READ 或 CREATE 權限", "Share must have READ permission if UPDATE or DELETE permission is set" : "如果設置了 UPDATE 或 DELETE 權限,則分享必須具有 READ 權限", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "“通過 Nextcloud Talk 發送密碼”共享檔案或資料夾失敗,因為 Nextcloud Talk 未啟用。", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "由 {owner} 分享予群組 {user}", "Shared with the conversation {user} by {owner}" : "{owner}與{user}共享", "Shared with {user} by {owner}" : "{user}與{owner}共享", + "Allow download" : "允許下載", "Added by {initiator}" : "由{initiator}添加", "Via “{folder}”" : "透過 “{folder}”", "Internal link" : "內部連結", + "Copy internal link to clipboard" : "將內部連結複製到剪貼板", "Link copied" : "連結已複製", "Cannot copy, please copy the link manually" : "無法複製,請手動複製連結", "Copy to clipboard" : "複製到剪貼板", "Only works for users with access to this folder" : "只對可以存取此資料夾的用戶生效", "Only works for users with access to this file" : "僅適用於有權存取此檔案的用戶", + "Copy public link to clipboard" : "將公共連結複製到剪貼簿", "Please enter the following required information before creating the share" : "創建分享之前,請輸入以下必填信息", "Password protection (enforced)" : "密碼保護(強制)", "Password protection" : "密碼保護", diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index 7dd06561342..a84717eb385 100644 --- a/apps/files_sharing/l10n/zh_TW.js +++ b/apps/files_sharing/l10n/zh_TW.js @@ -123,6 +123,7 @@ OC.L10N.register( "Could not lock node" : "無法鎖定節點", "Could not lock path" : "無法鎖定路徑", "Wrong or no update parameter given" : "更新參數不正確或未提供", + "Cannot increase permissions" : "無法增加權限", "Share must at least have READ or CREATE permissions" : "分享必須至少有 READ 或 CREATE 權限", "Share must have READ permission if UPDATE or DELETE permission is set" : "若設定了 UPDATE 或 DELETE 權限,則分享必須有 READ 權限", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "「透過 Nextcloud Talk 傳送密碼」分享檔案或資料夾失敗,因為未啟用 Nextcloud Talk。", @@ -174,14 +175,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "由 {owner} 與群組 {user} 分享", "Shared with the conversation {user} by {owner}" : "由 {owner} 與對話 {user} 分享", "Shared with {user} by {owner}" : "由 {owner} 與 {user} 分享", + "Allow download" : "允許下載", "Added by {initiator}" : "由 {initiator} 新增", "Via “{folder}”" : "透過「{folder}」", "Internal link" : "內部連結", + "Copy internal link to clipboard" : "複製內部連結至剪貼簿", "Link copied" : "連結已複製", "Cannot copy, please copy the link manually" : "無法複製,請手動複製連結", "Copy to clipboard" : "複製到剪貼簿", "Only works for users with access to this folder" : "僅對可存取此資料夾的使用者有效", "Only works for users with access to this file" : "僅對可存取此檔案的使用者有效", + "Copy public link to clipboard" : "複製公開連結至剪貼簿", "Please enter the following required information before creating the share" : "在建立分享前,請輸入以下的必要資訊", "Password protection (enforced)" : "密碼保護(強制)", "Password protection" : "密碼保護", diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json index 2fad6a35187..ad3e6714eaa 100644 --- a/apps/files_sharing/l10n/zh_TW.json +++ b/apps/files_sharing/l10n/zh_TW.json @@ -121,6 +121,7 @@ "Could not lock node" : "無法鎖定節點", "Could not lock path" : "無法鎖定路徑", "Wrong or no update parameter given" : "更新參數不正確或未提供", + "Cannot increase permissions" : "無法增加權限", "Share must at least have READ or CREATE permissions" : "分享必須至少有 READ 或 CREATE 權限", "Share must have READ permission if UPDATE or DELETE permission is set" : "若設定了 UPDATE 或 DELETE 權限,則分享必須有 READ 權限", "\"Sending the password by Nextcloud Talk\" for sharing a file or folder failed because Nextcloud Talk is not enabled." : "「透過 Nextcloud Talk 傳送密碼」分享檔案或資料夾失敗,因為未啟用 Nextcloud Talk。", @@ -172,14 +173,17 @@ "Shared with the group {user} by {owner}" : "由 {owner} 與群組 {user} 分享", "Shared with the conversation {user} by {owner}" : "由 {owner} 與對話 {user} 分享", "Shared with {user} by {owner}" : "由 {owner} 與 {user} 分享", + "Allow download" : "允許下載", "Added by {initiator}" : "由 {initiator} 新增", "Via “{folder}”" : "透過「{folder}」", "Internal link" : "內部連結", + "Copy internal link to clipboard" : "複製內部連結至剪貼簿", "Link copied" : "連結已複製", "Cannot copy, please copy the link manually" : "無法複製,請手動複製連結", "Copy to clipboard" : "複製到剪貼簿", "Only works for users with access to this folder" : "僅對可存取此資料夾的使用者有效", "Only works for users with access to this file" : "僅對可存取此檔案的使用者有效", + "Copy public link to clipboard" : "複製公開連結至剪貼簿", "Please enter the following required information before creating the share" : "在建立分享前,請輸入以下的必要資訊", "Password protection (enforced)" : "密碼保護(強制)", "Password protection" : "密碼保護", diff --git a/apps/files_sharing/lib/Activity/Providers/Base.php b/apps/files_sharing/lib/Activity/Providers/Base.php index cbd16c134cc..ca5b9b55b62 100644 --- a/apps/files_sharing/lib/Activity/Providers/Base.php +++ b/apps/files_sharing/lib/Activity/Providers/Base.php @@ -177,12 +177,12 @@ abstract class Base implements IProvider { */ protected function getUser($uid) { // First try local user - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { + $displayName = $this->userManager->getDisplayName($uid); + if ($displayName !== null) { return [ 'type' => 'user', - 'id' => $user->getUID(), - 'name' => $user->getDisplayName(), + 'id' => $uid, + 'name' => $displayName, ]; } diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index 6f1d72f9115..63fdced9011 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -50,16 +50,22 @@ use OCA\Files_Sharing\Notification\Listener; use OCA\Files_Sharing\Notification\Notifier; use OCA\Files\Event\LoadAdditionalScriptsEvent; use OCA\Files\Event\LoadSidebar; +use OCP\Files\Event\BeforeDirectGetEvent; use OCA\Files_Sharing\ShareBackend\File; use OCA\Files_Sharing\ShareBackend\Folder; +use OCA\Files_Sharing\ViewOnly; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as ResourcesLoadAdditionalScriptsEvent; use OCP\EventDispatcher\IEventDispatcher; +use OCP\EventDispatcher\GenericEvent; use OCP\Federation\ICloudIdManager; use OCP\Files\Config\IMountProviderCollection; +use OCP\Files\Events\BeforeDirectFileDownloadEvent; +use OCP\Files\Events\BeforeZipCreatedEvent; +use OCP\Files\IRootFolder; use OCP\Group\Events\UserAddedEvent; use OCP\IDBConnection; use OCP\IGroup; @@ -71,7 +77,7 @@ use OCP\User\Events\UserChangedEvent; use OCP\Util; use Psr\Container\ContainerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; -use Symfony\Component\EventDispatcher\GenericEvent; +use Symfony\Component\EventDispatcher\GenericEvent as OldGenericEvent; class Application extends App implements IBootstrap { public const APP_ID = 'files_sharing'; @@ -107,6 +113,7 @@ class Application extends App implements IBootstrap { public function boot(IBootContext $context): void { $context->injectFn([$this, 'registerMountProviders']); $context->injectFn([$this, 'registerEventsScripts']); + $context->injectFn([$this, 'registerDownloadEvents']); $context->injectFn([$this, 'setupSharingMenus']); Helper::registerHooks(); @@ -121,12 +128,12 @@ class Application extends App implements IBootstrap { } - public function registerMountProviders(IMountProviderCollection $mountProviderCollection, MountProvider $mountProvider, ExternalMountProvider $externalMountProvider) { + public function registerMountProviders(IMountProviderCollection $mountProviderCollection, MountProvider $mountProvider, ExternalMountProvider $externalMountProvider): void { $mountProviderCollection->registerProvider($mountProvider); $mountProviderCollection->registerProvider($externalMountProvider); } - public function registerEventsScripts(IEventDispatcher $dispatcher, EventDispatcherInterface $oldDispatcher) { + public function registerEventsScripts(IEventDispatcher $dispatcher, EventDispatcherInterface $oldDispatcher): void { // sidebar and files scripts $dispatcher->addServiceListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class); $dispatcher->addServiceListener(BeforeTemplateRenderedEvent::class, LegacyBeforeTemplateRenderedListener::class); @@ -139,19 +146,73 @@ class Application extends App implements IBootstrap { }); // notifications api to accept incoming user shares - $oldDispatcher->addListener('OCP\Share::postShare', function (GenericEvent $event) { + $oldDispatcher->addListener('OCP\Share::postShare', function (OldGenericEvent $event) { /** @var Listener $listener */ $listener = $this->getContainer()->query(Listener::class); $listener->shareNotification($event); }); - $oldDispatcher->addListener(IGroup::class . '::postAddUser', function (GenericEvent $event) { + $oldDispatcher->addListener(IGroup::class . '::postAddUser', function (OldGenericEvent $event) { /** @var Listener $listener */ $listener = $this->getContainer()->query(Listener::class); $listener->userAddedToGroup($event); }); } - public function setupSharingMenus(IManager $shareManager, IFactory $l10nFactory, IUserSession $userSession) { + public function registerDownloadEvents( + IEventDispatcher $dispatcher, + IUserSession $userSession, + IRootFolder $rootFolder + ): void { + + $dispatcher->addListener( + BeforeDirectFileDownloadEvent::class, + function (BeforeDirectFileDownloadEvent $event) use ($userSession, $rootFolder): void { + $pathsToCheck = [$event->getPath()]; + // Check only for user/group shares. Don't restrict e.g. share links + $user = $userSession->getUser(); + if ($user) { + $viewOnlyHandler = new ViewOnly( + $rootFolder->getUserFolder($user->getUID()) + ); + if (!$viewOnlyHandler->check($pathsToCheck)) { + $event->setSuccessful(false); + $event->setErrorMessage('Access to this resource or one of its sub-items has been denied.'); + } + } + } + ); + + $dispatcher->addListener( + BeforeZipCreatedEvent::class, + function (BeforeZipCreatedEvent $event) use ($userSession, $rootFolder): void { + $dir = $event->getDirectory(); + $files = $event->getFiles(); + + $pathsToCheck = []; + foreach ($files as $file) { + $pathsToCheck[] = $dir . '/' . $file; + } + + // Check only for user/group shares. Don't restrict e.g. share links + $user = $userSession->getUser(); + if ($user) { + $viewOnlyHandler = new ViewOnly( + $rootFolder->getUserFolder($user->getUID()) + ); + if (!$viewOnlyHandler->check($pathsToCheck)) { + $event->setErrorMessage('Access to this resource or one of its sub-items has been denied.'); + $event->setSuccessful(false); + } else { + $event->setSuccessful(true); + } + } else { + $event->setSuccessful(true); + } + } + ); + } + + public function setupSharingMenus(IManager $shareManager, IFactory $l10nFactory, IUserSession $userSession): void { if (!$shareManager->shareApiEnabled() || !class_exists('\OCA\Files\App')) { return; } diff --git a/apps/files_sharing/lib/Cache.php b/apps/files_sharing/lib/Cache.php index 9f11431008f..0025bb98fbb 100644 --- a/apps/files_sharing/lib/Cache.php +++ b/apps/files_sharing/lib/Cache.php @@ -170,7 +170,7 @@ class Cache extends CacheJail { private function getOwnerDisplayName() { if (!$this->ownerDisplayName) { $uid = $this->storage->getOwner(''); - $this->ownerDisplayName = $this->displayNameCache->getDisplayName($uid); + $this->ownerDisplayName = $this->displayNameCache->getDisplayName($uid) ?? $uid; } return $this->ownerDisplayName; } @@ -183,18 +183,28 @@ class Cache extends CacheJail { } public function getQueryFilterForStorage(): ISearchOperator { + $storageFilter = \OC\Files\Cache\Cache::getQueryFilterForStorage(); + // Do the normal jail behavior for non files if ($this->storage->getItemType() !== 'file') { - return parent::getQueryFilterForStorage(); + return $this->addJailFilterQuery($storageFilter); } // for single file shares we don't need to do the LIKE return new SearchBinaryOperator( ISearchBinaryOperator::OPERATOR_AND, [ - \OC\Files\Cache\Cache::getQueryFilterForStorage(), + $storageFilter, new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'path', $this->getGetUnjailedRoot()), ] ); } + + public function getCacheEntryFromSearchResult(ICacheEntry $rawEntry): ?ICacheEntry { + if ($rawEntry->getStorageId() === $this->getNumericStorageId()) { + return parent::getCacheEntryFromSearchResult($rawEntry); + } else { + return null; + } + } } diff --git a/apps/files_sharing/lib/Controller/PublicPreviewController.php b/apps/files_sharing/lib/Controller/PublicPreviewController.php index 4a16afa7ac0..98c4d8cafb4 100644 --- a/apps/files_sharing/lib/Controller/PublicPreviewController.php +++ b/apps/files_sharing/lib/Controller/PublicPreviewController.php @@ -136,7 +136,7 @@ class PublicPreviewController extends PublicShareController { * @param $token * @return DataResponse|FileDisplayResponse */ - public function directLink($token) { + public function directLink(string $token) { // No token no image if ($token === '') { return new DataResponse([], Http::STATUS_BAD_REQUEST); diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index fafdb1a64cd..59089390667 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -45,8 +45,10 @@ declare(strict_types=1); namespace OCA\Files_Sharing\Controller; use OC\Files\FileInfo; +use OC\Files\Storage\Wrapper\Wrapper; use OCA\Files_Sharing\Exceptions\SharingRightsException; use OCA\Files_Sharing\External\Storage; +use OCA\Files_Sharing\SharedStorage; use OCA\Files\Helper; use OCP\App\IAppManager; use OCP\AppFramework\Http\DataResponse; @@ -324,6 +326,11 @@ class ShareAPIController extends OCSController { $result['mail_send'] = $share->getMailSend() ? 1 : 0; $result['hide_download'] = $share->getHideDownload() ? 1 : 0; + $result['attributes'] = null; + if ($attributes = $share->getAttributes()) { + $result['attributes'] = \json_encode($attributes->toArray()); + } + return $result; } @@ -436,6 +443,7 @@ class ShareAPIController extends OCSController { * @param string $sendPasswordByTalk * @param string $expireDate * @param string $label + * @param string $attributes * * @return DataResponse * @throws NotFoundException @@ -456,7 +464,8 @@ class ShareAPIController extends OCSController { string $sendPasswordByTalk = null, string $expireDate = '', string $note = '', - string $label = '' + string $label = '', + string $attributes = null ): DataResponse { $share = $this->shareManager->newShare(); @@ -516,6 +525,8 @@ class ShareAPIController extends OCSController { $permissions &= ~($permissions & ~$node->getPermissions()); } + $this->checkInheritedAttributes($share); + if ($shareType === IShare::TYPE_USER) { // Valid user is required to share if ($shareWith === null || !$this->userManager->userExists($shareWith)) { @@ -674,6 +685,10 @@ class ShareAPIController extends OCSController { $share->setNote($note); } + if ($attributes !== null) { + $share = $this->setShareAttributes($share, $attributes); + } + try { $share = $this->shareManager->createShare($share); } catch (GenericShareException $e) { @@ -1035,6 +1050,7 @@ class ShareAPIController extends OCSController { * @param string $note * @param string $label * @param string $hideDownload + * @param string $attributes * @return DataResponse * @throws LockedException * @throws NotFoundException @@ -1051,7 +1067,8 @@ class ShareAPIController extends OCSController { string $expireDate = null, string $note = null, string $label = null, - string $hideDownload = null + string $hideDownload = null, + string $attributes = null ): DataResponse { try { $share = $this->getShareById($id); @@ -1077,7 +1094,8 @@ class ShareAPIController extends OCSController { $expireDate === null && $note === null && $label === null && - $hideDownload === null + $hideDownload === null && + $attributes === null ) { throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given')); } @@ -1086,6 +1104,25 @@ class ShareAPIController extends OCSController { $share->setNote($note); } + $userFolder = $this->rootFolder->getUserFolder($this->currentUser); + + // get the node with the point of view of the current user + $nodes = $userFolder->getById($share->getNode()->getId()); + if (count($nodes) > 0) { + $node = $nodes[0]; + $storage = $node->getStorage(); + if ($storage && $storage->instanceOfStorage(SharedStorage::class)) { + /** @var \OCA\Files_Sharing\SharedStorage $storage */ + $inheritedAttributes = $storage->getShare()->getAttributes(); + if ($inheritedAttributes !== null && $inheritedAttributes->getAttribute('permissions', 'download') === false) { + if ($hideDownload === 'false') { + throw new OCSBadRequestException($this->l->t('Cannot increase permissions')); + } + $share->setHideDownload(true); + } + } + } + /** * expirationdate, password and publicUpload only make sense for link shares */ @@ -1216,6 +1253,10 @@ class ShareAPIController extends OCSController { } } + if ($attributes !== null) { + $share = $this->setShareAttributes($share, $attributes); + } + try { $share = $this->shareManager->updateShare($share); } catch (GenericShareException $e) { @@ -1832,4 +1873,51 @@ class ShareAPIController extends OCSController { } } } + + /** + * @param IShare $share + * @param string|null $attributesString + * @return IShare modified share + */ + private function setShareAttributes(IShare $share, ?string $attributesString) { + $newShareAttributes = null; + if ($attributesString !== null) { + $newShareAttributes = $this->shareManager->newShare()->newAttributes(); + $formattedShareAttributes = \json_decode($attributesString, true); + if (is_array($formattedShareAttributes)) { + foreach ($formattedShareAttributes as $formattedAttr) { + $newShareAttributes->setAttribute( + $formattedAttr['scope'], + $formattedAttr['key'], + is_string($formattedAttr['enabled']) ? (bool) \json_decode($formattedAttr['enabled']) : $formattedAttr['enabled'] + ); + } + } else { + throw new OCSBadRequestException('Invalid share attributes provided: \"' . $attributesString . '\"'); + } + } + $share->setAttributes($newShareAttributes); + + return $share; + } + + private function checkInheritedAttributes(IShare $share): void { + if ($share->getNode()->getStorage()->instanceOfStorage(SharedStorage::class)) { + $storage = $share->getNode()->getStorage(); + if ($storage instanceof Wrapper) { + $storage = $storage->getInstanceOfStorage(SharedStorage::class); + if ($storage === null) { + throw new \RuntimeException('Should not happen, instanceOfStorage but getInstanceOfStorage return null'); + } + } else { + throw new \RuntimeException('Should not happen, instanceOfStorage but not a wrapper'); + } + /** @var \OCA\Files_Sharing\SharedStorage $storage */ + $inheritedAttributes = $storage->getShare()->getAttributes(); + if ($inheritedAttributes !== null && $inheritedAttributes->getAttribute('permissions', 'download') === false) { + $share->setHideDownload(true); + } + } + + } } diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php index a12878e6de2..87f143facd0 100644 --- a/apps/files_sharing/lib/Controller/ShareController.php +++ b/apps/files_sharing/lib/Controller/ShareController.php @@ -523,13 +523,12 @@ class ShareController extends AuthPublicShareController { \OCP\Util::addScript('files', 'filelist'); \OCP\Util::addScript('files', 'keyboardshortcuts'); \OCP\Util::addScript('files', 'operationprogressbar'); - - // Load Viewer scripts - if (class_exists(LoadViewer::class)) { - $this->eventDispatcher->dispatchTyped(new LoadViewer()); - } } + // Load Viewer scripts + if (class_exists(LoadViewer::class)) { + $this->eventDispatcher->dispatchTyped(new LoadViewer()); + } // OpenGraph Support: http://ogp.me/ \OCP\Util::addHeader('meta', ['property' => "og:title", 'content' => $shareTmpl['filename']]); \OCP\Util::addHeader('meta', ['property' => "og:description", 'content' => $this->defaults->getName() . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : '')]); diff --git a/apps/files_sharing/lib/External/Scanner.php b/apps/files_sharing/lib/External/Scanner.php index cfde56103da..e3336c69a05 100644 --- a/apps/files_sharing/lib/External/Scanner.php +++ b/apps/files_sharing/lib/External/Scanner.php @@ -29,27 +29,14 @@ use OC\ForbiddenException; use OCP\Files\NotFoundException; use OCP\Files\StorageInvalidException; use OCP\Files\StorageNotAvailableException; -use OCP\Http\Client\LocalServerException; -use Psr\Log\LoggerInterface; class Scanner extends \OC\Files\Cache\Scanner { /** @var \OCA\Files_Sharing\External\Storage */ protected $storage; - /** {@inheritDoc} */ public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1, $lock = true) { - try { - if (!$this->storage->remoteIsOwnCloud()) { - return parent::scan($path, $recursive, $reuse, $lock); - } - } catch (LocalServerException $e) { - // Scanner doesn't have dependency injection - \OC::$server->get(LoggerInterface::class) - ->warning('Trying to scan files inside invalid external storage: ' . $this->storage->getRemote() . ' for mountpoint ' . $this->storage->getMountPoint() . ' and id ' . $this->storage->getId()); - return; - } - - $this->scanAll(); + // Disable locking for federated shares + parent::scan($path, $recursive, $reuse, false); } /** @@ -67,7 +54,7 @@ class Scanner extends \OC\Files\Cache\Scanner { */ public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = null, $lock = true, $data = null) { try { - return parent::scanFile($file, $reuseExisting); + return parent::scanFile($file, $reuseExisting, $parentId, $cacheData, $lock, $data); } catch (ForbiddenException $e) { $this->storage->checkStorageAvailability(); } catch (NotFoundException $e) { @@ -81,56 +68,4 @@ class Scanner extends \OC\Files\Cache\Scanner { $this->storage->checkStorageAvailability(); } } - - /** - * Checks the remote share for changes. - * If changes are available, scan them and update - * the cache. - * @throws NotFoundException - * @throws StorageInvalidException - * @throws \Exception - */ - public function scanAll() { - try { - $data = $this->storage->getShareInfo(); - } catch (\Exception $e) { - $this->storage->checkStorageAvailability(); - throw new \Exception( - 'Error while scanning remote share: "' . - $this->storage->getRemote() . '" ' . - $e->getMessage() - ); - } - if ($data['status'] === 'success') { - $this->addResult($data['data'], ''); - } else { - throw new \Exception( - 'Error while scanning remote share: "' . - $this->storage->getRemote() . '"' - ); - } - } - - /** - * @param array $data - * @param string $path - */ - private function addResult($data, $path) { - $id = $this->cache->put($path, $data); - if (isset($data['children'])) { - $children = []; - foreach ($data['children'] as $child) { - $children[$child['name']] = true; - $this->addResult($child, ltrim($path . '/' . $child['name'], '/')); - } - - $existingCache = $this->cache->getFolderContentsById($id); - foreach ($existingCache as $existingChild) { - // if an existing child is not in the new data, remove it - if (!isset($children[$existingChild['name']])) { - $this->cache->remove(ltrim($path . '/' . $existingChild['name'], '/')); - } - } - } - } } diff --git a/apps/files_sharing/lib/MountProvider.php b/apps/files_sharing/lib/MountProvider.php index 5817ece6809..954c9cf70e6 100644 --- a/apps/files_sharing/lib/MountProvider.php +++ b/apps/files_sharing/lib/MountProvider.php @@ -38,6 +38,7 @@ use OCP\ICacheFactory; use OCP\IConfig; use OCP\ILogger; use OCP\IUser; +use OCP\Share\IAttributes; use OCP\Share\IManager; use OCP\Share\IShare; @@ -229,14 +230,32 @@ class MountProvider implements IMountProvider { ->setTarget($shares[0]->getTarget()); // use most permissive permissions - $permissions = 0; + // this covers the case where there are multiple shares for the same + // file e.g. from different groups and different permissions + $superPermissions = 0; + $superAttributes = $this->shareManager->newShare()->newAttributes(); $status = IShare::STATUS_PENDING; foreach ($shares as $share) { - $permissions |= $share->getPermissions(); + $superPermissions |= $share->getPermissions(); $status = max($status, $share->getStatus()); + // update permissions + $superPermissions |= $share->getPermissions(); + + // update share permission attributes + $attributes = $share->getAttributes(); + if ($attributes !== null) { + foreach ($attributes->toArray() as $attribute) { + if ($superAttributes->getAttribute($attribute['scope'], $attribute['key']) === true) { + // if super share attribute is already enabled, it is most permissive + continue; + } + // update supershare attributes with subshare attribute + $superAttributes->setAttribute($attribute['scope'], $attribute['key'], $attribute['enabled']); + } + } + // adjust target, for database consistency if needed if ($share->getTarget() !== $superShare->getTarget()) { - // adjust target, for database consistency $share->setTarget($superShare->getTarget()); try { $this->shareManager->moveShare($share, $user->getUID()); @@ -261,8 +280,9 @@ class MountProvider implements IMountProvider { } } - $superShare->setPermissions($permissions) - ->setStatus($status); + $superShare->setPermissions($superPermissions); + $superShare->setStatus($status); + $superShare->setAttributes($superAttributes); $result[] = [$superShare, $shares]; } diff --git a/apps/files_sharing/lib/Updater.php b/apps/files_sharing/lib/Updater.php index ad194dde016..59e06e60299 100644 --- a/apps/files_sharing/lib/Updater.php +++ b/apps/files_sharing/lib/Updater.php @@ -29,6 +29,7 @@ namespace OCA\Files_Sharing; use OC\Files\Mount\MountPoint; use OCP\Constants; use OCP\Share\IShare; +use OCP\Files\Folder; class Updater { @@ -37,7 +38,7 @@ class Updater { */ public static function renameHook($params) { self::renameChildren($params['oldpath'], $params['newpath']); - self::moveShareToShare($params['newpath']); + self::moveShareInOrOutOfShare($params['newpath']); } /** @@ -50,7 +51,7 @@ class Updater { * * @param string $path */ - private static function moveShareToShare($path) { + private static function moveShareInOrOutOfShare($path): void { $userFolder = \OC::$server->getUserFolder(); // If the user folder can't be constructed (e.g. link share) just return. @@ -62,10 +63,18 @@ class Updater { $shareManager = \OC::$server->getShareManager(); + // FIXME: should CIRCLES be included here ?? $shares = $shareManager->getSharesBy($userFolder->getOwner()->getUID(), IShare::TYPE_USER, $src, false, -1); $shares = array_merge($shares, $shareManager->getSharesBy($userFolder->getOwner()->getUID(), IShare::TYPE_GROUP, $src, false, -1)); $shares = array_merge($shares, $shareManager->getSharesBy($userFolder->getOwner()->getUID(), IShare::TYPE_ROOM, $src, false, -1)); + if ($src instanceof Folder) { + $subShares = $shareManager->getSharesInFolder($userFolder->getOwner()->getUID(), $src, false, false); + foreach ($subShares as $subShare) { + $shares = array_merge($shares, array_values($subShare)); + } + } + // If the path we move is not a share we don't care if (empty($shares)) { return; @@ -74,21 +83,31 @@ class Updater { // Check if the destination is inside a share $mountManager = \OC::$server->getMountManager(); $dstMount = $mountManager->find($src->getPath()); - if (!($dstMount instanceof \OCA\Files_Sharing\SharedMount)) { - return; - } - - $newOwner = $dstMount->getShare()->getShareOwner(); //Ownership is moved over foreach ($shares as $share) { - /** @var IShare $share */ - if (!($dstMount->getShare()->getPermissions() & Constants::PERMISSION_SHARE)) { - $shareManager->deleteShare($share); + if ( + $share->getShareType() !== IShare::TYPE_USER && + $share->getShareType() !== IShare::TYPE_GROUP && + $share->getShareType() !== IShare::TYPE_ROOM + ) { continue; } + + if ($dstMount instanceof \OCA\Files_Sharing\SharedMount) { + if (!($dstMount->getShare()->getPermissions() & Constants::PERMISSION_SHARE)) { + $shareManager->deleteShare($share); + continue; + } + $newOwner = $dstMount->getShare()->getShareOwner(); + $newPermissions = $share->getPermissions() & $dstMount->getShare()->getPermissions(); + } else { + $newOwner = $userFolder->getOwner()->getUID(); + $newPermissions = $share->getPermissions(); + } + $share->setShareOwner($newOwner); - $share->setPermissions($share->getPermissions() & $dstMount->getShare()->getPermissions()); + $share->setPermissions($newPermissions); $shareManager->updateShare($share); } } diff --git a/apps/files_sharing/lib/ViewOnly.php b/apps/files_sharing/lib/ViewOnly.php new file mode 100644 index 00000000000..26e8e43a871 --- /dev/null +++ b/apps/files_sharing/lib/ViewOnly.php @@ -0,0 +1,121 @@ +<?php +/** + * @author Piotr Mrowczynski piotr@owncloud.com + * + * @copyright Copyright (c) 2019, ownCloud GmbH + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Files_Sharing; + +use OCP\Files\File; +use OCP\Files\Folder; +use OCP\Files\Node; +use OCP\Files\NotFoundException; + +/** + * Handles restricting for download of files + */ +class ViewOnly { + + /** @var Folder */ + private $userFolder; + + public function __construct(Folder $userFolder) { + $this->userFolder = $userFolder; + } + + /** + * @param string[] $pathsToCheck + * @return bool + */ + public function check(array $pathsToCheck): bool { + // If any of elements cannot be downloaded, prevent whole download + foreach ($pathsToCheck as $file) { + try { + $info = $this->userFolder->get($file); + if ($info instanceof File) { + // access to filecache is expensive in the loop + if (!$this->checkFileInfo($info)) { + return false; + } + } elseif ($info instanceof Folder) { + // get directory content is rather cheap query + if (!$this->dirRecursiveCheck($info)) { + return false; + } + } + } catch (NotFoundException $e) { + continue; + } + } + return true; + } + + /** + * @param Folder $dirInfo + * @return bool + * @throws NotFoundException + */ + private function dirRecursiveCheck(Folder $dirInfo): bool { + if (!$this->checkFileInfo($dirInfo)) { + return false; + } + // If any of elements cannot be downloaded, prevent whole download + $files = $dirInfo->getDirectoryListing(); + foreach ($files as $file) { + if ($file instanceof File) { + if (!$this->checkFileInfo($file)) { + return false; + } + } elseif ($file instanceof Folder) { + return $this->dirRecursiveCheck($file); + } + } + + return true; + } + + /** + * @param Node $fileInfo + * @return bool + * @throws NotFoundException + */ + private function checkFileInfo(Node $fileInfo): bool { + // Restrict view-only to nodes which are shared + $storage = $fileInfo->getStorage(); + if (!$storage->instanceOfStorage(SharedStorage::class)) { + return true; + } + + // Extract extra permissions + /** @var \OCA\Files_Sharing\SharedStorage $storage */ + $share = $storage->getShare(); + + $canDownload = true; + + // Check if read-only and on whether permission can download is both set and disabled. + $attributes = $share->getAttributes(); + if ($attributes !== null) { + $canDownload = $attributes->getAttribute('permissions', 'download'); + } + + if ($canDownload !== null && !$canDownload) { + return false; + } + return true; + } +} diff --git a/apps/files_sharing/list.php b/apps/files_sharing/list.php index a4667ad17ad..f43aed21427 100644 --- a/apps/files_sharing/list.php +++ b/apps/files_sharing/list.php @@ -23,18 +23,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ -use OCA\Files\Event\LoadAdditionalScriptsEvent; -use OCA\Files\Event\LoadSidebar; -use OCA\Viewer\Event\LoadViewer; -use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as ResourcesLoadAdditionalScriptsEvent; -use OCP\EventDispatcher\IEventDispatcher; use OCP\IConfig; use OCP\IUserSession; use OCP\Server; $config = Server::get(IConfig::class); $userSession = Server::get(IUserSession::class); -$eventDispatcher = Server::get(IEventDispatcher::class); $showgridview = $config->getUserValue($userSession->getUser()->getUID(), 'files', 'show_grid', false); @@ -43,14 +37,4 @@ $tmpl = new OCP\Template('files_sharing', 'list', ''); // gridview not available for ie $tmpl->assign('showgridview', $showgridview); -// fire script events -$eventDispatcher->dispatchTyped(new ResourcesLoadAdditionalScriptsEvent()); -$eventDispatcher->dispatchTyped(new LoadAdditionalScriptsEvent()); -$eventDispatcher->dispatchTyped(new LoadSidebar()); - -// Load Viewer scripts -if (class_exists(LoadViewer::class)) { - $eventDispatcher->dispatchTyped(new LoadViewer()); -} - $tmpl->printPage(); diff --git a/apps/files_sharing/src/collaborationresources.js b/apps/files_sharing/src/collaborationresources.js index c1849939057..1e6eda02a93 100644 --- a/apps/files_sharing/src/collaborationresources.js +++ b/apps/files_sharing/src/collaborationresources.js @@ -23,7 +23,7 @@ import Vue from 'vue' import Vuex from 'vuex' -import PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu' +import NcPopoverMenu from '@nextcloud/vue/dist/Components/NcPopoverMenu' import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' import ClickOutside from 'vue-click-outside' @@ -33,7 +33,7 @@ Vue.prototype.t = t Tooltip.options.defaultHtml = false // eslint-disable-next-line vue/match-component-file-name -Vue.component('PopoverMenu', PopoverMenu) +Vue.component('NcPopoverMenu', NcPopoverMenu) Vue.directive('ClickOutside', ClickOutside) Vue.directive('Tooltip', Tooltip) Vue.use(Vuex) diff --git a/apps/files_sharing/src/components/SharePermissionsEditor.vue b/apps/files_sharing/src/components/SharePermissionsEditor.vue index 1dfab4112b3..c5e652b2cda 100644 --- a/apps/files_sharing/src/components/SharePermissionsEditor.vue +++ b/apps/files_sharing/src/components/SharePermissionsEditor.vue @@ -21,90 +21,92 @@ --> <template> - <span> - <!-- file --> - <ActionCheckbox v-if="!isFolder" - :checked="shareHasPermissions(atomicPermissions.UPDATE)" - :disabled="saving" - @update:checked="toggleSharePermissions(atomicPermissions.UPDATE)"> - {{ t('files_sharing', 'Allow editing') }} - </ActionCheckbox> + <li> + <ul> + <!-- file --> + <NcActionCheckbox v-if="!isFolder" + :checked="shareHasPermissions(atomicPermissions.UPDATE)" + :disabled="saving" + @update:checked="toggleSharePermissions(atomicPermissions.UPDATE)"> + {{ t('files_sharing', 'Allow editing') }} + </NcActionCheckbox> - <!-- folder --> - <template v-if="isFolder && fileHasCreatePermission && config.isPublicUploadEnabled"> - <template v-if="!showCustomPermissionsForm"> - <ActionRadio :checked="sharePermissionEqual(bundledPermissions.READ_ONLY)" - :value="bundledPermissions.READ_ONLY" - :name="randomFormName" - :disabled="saving" - @change="setSharePermissions(bundledPermissions.READ_ONLY)"> - {{ t('files_sharing', 'Read only') }} - </ActionRadio> + <!-- folder --> + <template v-if="isFolder && fileHasCreatePermission && config.isPublicUploadEnabled"> + <template v-if="!showCustomPermissionsForm"> + <NcActionRadio :checked="sharePermissionEqual(bundledPermissions.READ_ONLY)" + :value="bundledPermissions.READ_ONLY" + :name="randomFormName" + :disabled="saving" + @change="setSharePermissions(bundledPermissions.READ_ONLY)"> + {{ t('files_sharing', 'Read only') }} + </NcActionRadio> - <ActionRadio :checked="sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)" - :value="bundledPermissions.UPLOAD_AND_UPDATE" - :disabled="saving" - :name="randomFormName" - @change="setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)"> - {{ t('files_sharing', 'Allow upload and editing') }} - </ActionRadio> - <ActionRadio :checked="sharePermissionEqual(bundledPermissions.FILE_DROP)" - :value="bundledPermissions.FILE_DROP" - :disabled="saving" - :name="randomFormName" - class="sharing-entry__action--public-upload" - @change="setSharePermissions(bundledPermissions.FILE_DROP)"> - {{ t('files_sharing', 'File drop (upload only)') }} - </ActionRadio> + <NcActionRadio :checked="sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)" + :value="bundledPermissions.UPLOAD_AND_UPDATE" + :disabled="saving" + :name="randomFormName" + @change="setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)"> + {{ t('files_sharing', 'Allow upload and editing') }} + </NcActionRadio> + <NcActionRadio :checked="sharePermissionEqual(bundledPermissions.FILE_DROP)" + :value="bundledPermissions.FILE_DROP" + :disabled="saving" + :name="randomFormName" + class="sharing-entry__action--public-upload" + @change="setSharePermissions(bundledPermissions.FILE_DROP)"> + {{ t('files_sharing', 'File drop (upload only)') }} + </NcActionRadio> - <!-- custom permissions button --> - <ActionButton :title="t('files_sharing', 'Custom permissions')" - @click="showCustomPermissionsForm = true"> - <template #icon> - <Tune /> - </template> - {{ sharePermissionsIsBundle ? "" : sharePermissionsSummary }} - </ActionButton> - </template> + <!-- custom permissions button --> + <NcActionButton :title="t('files_sharing', 'Custom permissions')" + @click="showCustomPermissionsForm = true"> + <template #icon> + <Tune /> + </template> + {{ sharePermissionsIsBundle ? "" : sharePermissionsSummary }} + </NcActionButton> + </template> - <!-- custom permissions --> - <span v-else :class="{error: !sharePermissionsSetIsValid}"> - <ActionCheckbox :checked="shareHasPermissions(atomicPermissions.READ)" - :disabled="saving || !canToggleSharePermissions(atomicPermissions.READ)" - @update:checked="toggleSharePermissions(atomicPermissions.READ)"> - {{ t('files_sharing', 'Read') }} - </ActionCheckbox> - <ActionCheckbox :checked="shareHasPermissions(atomicPermissions.CREATE)" - :disabled="saving || !canToggleSharePermissions(atomicPermissions.CREATE)" - @update:checked="toggleSharePermissions(atomicPermissions.CREATE)"> - {{ t('files_sharing', 'Upload') }} - </ActionCheckbox> - <ActionCheckbox :checked="shareHasPermissions(atomicPermissions.UPDATE)" - :disabled="saving || !canToggleSharePermissions(atomicPermissions.UPDATE)" - @update:checked="toggleSharePermissions(atomicPermissions.UPDATE)"> - {{ t('files_sharing', 'Edit') }} - </ActionCheckbox> - <ActionCheckbox :checked="shareHasPermissions(atomicPermissions.DELETE)" - :disabled="saving || !canToggleSharePermissions(atomicPermissions.DELETE)" - @update:checked="toggleSharePermissions(atomicPermissions.DELETE)"> - {{ t('files_sharing', 'Delete') }} - </ActionCheckbox> + <!-- custom permissions --> + <span v-else :class="{error: !sharePermissionsSetIsValid}"> + <NcActionCheckbox :checked="shareHasPermissions(atomicPermissions.READ)" + :disabled="saving || !canToggleSharePermissions(atomicPermissions.READ)" + @update:checked="toggleSharePermissions(atomicPermissions.READ)"> + {{ t('files_sharing', 'Read') }} + </NcActionCheckbox> + <NcActionCheckbox :checked="shareHasPermissions(atomicPermissions.CREATE)" + :disabled="saving || !canToggleSharePermissions(atomicPermissions.CREATE)" + @update:checked="toggleSharePermissions(atomicPermissions.CREATE)"> + {{ t('files_sharing', 'Upload') }} + </NcActionCheckbox> + <NcActionCheckbox :checked="shareHasPermissions(atomicPermissions.UPDATE)" + :disabled="saving || !canToggleSharePermissions(atomicPermissions.UPDATE)" + @update:checked="toggleSharePermissions(atomicPermissions.UPDATE)"> + {{ t('files_sharing', 'Edit') }} + </NcActionCheckbox> + <NcActionCheckbox :checked="shareHasPermissions(atomicPermissions.DELETE)" + :disabled="saving || !canToggleSharePermissions(atomicPermissions.DELETE)" + @update:checked="toggleSharePermissions(atomicPermissions.DELETE)"> + {{ t('files_sharing', 'Delete') }} + </NcActionCheckbox> - <ActionButton @click="showCustomPermissionsForm = false"> - <template #icon> - <ChevronLeft /> - </template> - {{ t('files_sharing', 'Bundled permissions') }} - </ActionButton> - </span> - </template> - </span> + <NcActionButton @click="showCustomPermissionsForm = false"> + <template #icon> + <ChevronLeft /> + </template> + {{ t('files_sharing', 'Bundled permissions') }} + </NcActionButton> + </span> + </template> + </ul> + </li> </template> <script> -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio' -import ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcActionRadio from '@nextcloud/vue/dist/Components/NcActionRadio' +import NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox' import SharesMixin from '../mixins/SharesMixin' import { @@ -123,9 +125,9 @@ export default { name: 'SharePermissionsEditor', components: { - ActionButton, - ActionCheckbox, - ActionRadio, + NcActionButton, + NcActionCheckbox, + NcActionRadio, Tune, ChevronLeft, }, diff --git a/apps/files_sharing/src/components/SharingEntry.vue b/apps/files_sharing/src/components/SharingEntry.vue index 2d29aaf1dc6..c77bdd4292a 100644 --- a/apps/files_sharing/src/components/SharingEntry.vue +++ b/apps/files_sharing/src/components/SharingEntry.vue @@ -22,7 +22,7 @@ <template> <li class="sharing-entry"> - <Avatar class="sharing-entry__avatar" + <NcAvatar class="sharing-entry__avatar" :is-no-user="share.type !== SHARE_TYPES.SHARE_TYPE_USER" :user="share.shareWith" :display-name="share.shareWithDisplayName" @@ -33,60 +33,67 @@ v-tooltip.auto="tooltip" :href="share.shareWithLink" class="sharing-entry__desc"> - <h5>{{ title }}<span v-if="!isUnique" class="sharing-entry__desc-unique"> ({{ share.shareWithDisplayNameUnique }})</span></h5> + <span>{{ title }}<span v-if="!isUnique" class="sharing-entry__desc-unique"> ({{ share.shareWithDisplayNameUnique }})</span></span> <p v-if="hasStatus"> <span>{{ share.status.icon || '' }}</span> <span>{{ share.status.message || '' }}</span> </p> </component> - <Actions menu-align="right" + <NcActions menu-align="right" class="sharing-entry__actions" @close="onMenuClose"> <template v-if="share.canEdit"> <!-- edit permission --> - <ActionCheckbox ref="canEdit" + <NcActionCheckbox ref="canEdit" :checked.sync="canEdit" :value="permissionsEdit" :disabled="saving || !canSetEdit"> {{ t('files_sharing', 'Allow editing') }} - </ActionCheckbox> + </NcActionCheckbox> <!-- create permission --> - <ActionCheckbox v-if="isFolder" + <NcActionCheckbox v-if="isFolder" ref="canCreate" :checked.sync="canCreate" :value="permissionsCreate" :disabled="saving || !canSetCreate"> {{ t('files_sharing', 'Allow creating') }} - </ActionCheckbox> + </NcActionCheckbox> <!-- delete permission --> - <ActionCheckbox v-if="isFolder" + <NcActionCheckbox v-if="isFolder" ref="canDelete" :checked.sync="canDelete" :value="permissionsDelete" :disabled="saving || !canSetDelete"> {{ t('files_sharing', 'Allow deleting') }} - </ActionCheckbox> + </NcActionCheckbox> <!-- reshare permission --> - <ActionCheckbox v-if="config.isResharingAllowed" + <NcActionCheckbox v-if="config.isResharingAllowed" ref="canReshare" :checked.sync="canReshare" :value="permissionsShare" :disabled="saving || !canSetReshare"> {{ t('files_sharing', 'Allow resharing') }} - </ActionCheckbox> + </NcActionCheckbox> + + <NcActionCheckbox ref="canDownload" + :checked.sync="canDownload" + v-if="isSetDownloadButtonVisible" + :disabled="saving || !canSetDownload"> + {{ allowDownloadText }} + </NcActionCheckbox> <!-- expiration date --> - <ActionCheckbox :checked.sync="hasExpirationDate" + <NcActionCheckbox :checked.sync="hasExpirationDate" :disabled="config.isDefaultInternalExpireDateEnforced || saving" @uncheck="onExpirationDisable"> {{ config.isDefaultInternalExpireDateEnforced ? t('files_sharing', 'Expiration date enforced') : t('files_sharing', 'Set expiration date') }} - </ActionCheckbox> - <ActionInput v-if="hasExpirationDate" + </NcActionCheckbox> + <NcActionInput v-if="hasExpirationDate" ref="expireDate" v-tooltip.auto="{ content: errors.expireDate, @@ -103,16 +110,16 @@ :disabled-date="disabledDate" @update:value="onExpirationChange"> {{ t('files_sharing', 'Enter a date') }} - </ActionInput> + </NcActionInput> <!-- note --> <template v-if="canHaveNote"> - <ActionCheckbox :checked.sync="hasNote" + <NcActionCheckbox :checked.sync="hasNote" :disabled="saving" @uncheck="queueUpdate('note')"> {{ t('files_sharing', 'Note to recipient') }} - </ActionCheckbox> - <ActionTextEditable v-if="hasNote" + </NcActionCheckbox> + <NcActionTextEditable v-if="hasNote" ref="note" v-tooltip.auto="{ content: errors.note, @@ -128,23 +135,23 @@ </template> </template> - <ActionButton v-if="share.canDelete" + <NcActionButton v-if="share.canDelete" icon="icon-close" :disabled="saving" @click.prevent="onDelete"> {{ t('files_sharing', 'Unshare') }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> </li> </template> <script> -import Avatar from '@nextcloud/vue/dist/Components/Avatar' -import Actions from '@nextcloud/vue/dist/Components/Actions' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox' -import ActionInput from '@nextcloud/vue/dist/Components/ActionInput' -import ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable' +import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox' +import NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput' +import NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable' import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' import SharesMixin from '../mixins/SharesMixin' @@ -153,12 +160,12 @@ export default { name: 'SharingEntry', components: { - Actions, - ActionButton, - ActionCheckbox, - ActionInput, - ActionTextEditable, - Avatar, + NcActions, + NcActionButton, + NcActionCheckbox, + NcActionInput, + NcActionTextEditable, + NcAvatar, }, directives: { @@ -272,6 +279,18 @@ export default { }, /** + * Can the sharer set whether the sharee can download the file ? + * + * @return {boolean} + */ + canSetDownload() { + // If the owner revoked the permission after the resharer granted it + // the share still has the permission, and the resharer is still + // allowed to revoke it too (but not to grant it again). + return (this.fileInfo.canDownload() || this.canDownload) + }, + + /** * Can the sharee edit the shared file ? */ canEdit: { @@ -320,6 +339,18 @@ export default { }, /** + * Can the sharee download files or only view them ? + */ + canDownload: { + get() { + return this.share.hasDownloadPermission + }, + set(checked) { + this.updatePermissions({ isDownloadChecked: checked }) + }, + }, + + /** * Is this share readable * Needed for some federated shares that might have been added from file drop links */ @@ -377,10 +408,42 @@ export default { return (typeof this.share.status === 'object' && !Array.isArray(this.share.status)) }, + /** + * @return {string} + */ + allowDownloadText() { + return t('files_sharing', 'Allow download') + }, + + /** + * @return {boolean} + */ + isSetDownloadButtonVisible() { + const allowedMimetypes = [ + // Office documents + 'application/msword', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'application/vnd.ms-powerpoint', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'application/vnd.ms-excel', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'application/vnd.oasis.opendocument.text', + 'application/vnd.oasis.opendocument.spreadsheet', + 'application/vnd.oasis.opendocument.presentation', + ] + + return this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype) + }, }, methods: { - updatePermissions({ isEditChecked = this.canEdit, isCreateChecked = this.canCreate, isDeleteChecked = this.canDelete, isReshareChecked = this.canReshare } = {}) { + updatePermissions({ + isEditChecked = this.canEdit, + isCreateChecked = this.canCreate, + isDeleteChecked = this.canDelete, + isReshareChecked = this.canReshare, + isDownloadChecked = this.canDownload, + } = {}) { // calc permissions if checked const permissions = 0 | (this.hasRead ? this.permissionsRead : 0) @@ -390,7 +453,10 @@ export default { | (isReshareChecked ? this.permissionsShare : 0) this.share.permissions = permissions - this.queueUpdate('permissions') + if (this.share.hasDownloadPermission !== isDownloadChecked) { + this.share.hasDownloadPermission = isDownloadChecked + } + this.queueUpdate('permissions', 'attributes') }, /** diff --git a/apps/files_sharing/src/components/SharingEntryInherited.vue b/apps/files_sharing/src/components/SharingEntryInherited.vue index 72a513cfb1f..ff930f1aec8 100644 --- a/apps/files_sharing/src/components/SharingEntryInherited.vue +++ b/apps/files_sharing/src/components/SharingEntryInherited.vue @@ -25,34 +25,34 @@ class="sharing-entry__inherited" :title="share.shareWithDisplayName"> <template #avatar> - <Avatar :user="share.shareWith" + <NcAvatar :user="share.shareWith" :display-name="share.shareWithDisplayName" class="sharing-entry__avatar" tooltip-message="" /> </template> - <ActionText icon="icon-user"> + <NcActionText icon="icon-user"> {{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }} - </ActionText> - <ActionLink v-if="share.viaPath && share.viaFileid" + </NcActionText> + <NcActionLink v-if="share.viaPath && share.viaFileid" icon="icon-folder" :href="viaFileTargetUrl"> {{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }} - </ActionLink> - <ActionButton v-if="share.canDelete" + </NcActionLink> + <NcActionButton v-if="share.canDelete" icon="icon-close" @click.prevent="onDelete"> {{ t('files_sharing', 'Unshare') }} - </actionbutton> + </NcActionButton> </SharingEntrySimple> </template> <script> import { generateUrl } from '@nextcloud/router' import { basename } from '@nextcloud/paths' -import Avatar from '@nextcloud/vue/dist/Components/Avatar' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import ActionLink from '@nextcloud/vue/dist/Components/ActionLink' -import ActionText from '@nextcloud/vue/dist/Components/ActionText' +import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink' +import NcActionText from '@nextcloud/vue/dist/Components/NcActionText' // eslint-disable-next-line no-unused-vars import Share from '../models/Share' @@ -63,10 +63,10 @@ export default { name: 'SharingEntryInherited', components: { - ActionButton, - ActionLink, - ActionText, - Avatar, + NcActionButton, + NcActionLink, + NcActionText, + NcAvatar, SharingEntrySimple, }, diff --git a/apps/files_sharing/src/components/SharingEntryInternal.vue b/apps/files_sharing/src/components/SharingEntryInternal.vue index 73b86d26180..468275aac2c 100644 --- a/apps/files_sharing/src/components/SharingEntryInternal.vue +++ b/apps/files_sharing/src/components/SharingEntryInternal.vue @@ -1,32 +1,35 @@ <template> - <SharingEntrySimple class="sharing-entry__internal" - :title="t('files_sharing', 'Internal link')" - :subtitle="internalLinkSubtitle"> - <template #avatar> - <div class="avatar-external icon-external-white" /> - </template> + <ul> + <SharingEntrySimple class="sharing-entry__internal" + :title="t('files_sharing', 'Internal link')" + :subtitle="internalLinkSubtitle"> + <template #avatar> + <div class="avatar-external icon-external-white" /> + </template> - <ActionLink ref="copyButton" - :href="internalLink" - target="_blank" - :icon="copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'" - @click.prevent="copyLink"> - {{ clipboardTooltip }} - </ActionLink> - </SharingEntrySimple> + <NcActionLink ref="copyButton" + :href="internalLink" + :aria-label="t('files_sharing', 'Copy internal link to clipboard')" + target="_blank" + :icon="copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'" + @click.prevent="copyLink"> + {{ clipboardTooltip }} + </NcActionLink> + </SharingEntrySimple> + </ul> </template> <script> import { generateUrl } from '@nextcloud/router' -import ActionLink from '@nextcloud/vue/dist/Components/ActionLink' +import NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink' import SharingEntrySimple from './SharingEntrySimple' export default { name: 'SharingEntryInternal', components: { - ActionLink, + NcActionLink, SharingEntrySimple, }, diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue index 638cdf485b0..07770e5a87c 100644 --- a/apps/files_sharing/src/components/SharingEntryLink.vue +++ b/apps/files_sharing/src/components/SharingEntryLink.vue @@ -22,58 +22,59 @@ <template> <li :class="{'sharing-entry--share': share}" class="sharing-entry sharing-entry__link"> - <Avatar :is-no-user="true" + <NcAvatar :is-no-user="true" :icon-class="isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'" class="sharing-entry__avatar" /> <div class="sharing-entry__desc"> - <h5 :title="title"> + <span class="sharing-entry__title" :title="title"> {{ title }} - </h5> + </span> <p v-if="subtitle"> {{ subtitle }} </p> </div> <!-- clipboard --> - <Actions v-if="share && !isEmailShareType && share.token" + <NcActions v-if="share && !isEmailShareType && share.token" ref="copyButton" class="sharing-entry__copy"> - <ActionLink :href="shareLink" + <NcActionLink :href="shareLink" target="_blank" + :aria-label="t('files_sharing', 'Copy public link to clipboard')" :icon="copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'" @click.stop.prevent="copyLink"> {{ clipboardTooltip }} - </ActionLink> - </Actions> + </NcActionLink> + </NcActions> <!-- pending actions --> - <Actions v-if="!pending && (pendingPassword || pendingExpirationDate)" + <NcActions v-if="!pending && (pendingPassword || pendingExpirationDate)" class="sharing-entry__actions" menu-align="right" :open.sync="open" @close="onNewLinkShare"> <!-- pending data menu --> - <ActionText v-if="errors.pending" + <NcActionText v-if="errors.pending" icon="icon-error" :class="{ error: errors.pending}"> {{ errors.pending }} - </ActionText> - <ActionText v-else icon="icon-info"> + </NcActionText> + <NcActionText v-else icon="icon-info"> {{ t('files_sharing', 'Please enter the following required information before creating the share') }} - </ActionText> + </NcActionText> <!-- password --> - <ActionText v-if="pendingPassword" icon="icon-password"> + <NcActionText v-if="pendingPassword" icon="icon-password"> {{ t('files_sharing', 'Password protection (enforced)') }} - </ActionText> - <ActionCheckbox v-else-if="config.enableLinkPasswordByDefault" + </NcActionText> + <NcActionCheckbox v-else-if="config.enableLinkPasswordByDefault" :checked.sync="isPasswordProtected" :disabled="config.enforcePasswordForPublicLink || saving" class="share-link-password-checkbox" @uncheck="onPasswordDisable"> {{ t('files_sharing', 'Password protection') }} - </ActionCheckbox> - <ActionInput v-if="pendingPassword || share.password" + </NcActionCheckbox> + <NcActionInput v-if="pendingPassword || share.password" v-tooltip.auto="{ content: errors.password, show: errors.password, @@ -89,13 +90,13 @@ autocomplete="new-password" @submit="onNewLinkShare"> {{ t('files_sharing', 'Enter a password') }} - </ActionInput> + </NcActionInput> <!-- expiration date --> - <ActionText v-if="pendingExpirationDate" icon="icon-calendar-dark"> + <NcActionText v-if="pendingExpirationDate" icon="icon-calendar-dark"> {{ t('files_sharing', 'Expiration date (enforced)') }} - </ActionText> - <ActionInput v-if="pendingExpirationDate" + </NcActionText> + <NcActionInput v-if="pendingExpirationDate" v-model="share.expireDate" v-tooltip.auto="{ content: errors.expireDate, @@ -114,18 +115,18 @@ <!-- let's not submit when picked, the user might want to still edit or copy the password --> {{ t('files_sharing', 'Enter a date') }} - </ActionInput> + </NcActionInput> - <ActionButton icon="icon-checkmark" @click.prevent.stop="onNewLinkShare"> + <NcActionButton icon="icon-checkmark" @click.prevent.stop="onNewLinkShare"> {{ t('files_sharing', 'Create share') }} - </ActionButton> - <ActionButton icon="icon-close" @click.prevent.stop="onCancel"> + </NcActionButton> + <NcActionButton icon="icon-close" @click.prevent.stop="onCancel"> {{ t('files_sharing', 'Cancel') }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> <!-- actions --> - <Actions v-else-if="!loading" + <NcActions v-else-if="!loading" class="sharing-entry__actions" menu-align="right" :open.sync="open" @@ -133,7 +134,7 @@ <template v-if="share"> <template v-if="share.canEdit && canReshare"> <!-- Custom Label --> - <ActionInput ref="label" + <NcActionInput ref="label" v-tooltip.auto="{ content: errors.label, show: errors.label, @@ -149,30 +150,30 @@ @update:value="onLabelChange" @submit="onLabelSubmit"> {{ t('files_sharing', 'Share label') }} - </ActionInput> + </NcActionInput> <SharePermissionsEditor :can-reshare="canReshare" :share.sync="share" :file-info="fileInfo" /> - <ActionSeparator /> + <NcActionSeparator /> - <ActionCheckbox :checked.sync="share.hideDownload" - :disabled="saving" + <NcActionCheckbox :checked.sync="share.hideDownload" + :disabled="saving || canChangeHideDownload" @change="queueUpdate('hideDownload')"> {{ t('files_sharing', 'Hide download') }} - </ActionCheckbox> + </NcActionCheckbox> <!-- password --> - <ActionCheckbox :checked.sync="isPasswordProtected" + <NcActionCheckbox :checked.sync="isPasswordProtected" :disabled="config.enforcePasswordForPublicLink || saving" class="share-link-password-checkbox" @uncheck="onPasswordDisable"> {{ config.enforcePasswordForPublicLink ? t('files_sharing', 'Password protection (enforced)') : t('files_sharing', 'Password protect') }} - </ActionCheckbox> - <ActionInput v-if="isPasswordProtected" + </NcActionCheckbox> + <NcActionInput v-if="isPasswordProtected" ref="password" v-tooltip.auto="{ content: errors.password, @@ -191,33 +192,33 @@ @update:value="onPasswordChange" @submit="onPasswordSubmit"> {{ t('files_sharing', 'Enter a password') }} - </ActionInput> - <ActionText v-if="isEmailShareType && passwordExpirationTime" icon="icon-info"> + </NcActionInput> + <NcActionText v-if="isEmailShareType && passwordExpirationTime" icon="icon-info"> {{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }} - </ActionText> - <ActionText v-else-if="isEmailShareType && passwordExpirationTime !== null" icon="icon-error"> + </NcActionText> + <NcActionText v-else-if="isEmailShareType && passwordExpirationTime !== null" icon="icon-error"> {{ t('files_sharing', 'Password expired') }} - </ActionText> + </NcActionText> <!-- password protected by Talk --> - <ActionCheckbox v-if="isPasswordProtectedByTalkAvailable" + <NcActionCheckbox v-if="isPasswordProtectedByTalkAvailable" :checked.sync="isPasswordProtectedByTalk" :disabled="!canTogglePasswordProtectedByTalkAvailable || saving" class="share-link-password-talk-checkbox" @change="onPasswordProtectedByTalkChange"> {{ t('files_sharing', 'Video verification') }} - </ActionCheckbox> + </NcActionCheckbox> <!-- expiration date --> - <ActionCheckbox :checked.sync="hasExpirationDate" + <NcActionCheckbox :checked.sync="hasExpirationDate" :disabled="config.isDefaultExpireDateEnforced || saving" class="share-link-expire-date-checkbox" @uncheck="onExpirationDisable"> {{ config.isDefaultExpireDateEnforced ? t('files_sharing', 'Expiration date (enforced)') : t('files_sharing', 'Set expiration date') }} - </ActionCheckbox> - <ActionInput v-if="hasExpirationDate" + </NcActionCheckbox> + <NcActionInput v-if="hasExpirationDate" ref="expireDate" v-tooltip.auto="{ content: errors.expireDate, @@ -236,15 +237,15 @@ :disabled-date="disabledDate" @update:value="onExpirationChange"> {{ t('files_sharing', 'Enter a date') }} - </ActionInput> + </NcActionInput> <!-- note --> - <ActionCheckbox :checked.sync="hasNote" + <NcActionCheckbox :checked.sync="hasNote" :disabled="saving" @uncheck="queueUpdate('note')"> {{ t('files_sharing', 'Note to recipient') }} - </ActionCheckbox> - <ActionTextEditable v-if="hasNote" + </NcActionCheckbox> + <NcActionTextEditable v-if="hasNote" ref="note" v-tooltip.auto="{ content: errors.note, @@ -261,7 +262,7 @@ @submit="onNoteSubmit" /> </template> - <ActionSeparator /> + <NcActionSeparator /> <!-- external actions --> <ExternalShareAction v-for="action in externalLinkActions" @@ -272,36 +273,36 @@ :share="share" /> <!-- external legacy sharing via url (social...) --> - <ActionLink v-for="({icon, url, name}, index) in externalLegacyLinkActions" + <NcActionLink v-for="({icon, url, name}, index) in externalLegacyLinkActions" :key="index" :href="url(shareLink)" :icon="icon" target="_blank"> {{ name }} - </ActionLink> + </NcActionLink> - <ActionButton v-if="share.canDelete" + <NcActionButton v-if="share.canDelete" icon="icon-close" :disabled="saving" @click.prevent="onDelete"> {{ t('files_sharing', 'Unshare') }} - </ActionButton> - <ActionButton v-if="!isEmailShareType && canReshare" + </NcActionButton> + <NcActionButton v-if="!isEmailShareType && canReshare" class="new-share-link" icon="icon-add" @click.prevent.stop="onNewLinkShare"> {{ t('files_sharing', 'Add another link') }} - </ActionButton> + </NcActionButton> </template> <!-- Create new share --> - <ActionButton v-else-if="canReshare" + <NcActionButton v-else-if="canReshare" class="new-share-link" :icon="loading ? 'icon-loading-small' : 'icon-add'" @click.prevent.stop="onNewLinkShare"> {{ t('files_sharing', 'Create a new share link') }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> <!-- loading indicator to replace the menu --> <div v-else class="icon-loading-small sharing-entry__loading" /> @@ -313,15 +314,15 @@ import { generateUrl } from '@nextcloud/router' import { Type as ShareTypes } from '@nextcloud/sharing' import Vue from 'vue' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox' -import ActionInput from '@nextcloud/vue/dist/Components/ActionInput' -import ActionLink from '@nextcloud/vue/dist/Components/ActionLink' -import ActionText from '@nextcloud/vue/dist/Components/ActionText' -import ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator' -import ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable' -import Actions from '@nextcloud/vue/dist/Components/Actions' -import Avatar from '@nextcloud/vue/dist/Components/Avatar' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox' +import NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput' +import NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink' +import NcActionText from '@nextcloud/vue/dist/Components/NcActionText' +import NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator' +import NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' import ExternalShareAction from './ExternalShareAction' @@ -334,15 +335,15 @@ export default { name: 'SharingEntryLink', components: { - Actions, - ActionButton, - ActionCheckbox, - ActionInput, - ActionLink, - ActionText, - ActionTextEditable, - ActionSeparator, - Avatar, + NcActions, + NcActionButton, + NcActionCheckbox, + NcActionInput, + NcActionLink, + NcActionText, + NcActionTextEditable, + NcActionSeparator, + NcAvatar, ExternalShareAction, SharePermissionsEditor, }, @@ -606,6 +607,12 @@ export default { isPasswordPolicyEnabled() { return typeof this.config.passwordPolicy === 'object' }, + + canChangeHideDownload() { + const hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false + + return this.fileInfo.shareAttributes.some(hasDisabledDownload) + }, }, methods: { @@ -696,6 +703,7 @@ export default { shareType: ShareTypes.SHARE_TYPE_LINK, password: share.password, expireDate: share.expireDate, + attributes: JSON.stringify(this.fileInfo.shareAttributes), // we do not allow setting the publicUpload // before the share creation. // Todo: We also need to fix the createShare method in @@ -866,7 +874,6 @@ export default { this.$emit('remove:share', this.share) }, }, - } </script> @@ -883,15 +890,15 @@ export default { line-height: 1.2em; overflow: hidden; - h5 { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - } p { color: var(--color-text-maxcontrast); } } + &__title { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } &:not(.sharing-entry--share) &__actions { .new-share-link { diff --git a/apps/files_sharing/src/components/SharingEntrySimple.vue b/apps/files_sharing/src/components/SharingEntrySimple.vue index 8627c87f97a..8b495b0743c 100644 --- a/apps/files_sharing/src/components/SharingEntrySimple.vue +++ b/apps/files_sharing/src/components/SharingEntrySimple.vue @@ -24,29 +24,29 @@ <li class="sharing-entry"> <slot name="avatar" /> <div v-tooltip="tooltip" class="sharing-entry__desc"> - <h5>{{ title }}</h5> + <span class="sharing-entry__title">{{ title }}</span> <p v-if="subtitle"> {{ subtitle }} </p> </div> - <Actions v-if="$slots['default']" + <NcActions v-if="$slots['default']" class="sharing-entry__actions" menu-align="right" :aria-expanded="ariaExpandedValue"> <slot /> - </Actions> + </NcActions> </li> </template> <script> -import Actions from '@nextcloud/vue/dist/Components/Actions' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' export default { name: 'SharingEntrySimple', components: { - Actions, + NcActions, }, directives: { @@ -99,16 +99,16 @@ export default { position: relative; flex: 1 1; min-width: 0; - h5 { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - max-width: inherit; - } p { color: var(--color-text-maxcontrast); } } + &__title { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + max-width: inherit; + } &__actions { margin-left: auto !important; } diff --git a/apps/files_sharing/src/components/SharingInput.vue b/apps/files_sharing/src/components/SharingInput.vue index 9cb40697636..905de91bff1 100644 --- a/apps/files_sharing/src/components/SharingInput.vue +++ b/apps/files_sharing/src/components/SharingInput.vue @@ -21,7 +21,7 @@ --> <template> - <Multiselect ref="multiselect" + <NcMultiselect ref="multiselect" class="sharing-input" :clear-on-select="true" :disabled="!canReshare" @@ -45,7 +45,7 @@ <template #noResult> {{ noResultText }} </template> - </Multiselect> + </NcMultiselect> </template> <script> @@ -53,7 +53,7 @@ import { generateOcsUrl } from '@nextcloud/router' import { getCurrentUser } from '@nextcloud/auth' import axios from '@nextcloud/axios' import debounce from 'debounce' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import Config from '../services/ConfigService' import GeneratePassword from '../utils/GeneratePassword' @@ -65,7 +65,7 @@ export default { name: 'SharingInput', components: { - Multiselect, + NcMultiselect, }, mixins: [ShareTypes, ShareRequests], @@ -478,6 +478,7 @@ export default { shareWith: value.shareWith, password, permissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions, + attributes: JSON.stringify(this.fileInfo.shareAttributes), }) // If we had a password, we need to show it to the user as it was generated diff --git a/apps/files_sharing/src/mixins/ShareRequests.js b/apps/files_sharing/src/mixins/ShareRequests.js index e2668c15d65..9eaad8c4161 100644 --- a/apps/files_sharing/src/mixins/ShareRequests.js +++ b/apps/files_sharing/src/mixins/ShareRequests.js @@ -47,12 +47,13 @@ export default { * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation * @param {string} [data.expireDate=''] expire the shareautomatically after * @param {string} [data.label=''] custom label + * @param {string} [data.attributes=null] Share attributes encoded as json * @return {Share} the new share * @throws {Error} */ - async createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) { + async createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes }) { try { - const request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) + const request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes }) if (!request?.data?.ocs) { throw request } diff --git a/apps/files_sharing/src/mixins/SharesMixin.js b/apps/files_sharing/src/mixins/SharesMixin.js index daeacfa4b8b..053babd3a1d 100644 --- a/apps/files_sharing/src/mixins/SharesMixin.js +++ b/apps/files_sharing/src/mixins/SharesMixin.js @@ -229,7 +229,13 @@ export default { const properties = {} // force value to string because that is what our // share api controller accepts - propertyNames.map(p => (properties[p] = this.share[p].toString())) + propertyNames.forEach(name => { + if ((typeof this.share[name]) === 'object') { + properties[name] = JSON.stringify(this.share[name]) + } else { + properties[name] = this.share[name].toString() + } + }) this.updateQueue.add(async () => { this.saving = true diff --git a/apps/files_sharing/src/models/Share.js b/apps/files_sharing/src/models/Share.js index 5644ce0c2b3..e6512c67f8c 100644 --- a/apps/files_sharing/src/models/Share.js +++ b/apps/files_sharing/src/models/Share.js @@ -43,6 +43,15 @@ export default class Share { ocsData.hide_download = !!ocsData.hide_download ocsData.mail_send = !!ocsData.mail_send + if (ocsData.attributes) { + try { + ocsData.attributes = JSON.parse(ocsData.attributes) + } catch (e) { + console.warn('Could not parse share attributes returned by server: "' + ocsData.attributes + '"') + } + } + ocsData.attributes = ocsData.attributes ?? [] + // store state this._share = ocsData } @@ -97,6 +106,17 @@ export default class Share { } /** + * Get the share attributes + * + * @return {Array} + * @readonly + * @memberof Share + */ + get attributes() { + return this._share.attributes + } + + /** * Set the share permissions * See OC.PERMISSION_* variables * @@ -527,6 +547,47 @@ export default class Share { return !!((this.permissions & OC.PERMISSION_SHARE)) } + /** + * Does this share have download permissions + * + * @return {boolean} + * @readonly + * @memberof Share + */ + get hasDownloadPermission() { + for (const i in this._share.attributes) { + const attr = this._share.attributes[i] + if (attr.scope === 'permissions' && attr.key === 'download') { + return attr.enabled + } + } + + return true + } + + set hasDownloadPermission(enabled) { + this.setAttribute('permissions', 'download', !!enabled) + } + + setAttribute(scope, key, enabled) { + const attrUpdate = { + scope, + key, + enabled, + } + + // try and replace existing + for (const i in this._share.attributes) { + const attr = this._share.attributes[i] + if (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) { + this._share.attributes[i] = attrUpdate + return + } + } + + this._share.attributes.push(attrUpdate) + } + // PERMISSIONS Shortcuts for the CURRENT USER // ! the permissions above are the share settings, // ! meaning the permissions for the recipient diff --git a/apps/files_sharing/src/services/ConfigService.js b/apps/files_sharing/src/services/ConfigService.js index cd9bed2a2a7..bfef48a8ade 100644 --- a/apps/files_sharing/src/services/ConfigService.js +++ b/apps/files_sharing/src/services/ConfigService.js @@ -32,8 +32,8 @@ export default class Config { * @memberof Config */ get isPublicUploadEnabled() { - return document.getElementById('filestable') - && document.getElementById('filestable').dataset.allowPublicUpload === 'yes' + return document.getElementsByClassName('files-filestable')[0] + && document.getElementsByClassName('files-filestable')[0].dataset.allowPublicUpload === 'yes' } /** diff --git a/apps/files_sharing/src/share.js b/apps/files_sharing/src/share.js index c533e7b8109..93891cbf287 100644 --- a/apps/files_sharing/src/share.js +++ b/apps/files_sharing/src/share.js @@ -92,7 +92,15 @@ import { getCapabilities } from '@nextcloud/capabilities' delete fileActions.actions.all.Details delete fileActions.actions.all.Goto } + if (_.isFunction(fileData.canDownload) && !fileData.canDownload()) { + delete fileActions.actions.all.Download + if (fileData.permissions & OC.PERMISSION_UPDATE === 0) { + // neither move nor copy is allowed, remove the action completely + delete fileActions.actions.all.MoveCopy + } + } tr.attr('data-share-permissions', sharePermissions) + tr.attr('data-share-attributes', JSON.stringify(fileData.shareAttributes)) if (fileData.shareOwner) { tr.attr('data-share-owner', fileData.shareOwner) tr.attr('data-share-owner-id', fileData.shareOwnerId) @@ -113,6 +121,7 @@ import { getCapabilities } from '@nextcloud/capabilities' var oldElementToFile = fileList.elementToFile fileList.elementToFile = function($el) { var fileInfo = oldElementToFile.apply(this, arguments) + fileInfo.shareAttributes = JSON.parse($el.attr('data-share-attributes') || '[]') fileInfo.sharePermissions = $el.attr('data-share-permissions') || undefined fileInfo.shareOwner = $el.attr('data-share-owner') || undefined fileInfo.shareOwnerId = $el.attr('data-share-owner-id') || undefined diff --git a/apps/files_sharing/src/views/SharingInherited.vue b/apps/files_sharing/src/views/SharingInherited.vue index 27ab59c4729..0f7d9d8b55b 100644 --- a/apps/files_sharing/src/views/SharingInherited.vue +++ b/apps/files_sharing/src/views/SharingInherited.vue @@ -30,9 +30,11 @@ <template #avatar> <div class="avatar-shared icon-more-white" /> </template> - <ActionButton :icon="showInheritedSharesIcon" @click.prevent.stop="toggleInheritedShares"> + <NcActionButton :icon="showInheritedSharesIcon" + :aria-label="mainTitle" + @click.prevent.stop="toggleInheritedShares"> {{ toggleTooltip }} - </ActionButton> + </NcActionButton> </SharingEntrySimple> <!-- Inherited shares list --> @@ -45,7 +47,7 @@ <script> import { generateOcsUrl } from '@nextcloud/router' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' import axios from '@nextcloud/axios' import Share from '../models/Share' @@ -56,7 +58,7 @@ export default { name: 'SharingInherited', components: { - ActionButton, + NcActionButton, SharingEntryInherited, SharingEntrySimple, }, diff --git a/apps/files_sharing/src/views/SharingTab.vue b/apps/files_sharing/src/views/SharingTab.vue index 53e48dfa1e9..2a03553801e 100644 --- a/apps/files_sharing/src/views/SharingTab.vue +++ b/apps/files_sharing/src/views/SharingTab.vue @@ -33,7 +33,7 @@ <!-- shared with me information --> <SharingEntrySimple v-if="isSharedWithMe" v-bind="sharedWithMe" class="sharing-entry__reshare"> <template #avatar> - <Avatar :user="sharedWithMe.user" + <NcAvatar :user="sharedWithMe.user" :display-name="sharedWithMe.displayName" class="sharing-entry__avatar" tooltip-message="" /> @@ -69,7 +69,7 @@ <SharingEntryInternal :file-info="fileInfo" /> <!-- projects --> - <CollectionList v-if="fileInfo" + <CollectionList v-if="projectsEnabled && fileInfo" :id="`${fileInfo.id}`" type="file" :name="fileInfo.name" /> @@ -88,8 +88,9 @@ <script> import { CollectionList } from 'nextcloud-vue-collections' import { generateOcsUrl } from '@nextcloud/router' -import Avatar from '@nextcloud/vue/dist/Components/Avatar' +import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' import axios from '@nextcloud/axios' +import { loadState } from '@nextcloud/initial-state' import Config from '../services/ConfigService' import { shareWithTitle } from '../utils/SharedWithMe' @@ -107,7 +108,7 @@ export default { name: 'SharingTab', components: { - Avatar, + NcAvatar, CollectionList, SharingEntryInternal, SharingEntrySimple, @@ -136,6 +137,7 @@ export default { linkShares: [], sections: OCA.Sharing.ShareTabSections.getSections(), + projectsEnabled: loadState('core', 'projects_enabled', false), } }, diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php index 983e70d4433..066736013b9 100644 --- a/apps/files_sharing/templates/list.php +++ b/apps/files_sharing/templates/list.php @@ -1,32 +1,29 @@ <?php /** @var \OCP\IL10N $l */ ?> -<div id='notification'></div> -<div id="emptycontent" class="hidden"></div> - -<input type="hidden" name="dir" value="" id="dir"> +<div class="emptyfilelist emptycontent hidden"></div> <div class="nofilterresults emptycontent hidden"> <div class="icon-search"></div> <h2><?php p($l->t('No entries found in this folder')); ?></h2> </div> -<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> +<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> <thead> <tr> - <th id='headerName' class="hidden column-name"> - <div id="headerName-container"> + <th class="hidden column-name"> + <div class="column-name-container"> <a class="name sort columntitle" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a> </div> </th> - <th id="headerDate" class="hidden column-mtime"> - <a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t('Share time')); ?></span><span class="sort-indicator"></span></a> + <th class="hidden column-mtime"> + <a class="columntitle" data-sort="mtime"><span><?php p($l->t('Share time')); ?></span><span class="sort-indicator"></span></a> </th> <th class="hidden column-expiration"> <a class="columntitle"><span><?php p($l->t('Expiration date')); ?></span></a> </th> </tr> </thead> - <tbody id="fileList"> + <tbody class="files-fileList"> </tbody> <tfoot> </tfoot> diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index d49c7a01b63..ad83732cc28 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -2,7 +2,7 @@ /** @var \OCP\IL10N $l */ /** @var array $_ */ ?> -<div id="app-content"> +<div id="app-content" tabindex="0"> <?php if ($_['previewSupported']): /* This enables preview images for links (e.g. on Facebook, Google+, ...)*/?> <link rel="image_src" href="<?php p($_['previewImage']); ?>" /> <?php endif; ?> @@ -10,7 +10,6 @@ <input type="hidden" id="sharingUserId" value="<?php p($_['owner']) ?>"> <input type="hidden" id="filesApp" name="filesApp" value="1"> <input type="hidden" id="isPublic" name="isPublic" value="1"> -<input type="hidden" name="dir" value="<?php p($_['dir']) ?>" id="dir"> <?php if (!$_['hideDownload']): ?> <input type="hidden" name="downloadURL" value="<?php p($_['downloadURL']) ?>" id="downloadURL"> <?php endif; ?> @@ -61,31 +60,21 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size); <?php if (isset($_['folder'])): ?> <?php print_unescaped($_['folder']); ?> <?php else: ?> - <?php if ($_['previewEnabled'] && substr($_['mimetype'], 0, strpos($_['mimetype'], '/')) == 'audio'): ?> - <div id="imgframe"> - <audio tabindex="0" controls="" preload="none" style="width: 100%; max-width: <?php p($_['previewMaxX']); ?>px; max-height: <?php p($_['previewMaxY']); ?>px" - <?php // See https://github.com/nextcloud/server/pull/27674?> - <?php if ($_['hideDownload']) { ?>controlsList="nodownload" <?php } ?>> - <source src="<?php p($_['downloadURL']); ?>" type="<?php p($_['mimetype']); ?>" /> - </audio> - </div> - <?php else: ?> - <!-- Preview frame is filled via JS to support SVG images for modern browsers --> - <div id="imgframe"></div> - <?php if (isset($_['mimetype']) && strpos($_['mimetype'], 'image') === 0) { ?> - <div class="directDownload"> - <div> - <?php p($_['filename'])?> (<?php p($_['fileSize']) ?>) - </div> - <?php if (!$_['hideDownload']) { ?> - <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button"> - <span class="icon icon-download"></span> - <?php p($l->t('Download'))?> - </a> - <?php } ?> - </div> + <!-- preview frame to open file in with viewer --> + <div id="imgframe"></div> + <?php if (isset($_['mimetype']) && strpos($_['mimetype'], 'image') === 0) { ?> + <div class="directDownload"> + <div> + <?php p($_['filename'])?> (<?php p($_['fileSize']) ?>) + </div> + <?php if (!$_['hideDownload']) { ?> + <a href="<?php p($_['downloadURL']); ?>" id="downloadFile" class="button"> + <span class="icon icon-download"></span> + <?php p($l->t('Download'))?> + </a> <?php } ?> - <?php endif; ?> + </div> + <?php } ?> <?php if ($_['previewURL'] === $_['downloadURL'] && !$_['hideDownload']): ?> <div class="directDownload"> <div> @@ -105,7 +94,7 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size); <div id="public-upload"> <div id="emptycontent" - class="<?php if (!empty($_['note'])) { ?>has-note<?php } ?>"> + class="emptycontent <?php if (!empty($_['note'])) { ?>has-note<?php } ?>"> <?php if ($_['shareOwner']) { ?> <div id="displayavatar"><div class="avatardiv"></div></div> <h2><?php p($l->t('Upload files to %s', [$_['shareOwner']])) ?></h2> @@ -140,7 +129,6 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size); <?php } ?> <?php if (!isset($_['hideFileList']) || (isset($_['hideFileList']) && $_['hideFileList'] !== true)): ?> - <input type="hidden" name="dir" id="dir" value="" /> <div class="hiddenuploadfield"> <input type="file" id="file_upload_start" class="hiddenuploadfield" name="files[]" data-url="<?php p(\OC::$server->getURLGenerator()->linkTo('files', 'ajax/upload.php')); ?>" /> diff --git a/apps/files_sharing/tests/ApiTest.php b/apps/files_sharing/tests/ApiTest.php index a16a1aaf383..98d0c171681 100644 --- a/apps/files_sharing/tests/ApiTest.php +++ b/apps/files_sharing/tests/ApiTest.php @@ -948,8 +948,15 @@ class ApiTest extends TestCase { ->setSharedBy(self::TEST_FILES_SHARING_API_USER1) ->setSharedWith(self::TEST_FILES_SHARING_API_USER2) ->setShareType(IShare::TYPE_USER) - ->setPermissions(19); + ->setPermissions(19) + ->setAttributes($this->shareManager->newShare()->newAttributes()); + + $this->assertNotNull($share1->getAttributes()); $share1 = $this->shareManager->createShare($share1); + $this->assertNull($share1->getAttributes()); + $this->assertEquals(19, $share1->getPermissions()); + // attributes get cleared when empty + $this->assertNull($share1->getAttributes()); $share2 = $this->shareManager->newShare(); $share2->setNode($node1) @@ -957,14 +964,19 @@ class ApiTest extends TestCase { ->setShareType(IShare::TYPE_LINK) ->setPermissions(1); $share2 = $this->shareManager->createShare($share2); + $this->assertEquals(1, $share2->getPermissions()); // update permissions $ocs = $this->createOCS(self::TEST_FILES_SHARING_API_USER1); - $ocs->updateShare($share1->getId(), 1); + $ocs->updateShare( + $share1->getId(), 1, null, null, null, null, null, null, null, + '[{"scope": "app1", "key": "attr1", "enabled": true}]' + ); $ocs->cleanup(); $share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId()); $this->assertEquals(1, $share1->getPermissions()); + $this->assertEquals(true, $share1->getAttributes()->getAttribute('app1', 'attr1')); // update password for link share $this->assertNull($share2->getPassword()); diff --git a/apps/files_sharing/tests/ApplicationTest.php b/apps/files_sharing/tests/ApplicationTest.php new file mode 100644 index 00000000000..11c8137c398 --- /dev/null +++ b/apps/files_sharing/tests/ApplicationTest.php @@ -0,0 +1,236 @@ +<?php +/** + * @copyright 2022, Vincent Petry <vincent@nextcloud.com> + * + * @author Vincent Petry <vincent@nextcloud.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\Files_Sharing\Tests; + +use OCP\Files\Events\BeforeDirectFileDownloadEvent; +use OCP\Files\Events\BeforeZipCreatedEvent; +use Psr\Log\LoggerInterface; +use OC\Share20\LegacyHooks; +use OC\Share20\Manager; +use OC\EventDispatcher\EventDispatcher; +use OCA\Files_Sharing\AppInfo\Application; +use OCA\Files_Sharing\SharedStorage; +use OCP\Constants; +use OCP\EventDispatcher\GenericEvent; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\Cache\ICacheEntry; +use OCP\Files\Event\BeforeDirectGetEvent; +use OCP\Files\File; +use OCP\Files\Folder; +use OCP\Files\IRootFolder; +use OCP\Files\Storage\IStorage; +use OCP\IServerContainer; +use OCP\IUser; +use OCP\IUserSession; +use OCP\Share\IAttributes; +use OCP\Share\IShare; +use Symfony\Component\EventDispatcher\EventDispatcher as SymfonyDispatcher; +use Test\TestCase; + +class ApplicationTest extends TestCase { + private Application $application; + private IEventDispatcher $eventDispatcher; + + /** @var IUserSession */ + private $userSession; + + /** @var IRootFolder */ + private $rootFolder; + + /** @var Manager */ private $manager; + + protected function setUp(): void { + parent::setUp(); + + $this->application = new Application([]); + + $symfonyDispatcher = new SymfonyDispatcher(); + $this->eventDispatcher = new EventDispatcher( + $symfonyDispatcher, + $this->createMock(IServerContainer::class), + $this->createMock(LoggerInterface::class) + ); + $this->userSession = $this->createMock(IUserSession::class); + $this->rootFolder = $this->createMock(IRootFolder::class); + + $this->application->registerDownloadEvents( + $this->eventDispatcher, + $this->userSession, + $this->rootFolder + ); + } + + public function providesDataForCanGet(): array { + // normal file (sender) - can download directly + $senderFileStorage = $this->createMock(IStorage::class); + $senderFileStorage->method('instanceOfStorage')->with(SharedStorage::class)->willReturn(false); + $senderFile = $this->createMock(File::class); + $senderFile->method('getStorage')->willReturn($senderFileStorage); + $senderUserFolder = $this->createMock(Folder::class); + $senderUserFolder->method('get')->willReturn($senderFile); + + $result[] = [ '/bar.txt', $senderUserFolder, true ]; + + // shared file (receiver) with attribute secure-view-enabled set false - + // can download directly + $receiverFileShareAttributes = $this->createMock(IAttributes::class); + $receiverFileShareAttributes->method('getAttribute')->with('permissions', 'download')->willReturn(true); + $receiverFileShare = $this->createMock(IShare::class); + $receiverFileShare->method('getAttributes')->willReturn($receiverFileShareAttributes); + $receiverFileStorage = $this->createMock(SharedStorage::class); + $receiverFileStorage->method('instanceOfStorage')->with(SharedStorage::class)->willReturn(true); + $receiverFileStorage->method('getShare')->willReturn($receiverFileShare); + $receiverFile = $this->createMock(File::class); + $receiverFile->method('getStorage')->willReturn($receiverFileStorage); + $receiverUserFolder = $this->createMock(Folder::class); + $receiverUserFolder->method('get')->willReturn($receiverFile); + + $result[] = [ '/share-bar.txt', $receiverUserFolder, true ]; + + // shared file (receiver) with attribute secure-view-enabled set true - + // cannot download directly + $secureReceiverFileShareAttributes = $this->createMock(IAttributes::class); + $secureReceiverFileShareAttributes->method('getAttribute')->with('permissions', 'download')->willReturn(false); + $secureReceiverFileShare = $this->createMock(IShare::class); + $secureReceiverFileShare->method('getAttributes')->willReturn($secureReceiverFileShareAttributes); + $secureReceiverFileStorage = $this->createMock(SharedStorage::class); + $secureReceiverFileStorage->method('instanceOfStorage')->with(SharedStorage::class)->willReturn(true); + $secureReceiverFileStorage->method('getShare')->willReturn($secureReceiverFileShare); + $secureReceiverFile = $this->createMock(File::class); + $secureReceiverFile->method('getStorage')->willReturn($secureReceiverFileStorage); + $secureReceiverUserFolder = $this->createMock(Folder::class); + $secureReceiverUserFolder->method('get')->willReturn($secureReceiverFile); + + $result[] = [ '/secure-share-bar.txt', $secureReceiverUserFolder, false ]; + + return $result; + } + + /** + * @dataProvider providesDataForCanGet + */ + public function testCheckDirectCanBeDownloaded(string $path, Folder $userFolder, bool $run): void { + $user = $this->createMock(IUser::class); + $user->method('getUID')->willReturn('test'); + $this->userSession->method('getUser')->willReturn($user); + $this->userSession->method('isLoggedIn')->willReturn(true); + $this->rootFolder->method('getUserFolder')->willReturn($userFolder); + + // Simulate direct download of file + $event = new BeforeDirectFileDownloadEvent($path); + $this->eventDispatcher->dispatchTyped($event); + + $this->assertEquals($run, $event->isSuccessful()); + } + + public function providesDataForCanZip(): array { + // Mock: Normal file/folder storage + $nonSharedStorage = $this->createMock(IStorage::class); + $nonSharedStorage->method('instanceOfStorage')->with(SharedStorage::class)->willReturn(false); + + // Mock: Secure-view file/folder shared storage + $secureReceiverFileShareAttributes = $this->createMock(IAttributes::class); + $secureReceiverFileShareAttributes->method('getAttribute')->with('permissions', 'download')->willReturn(false); + $secureReceiverFileShare = $this->createMock(IShare::class); + $secureReceiverFileShare->method('getAttributes')->willReturn($secureReceiverFileShareAttributes); + $secureSharedStorage = $this->createMock(SharedStorage::class); + $secureSharedStorage->method('instanceOfStorage')->with(SharedStorage::class)->willReturn(true); + $secureSharedStorage->method('getShare')->willReturn($secureReceiverFileShare); + + // 1. can download zipped 2 non-shared files inside non-shared folder + // 2. can download zipped non-shared folder + $sender1File = $this->createMock(File::class); + $sender1File->method('getStorage')->willReturn($nonSharedStorage); + $sender1Folder = $this->createMock(Folder::class); + $sender1Folder->method('getStorage')->willReturn($nonSharedStorage); + $sender1Folder->method('getDirectoryListing')->willReturn([$sender1File, $sender1File]); + $sender1RootFolder = $this->createMock(Folder::class); + $sender1RootFolder->method('getStorage')->willReturn($nonSharedStorage); + $sender1RootFolder->method('getDirectoryListing')->willReturn([$sender1Folder]); + $sender1UserFolder = $this->createMock(Folder::class); + $sender1UserFolder->method('get')->willReturn($sender1RootFolder); + + $return[] = [ '/folder', ['bar1.txt', 'bar2.txt'], $sender1UserFolder, true ]; + $return[] = [ '/', ['folder'], $sender1UserFolder, true ]; + + // 3. cannot download zipped 1 non-shared file and 1 secure-shared inside non-shared folder + $receiver1File = $this->createMock(File::class); + $receiver1File->method('getStorage')->willReturn($nonSharedStorage); + $receiver1SecureFile = $this->createMock(File::class); + $receiver1SecureFile->method('getStorage')->willReturn($secureSharedStorage); + $receiver1Folder = $this->createMock(Folder::class); + $receiver1Folder->method('getStorage')->willReturn($nonSharedStorage); + $receiver1Folder->method('getDirectoryListing')->willReturn([$receiver1File, $receiver1SecureFile]); + $receiver1RootFolder = $this->createMock(Folder::class); + $receiver1RootFolder->method('getStorage')->willReturn($nonSharedStorage); + $receiver1RootFolder->method('getDirectoryListing')->willReturn([$receiver1Folder]); + $receiver1UserFolder = $this->createMock(Folder::class); + $receiver1UserFolder->method('get')->willReturn($receiver1RootFolder); + + $return[] = [ '/folder', ['secured-bar1.txt', 'bar2.txt'], $receiver1UserFolder, false ]; + + // 4. cannot download zipped secure-shared folder + $receiver2Folder = $this->createMock(Folder::class); + $receiver2Folder->method('getStorage')->willReturn($secureSharedStorage); + $receiver2RootFolder = $this->createMock(Folder::class); + $receiver2RootFolder->method('getStorage')->willReturn($nonSharedStorage); + $receiver2RootFolder->method('getDirectoryListing')->willReturn([$receiver2Folder]); + $receiver2UserFolder = $this->createMock(Folder::class); + $receiver2UserFolder->method('get')->willReturn($receiver2RootFolder); + + $return[] = [ '/', ['secured-folder'], $receiver2UserFolder, false ]; + + return $return; + } + + /** + * @dataProvider providesDataForCanZip + */ + public function testCheckZipCanBeDownloaded(string $dir, array $files, Folder $userFolder, bool $run): void { + $user = $this->createMock(IUser::class); + $user->method('getUID')->willReturn('test'); + $this->userSession->method('getUser')->willReturn($user); + $this->userSession->method('isLoggedIn')->willReturn(true); + + $this->rootFolder->method('getUserFolder')->with('test')->willReturn($userFolder); + + // Simulate zip download of folder folder + $event = new BeforeZipCreatedEvent($dir, $files); + $this->eventDispatcher->dispatchTyped($event); + + $this->assertEquals($run, $event->isSuccessful()); + $this->assertEquals($run, $event->getErrorMessage() === null); + } + + public function testCheckFileUserNotFound(): void { + $this->userSession->method('isLoggedIn')->willReturn(false); + + // Simulate zip download of folder folder + $event = new BeforeZipCreatedEvent('/test', ['test.txt']); + $this->eventDispatcher->dispatchTyped($event); + + // It should run as this would restrict e.g. share links otherwise + $this->assertTrue($event->isSuccessful()); + $this->assertEquals(null, $event->getErrorMessage()); + } +} diff --git a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php index fd5580f19a7..f8f4fb18bc8 100644 --- a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php +++ b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php @@ -46,6 +46,7 @@ use OCP\Files\IRootFolder; use OCP\Files\Mount\IMountPoint; use OCP\Files\NotFoundException; use OCP\Files\Storage; +use OCP\Files\Storage\IStorage; use OCP\IConfig; use OCP\IGroup; use OCP\IGroupManager; @@ -58,6 +59,7 @@ use OCP\IUser; use OCP\IUserManager; use OCP\Lock\LockedException; use OCP\Share\Exceptions\GenericShareException; +use OCP\Share\IAttributes as IShareAttributes; use OCP\Share\IManager; use OCP\Share\IShare; use Test\TestCase; @@ -124,7 +126,7 @@ class ShareAPIControllerTest extends TestCase { ->willReturn(true); $this->shareManager ->expects($this->any()) - ->method('shareProviderExists')->willReturn(true); + ->method('shareProviderExists')->willReturn(true); $this->groupManager = $this->createMock(IGroupManager::class); $this->userManager = $this->createMock(IUserManager::class); $this->request = $this->createMock(IRequest::class); @@ -194,6 +196,23 @@ class ShareAPIControllerTest extends TestCase { } + private function mockShareAttributes() { + $formattedShareAttributes = [ + [ + 'scope' => 'permissions', + 'key' => 'download', + 'enabled' => true + ] + ]; + + $shareAttributes = $this->createMock(IShareAttributes::class); + $shareAttributes->method('toArray')->willReturn($formattedShareAttributes); + $shareAttributes->method('getAttribute')->with('permissions', 'download')->willReturn(true); + + // send both IShare attributes class and expected json string + return [$shareAttributes, \json_encode($formattedShareAttributes)]; + } + public function testDeleteShareShareNotFound() { $this->expectException(\OCP\AppFramework\OCS\OCSNotFoundException::class); $this->expectExceptionMessage('Wrong share ID, share does not exist'); @@ -505,7 +524,7 @@ class ShareAPIControllerTest extends TestCase { public function createShare($id, $shareType, $sharedWith, $sharedBy, $shareOwner, $path, $permissions, $shareTime, $expiration, $parent, $target, $mail_send, $note = '', $token = null, - $password = null, $label = '') { + $password = null, $label = '', $attributes = null) { $share = $this->getMockBuilder(IShare::class)->getMock(); $share->method('getId')->willReturn($id); $share->method('getShareType')->willReturn($shareType); @@ -516,6 +535,7 @@ class ShareAPIControllerTest extends TestCase { $share->method('getPermissions')->willReturn($permissions); $share->method('getNote')->willReturn($note); $share->method('getLabel')->willReturn($label); + $share->method('getAttributes')->willReturn($attributes); $time = new \DateTime(); $time->setTimestamp($shareTime); $share->method('getShareTime')->willReturn($time); @@ -565,6 +585,8 @@ class ShareAPIControllerTest extends TestCase { $folder->method('getParent')->willReturn($parentFolder); $folder->method('getMimeType')->willReturn('myFolderMimeType'); + [$shareAttributes, $shareAttributesReturnJson] = $this->mockShareAttributes(); + // File shared with user $share = $this->createShare( 100, @@ -579,7 +601,8 @@ class ShareAPIControllerTest extends TestCase { 6, 'target', 0, - 'personal note' + 'personal note', + $shareAttributes, ); $expected = [ 'id' => 100, @@ -597,6 +620,7 @@ class ShareAPIControllerTest extends TestCase { 'token' => null, 'expiration' => null, 'permissions' => 4, + 'attributes' => $shareAttributesReturnJson, 'stime' => 5, 'parent' => null, 'storage_id' => 'STORAGE', @@ -613,6 +637,7 @@ class ShareAPIControllerTest extends TestCase { 'can_edit' => false, 'can_delete' => false, 'status' => [], + 'attributes' => null, ]; $data[] = [$share, $expected]; @@ -630,7 +655,8 @@ class ShareAPIControllerTest extends TestCase { 6, 'target', 0, - 'personal note' + 'personal note', + $shareAttributes, ); $expected = [ 'id' => 101, @@ -647,6 +673,7 @@ class ShareAPIControllerTest extends TestCase { 'token' => null, 'expiration' => null, 'permissions' => 4, + 'attributes' => $shareAttributesReturnJson, 'stime' => 5, 'parent' => null, 'storage_id' => 'STORAGE', @@ -662,6 +689,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ]; $data[] = [$share, $expected]; @@ -702,6 +730,7 @@ class ShareAPIControllerTest extends TestCase { 'token' => 'token', 'expiration' => '2000-01-02 00:00:00', 'permissions' => 4, + 'attributes' => null, 'stime' => 5, 'parent' => null, 'storage_id' => 'STORAGE', @@ -718,6 +747,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ]; $data[] = [$share, $expected]; @@ -1646,8 +1676,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -1680,8 +1712,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -1732,8 +1766,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -1788,8 +1824,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -1847,8 +1885,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -1901,8 +1941,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -1935,8 +1977,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); $this->rootFolder->method('get')->with('valid-path')->willReturn($path); @@ -1956,8 +2000,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); $this->rootFolder->method('get')->with('valid-path')->willReturn($path); @@ -1978,8 +2024,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); $this->rootFolder->method('get')->with('valid-path')->willReturn($path); @@ -1999,8 +2047,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); $this->rootFolder->method('get')->with('valid-path')->willReturn($path); @@ -2035,8 +2085,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); $this->rootFolder->method('get')->with('valid-path')->willReturn($path); @@ -2071,8 +2123,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); $this->rootFolder->method('get')->with('valid-path')->willReturn($path); @@ -2114,8 +2168,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $path->method('getPath')->willReturn('valid-path'); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); @@ -2150,8 +2206,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); $this->rootFolder->method('get')->with('valid-path')->willReturn($path); @@ -2193,8 +2251,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $this->rootFolder->method('getUserFolder')->with($this->currentUser)->willReturnSelf(); $this->rootFolder->method('get')->with('valid-path')->willReturn($path); @@ -2241,8 +2301,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -2313,8 +2375,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -2367,8 +2431,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -2451,8 +2517,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $path->method('getPath')->willReturn('valid-path'); $userFolder->expects($this->once()) @@ -2494,8 +2562,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(File::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(false); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', false], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $userFolder->expects($this->once()) ->method('get') @@ -2575,8 +2645,10 @@ class ShareAPIControllerTest extends TestCase { $path = $this->getMockBuilder(Folder::class)->getMock(); $storage = $this->createMock(Storage::class); $storage->method('instanceOfStorage') - ->with('OCA\Files_Sharing\External\Storage') - ->willReturn(true); + ->willReturnMap([ + ['OCA\Files_Sharing\External\Storage', true], + ['OCA\Files_Sharing\SharedStorage', false], + ]); $path->method('getStorage')->willReturn($storage); $path->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ); $userFolder->expects($this->once()) @@ -2935,8 +3007,17 @@ class ShareAPIControllerTest extends TestCase { $this->expectExceptionMessage('Invalid date. Format must be YYYY-MM-DD'); $ocs = $this->mockFormatShare(); + $userFolder = $this->createMock(Folder::class); + $userFolder->method('getById') + ->with(42) + ->willReturn([]); + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturn($userFolder); $folder = $this->getMockBuilder(Folder::class)->getMock(); + $folder->method('getId') + ->willReturn(42); $share = \OC::$server->getShareManager()->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) @@ -2974,8 +3055,16 @@ class ShareAPIControllerTest extends TestCase { $this->expectExceptionMessage('Public upload disabled by the administrator'); $ocs = $this->mockFormatShare(); + $userFolder = $this->createMock(Folder::class); + $userFolder->method('getById') + ->with(42) + ->willReturn([]); + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturn($userFolder); $folder = $this->getMockBuilder(Folder::class)->getMock(); + $folder->method('getId')->willReturn(42); $share = \OC::$server->getShareManager()->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) @@ -2997,6 +3086,15 @@ class ShareAPIControllerTest extends TestCase { $ocs = $this->mockFormatShare(); $file = $this->getMockBuilder(File::class)->getMock(); + $file->method('getId') + ->willReturn(42); + $userFolder = $this->createMock(Folder::class); + $userFolder->method('getById') + ->with(42) + ->willReturn([]); + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturn($userFolder); $share = \OC::$server->getShareManager()->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) @@ -3010,13 +3108,21 @@ class ShareAPIControllerTest extends TestCase { $ocs->updateShare(42, null, 'password', null, 'true', ''); } - public function testUpdateLinkSharePasswordDoesNotChangeOther() { + public function testUpdateLinkSharePasswordDoesNotChangeOther(): void { $ocs = $this->mockFormatShare(); $date = new \DateTime('2000-01-01'); $date->setTime(0,0,0); $node = $this->getMockBuilder(File::class)->getMock(); + $node->method('getId')->willReturn(42); + $userFolder = $this->createMock(Folder::class); + $userFolder->method('getById') + ->with(42) + ->willReturn([]); + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturn($userFolder); $share = $this->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) ->setSharedBy($this->currentUser) @@ -3061,7 +3167,15 @@ class ShareAPIControllerTest extends TestCase { $date = new \DateTime('2000-01-01'); $date->setTime(0,0,0); + $userFolder = $this->createMock(Folder::class); + $userFolder->method('getById') + ->with(42) + ->willReturn([]); + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturn($userFolder); $node = $this->getMockBuilder(File::class)->getMock(); + $node->method('getId')->willReturn(42); $share = $this->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) ->setSharedBy($this->currentUser) @@ -3112,7 +3226,15 @@ class ShareAPIControllerTest extends TestCase { $date = new \DateTime('2000-01-01'); $date->setTime(0,0,0); + $userFolder = $this->createMock(Folder::class); + $userFolder->method('getById') + ->with(42) + ->willReturn([]); + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturn($userFolder); $node = $this->getMockBuilder(File::class)->getMock(); + $node->method('getId')->willReturn(42); $share = $this->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) ->setSharedBy($this->currentUser) @@ -3145,7 +3267,15 @@ class ShareAPIControllerTest extends TestCase { $date = new \DateTime('2000-01-01'); $date->setTime(0,0,0); + $userFolder = $this->createMock(Folder::class); + $userFolder->method('getById') + ->with(42) + ->willReturn([]); + $this->rootFolder->method('getUserFolder') + ->with($this->currentUser) + ->willReturn($userFolder); $node = $this->getMockBuilder(File::class)->getMock(); + $node->method('getId')->willReturn(42); $share = $this->newShare(); $share->setPermissions(\OCP\Constants::PERMISSION_ALL) ->setSharedBy($this->currentUser) @@ -3725,7 +3855,7 @@ class ShareAPIControllerTest extends TestCase { $recipient = $this->getMockBuilder(IUser::class)->getMock(); $recipient->method('getDisplayName')->willReturn('recipientDN'); $recipient->method('getSystemEMailAddress')->willReturn('recipient'); - + [$shareAttributes, $shareAttributesReturnJson] = $this->mockShareAttributes(); $result = []; @@ -3735,6 +3865,7 @@ class ShareAPIControllerTest extends TestCase { ->setSharedBy('initiator') ->setShareOwner('owner') ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setAttributes($shareAttributes) ->setNode($file) ->setShareTime(new \DateTime('2000-01-01T00:01:02')) ->setTarget('myTarget') @@ -3749,6 +3880,7 @@ class ShareAPIControllerTest extends TestCase { 'uid_owner' => 'initiator', 'displayname_owner' => 'initiator', 'permissions' => 1, + 'attributes' => $shareAttributesReturnJson, 'stime' => 946684862, 'parent' => null, 'expiration' => null, @@ -3775,6 +3907,7 @@ class ShareAPIControllerTest extends TestCase { 'can_edit' => false, 'can_delete' => false, 'status' => [], + 'attributes' => '[{"scope":"permissions","key":"download","enabled":true}]', ], $share, [], false ]; // User backend up @@ -3785,6 +3918,7 @@ class ShareAPIControllerTest extends TestCase { 'uid_owner' => 'initiator', 'displayname_owner' => 'initiatorDN', 'permissions' => 1, + 'attributes' => $shareAttributesReturnJson, 'stime' => 946684862, 'parent' => null, 'expiration' => null, @@ -3811,6 +3945,7 @@ class ShareAPIControllerTest extends TestCase { 'can_edit' => false, 'can_delete' => false, 'status' => [], + 'attributes' => '[{"scope":"permissions","key":"download","enabled":true}]', ], $share, [ ['owner', $owner], ['initiator', $initiator], @@ -3837,6 +3972,7 @@ class ShareAPIControllerTest extends TestCase { 'uid_owner' => 'initiator', 'displayname_owner' => 'initiator', 'permissions' => 1, + 'attributes' => null, 'stime' => 946684862, 'parent' => null, 'expiration' => null, @@ -3863,6 +3999,7 @@ class ShareAPIControllerTest extends TestCase { 'can_edit' => false, 'can_delete' => false, 'status' => [], + 'attributes' => null, ], $share, [], false ]; @@ -3885,6 +4022,7 @@ class ShareAPIControllerTest extends TestCase { 'uid_owner' => 'initiator', 'displayname_owner' => 'initiator', 'permissions' => 1, + 'attributes' => null, 'stime' => 946684862, 'parent' => null, 'expiration' => null, @@ -3911,6 +4049,7 @@ class ShareAPIControllerTest extends TestCase { 'can_edit' => true, 'can_delete' => true, 'status' => [], + 'attributes' => null, ], $share, [], false ]; @@ -3935,6 +4074,7 @@ class ShareAPIControllerTest extends TestCase { 'uid_owner' => 'initiator', 'displayname_owner' => 'initiator', 'permissions' => 1, + 'attributes' => null, 'stime' => 946684862, 'parent' => null, 'expiration' => null, @@ -3959,6 +4099,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4005,6 +4146,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4030,6 +4172,7 @@ class ShareAPIControllerTest extends TestCase { 'uid_owner' => 'initiator', 'displayname_owner' => 'initiator', 'permissions' => 1, + 'attributes' => null, 'stime' => 946684862, 'parent' => null, 'expiration' => '2001-01-02 00:00:00', @@ -4057,6 +4200,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4110,6 +4254,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4157,6 +4302,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4204,6 +4350,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4228,6 +4375,7 @@ class ShareAPIControllerTest extends TestCase { 'uid_owner' => 'initiator', 'displayname_owner' => 'initiator', 'permissions' => 1, + 'attributes' => null, 'stime' => 946684862, 'parent' => null, 'expiration' => null, @@ -4253,6 +4401,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4300,6 +4449,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4347,6 +4497,7 @@ class ShareAPIControllerTest extends TestCase { 'hide_download' => 0, 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, [], false ]; @@ -4411,6 +4562,7 @@ class ShareAPIControllerTest extends TestCase { 'can_edit' => false, 'can_delete' => false, 'password_expiration_time' => null, + 'attributes' => null, ], $share, [], false ]; @@ -4461,6 +4613,7 @@ class ShareAPIControllerTest extends TestCase { 'can_edit' => false, 'can_delete' => false, 'password_expiration_time' => null, + 'attributes' => null, ], $share, [], false ]; @@ -4510,6 +4663,7 @@ class ShareAPIControllerTest extends TestCase { 'can_edit' => true, 'can_delete' => true, 'status' => [], + 'attributes' => null, ], $share, [], false ]; @@ -4661,6 +4815,7 @@ class ShareAPIControllerTest extends TestCase { 'label' => '', 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, false, [] ]; @@ -4707,6 +4862,7 @@ class ShareAPIControllerTest extends TestCase { 'label' => '', 'can_edit' => false, 'can_delete' => false, + 'attributes' => null, ], $share, true, [ 'share_with_displayname' => 'recipientRoomName' ] diff --git a/apps/files_sharing/tests/External/CacheTest.php b/apps/files_sharing/tests/External/CacheTest.php index c538f7dd760..c77012c3e44 100644 --- a/apps/files_sharing/tests/External/CacheTest.php +++ b/apps/files_sharing/tests/External/CacheTest.php @@ -30,7 +30,9 @@ namespace OCA\Files_Sharing\Tests\External; use OC\Federation\CloudIdManager; use OCA\Files_Sharing\Tests\TestCase; use OCP\Contacts\IManager; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\ICloudIdManager; +use OCP\ICacheFactory; use OCP\IURLGenerator; use OCP\IUserManager; @@ -68,7 +70,13 @@ class CacheTest extends TestCase { $this->contactsManager = $this->createMock(IManager::class); - $this->cloudIdManager = new CloudIdManager($this->contactsManager, $this->createMock(IURLGenerator::class), $this->createMock(IUserManager::class)); + $this->cloudIdManager = new CloudIdManager( + $this->contactsManager, + $this->createMock(IURLGenerator::class), + $this->createMock(IUserManager::class), + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class) + ); $this->remoteUser = $this->getUniqueID('remoteuser'); $this->storage = $this->getMockBuilder('\OCA\Files_Sharing\External\Storage') diff --git a/apps/files_sharing/tests/External/ManagerTest.php b/apps/files_sharing/tests/External/ManagerTest.php index 0b35e08da2d..86386144932 100644 --- a/apps/files_sharing/tests/External/ManagerTest.php +++ b/apps/files_sharing/tests/External/ManagerTest.php @@ -31,21 +31,19 @@ namespace OCA\Files_Sharing\Tests\External; use OC\Federation\CloudIdManager; -use OC\Files\SetupManager; use OC\Files\SetupManagerFactory; use OC\Files\Storage\StorageFactory; use OCA\Files_Sharing\External\Manager; use OCA\Files_Sharing\External\MountProvider; use OCA\Files_Sharing\Tests\TestCase; use OCP\Contacts\IManager; -use OCP\Diagnostics\IEventLogger; use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\ICloudFederationFactory; use OCP\Federation\ICloudFederationProviderManager; -use OCP\Files\Config\IMountProviderCollection; use OCP\Files\NotFoundException; use OCP\Http\Client\IClientService; use OCP\Http\Client\IResponse; +use OCP\ICacheFactory; use OCP\IGroup; use OCP\IGroupManager; use OCP\IURLGenerator; @@ -130,7 +128,13 @@ class ManagerTest extends TestCase { $this->testMountProvider = new MountProvider(\OC::$server->getDatabaseConnection(), function () { return $this->manager; - }, new CloudIdManager($this->contactsManager, $this->createMock(IURLGenerator::class), $this->userManager)); + }, new CloudIdManager( + $this->contactsManager, + $this->createMock(IURLGenerator::class), + $this->userManager, + $this->createMock(ICacheFactory::class), + $this->createMock(IEventDispatcher::class) + )); $group1 = $this->createMock(IGroup::class); $group1->expects($this->any())->method('getGID')->willReturn('group1'); diff --git a/apps/files_sharing/tests/External/ScannerTest.php b/apps/files_sharing/tests/External/ScannerTest.php index 57696a697eb..2d2486737dc 100644 --- a/apps/files_sharing/tests/External/ScannerTest.php +++ b/apps/files_sharing/tests/External/ScannerTest.php @@ -50,18 +50,6 @@ class ScannerTest extends TestCase { $this->scanner = new Scanner($this->storage); } - public function testScanAll() { - $this->storage->expects($this->any()) - ->method('getShareInfo') - ->willReturn(['status' => 'success', 'data' => []]); - - // FIXME add real tests, we are currently only checking for - // Declaration of OCA\Files_Sharing\External\Scanner::*() should be - // compatible with OC\Files\Cache\Scanner::*() - $this->scanner->scanAll(); - $this->addToAssertionCount(1); - } - public function testScan() { $this->storage->expects($this->any()) ->method('getShareInfo') diff --git a/apps/files_sharing/tests/MountProviderTest.php b/apps/files_sharing/tests/MountProviderTest.php index 53bea929def..37e7e3d9d03 100644 --- a/apps/files_sharing/tests/MountProviderTest.php +++ b/apps/files_sharing/tests/MountProviderTest.php @@ -39,6 +39,7 @@ use OCP\IConfig; use OCP\ILogger; use OCP\IUser; use OCP\IUserManager; +use OCP\Share\IAttributes as IShareAttributes; use OCP\Share\IManager; use OCP\Share\IShare; @@ -81,12 +82,36 @@ class MountProviderTest extends \Test\TestCase { $this->provider = new MountProvider($this->config, $this->shareManager, $this->logger, $eventDispatcher, $cacheFactory); } - private function makeMockShare($id, $nodeId, $owner = 'user2', $target = null, $permissions = 31) { + private function makeMockShareAttributes($attrs) { + if ($attrs === null) { + return null; + } + + $shareAttributes = $this->createMock(IShareAttributes::class); + $shareAttributes->method('toArray')->willReturn($attrs); + $shareAttributes->method('getAttribute')->will( + $this->returnCallback(function ($scope, $key) use ($attrs) { + $result = null; + foreach ($attrs as $attr) { + if ($attr['key'] === $key && $attr['scope'] === $scope) { + $result = $attr['enabled']; + } + } + return $result; + }) + ); + return $shareAttributes; + } + + private function makeMockShare($id, $nodeId, $owner = 'user2', $target = null, $permissions = 31, $attributes = null) { $share = $this->createMock(IShare::class); $share->expects($this->any()) ->method('getPermissions') ->willReturn($permissions); $share->expects($this->any()) + ->method('getAttributes') + ->will($this->returnValue($this->makeMockShareAttributes($attributes))); + $share->expects($this->any()) ->method('getShareOwner') ->willReturn($owner); $share->expects($this->any()) @@ -115,14 +140,16 @@ class MountProviderTest extends \Test\TestCase { public function testExcludeShares() { $rootFolder = $this->createMock(IRootFolder::class); $userManager = $this->createMock(IUserManager::class); + $attr1 = []; + $attr2 = [['scope' => 'permission', 'key' => 'download', 'enabled' => true]]; $userShares = [ - $this->makeMockShare(1, 100, 'user2', '/share2', 0), - $this->makeMockShare(2, 100, 'user2', '/share2', 31), + $this->makeMockShare(1, 100, 'user2', '/share2', 0, $attr1), + $this->makeMockShare(2, 100, 'user2', '/share2', 31, $attr2), ]; $groupShares = [ - $this->makeMockShare(3, 100, 'user2', '/share2', 0), - $this->makeMockShare(4, 101, 'user2', '/share4', 31), - $this->makeMockShare(5, 100, 'user1', '/share4', 31), + $this->makeMockShare(3, 100, 'user2', '/share2', 0, $attr1), + $this->makeMockShare(4, 101, 'user2', '/share4', 31, $attr2), + $this->makeMockShare(5, 100, 'user1', '/share4', 31, $attr2), ]; $roomShares = [ $this->makeMockShare(6, 102, 'user2', '/share6', 0), @@ -173,12 +200,14 @@ class MountProviderTest extends \Test\TestCase { $this->assertEquals(100, $mountedShare1->getNodeId()); $this->assertEquals('/share2', $mountedShare1->getTarget()); $this->assertEquals(31, $mountedShare1->getPermissions()); + $this->assertEquals(true, $mountedShare1->getAttributes()->getAttribute('permission', 'download')); $mountedShare2 = $mounts[1]->getShare(); $this->assertEquals('4', $mountedShare2->getId()); $this->assertEquals('user2', $mountedShare2->getShareOwner()); $this->assertEquals(101, $mountedShare2->getNodeId()); $this->assertEquals('/share4', $mountedShare2->getTarget()); $this->assertEquals(31, $mountedShare2->getPermissions()); + $this->assertEquals(true, $mountedShare2->getAttributes()->getAttribute('permission', 'download')); $mountedShare3 = $mounts[2]->getShare(); $this->assertEquals('8', $mountedShare3->getId()); $this->assertEquals('user2', $mountedShare3->getShareOwner()); @@ -200,27 +229,27 @@ class MountProviderTest extends \Test\TestCase { // #0: share as outsider with "group1" and "user1" with same permissions [ [ - [1, 100, 'user2', '/share2', 31], + [1, 100, 'user2', '/share2', 31, null], ], [ - [2, 100, 'user2', '/share2', 31], + [2, 100, 'user2', '/share2', 31, null], ], [ // combined, user share has higher priority - ['1', 100, 'user2', '/share2', 31], + ['1', 100, 'user2', '/share2', 31, []], ], ], // #1: share as outsider with "group1" and "user1" with different permissions [ [ - [1, 100, 'user2', '/share', 31], + [1, 100, 'user2', '/share', 31, [['scope' => 'permission', 'key' => 'download', 'enabled' => true], ['scope' => 'app', 'key' => 'attribute1', 'enabled' => true]]], ], [ - [2, 100, 'user2', '/share', 15], + [2, 100, 'user2', '/share', 15, [['scope' => 'permission', 'key' => 'download', 'enabled' => false], ['scope' => 'app', 'key' => 'attribute2', 'enabled' => false]]], ], [ // use highest permissions - ['1', 100, 'user2', '/share', 31], + ['1', 100, 'user2', '/share', 31, [['scope' => 'permission', 'key' => 'download', 'enabled' => true], ['scope' => 'app', 'key' => 'attribute1', 'enabled' => true], ['scope' => 'app', 'key' => 'attribute2', 'enabled' => false]]], ], ], // #2: share as outsider with "group1" and "group2" with same permissions @@ -228,12 +257,12 @@ class MountProviderTest extends \Test\TestCase { [ ], [ - [1, 100, 'user2', '/share', 31], - [2, 100, 'user2', '/share', 31], + [1, 100, 'user2', '/share', 31, null], + [2, 100, 'user2', '/share', 31, []], ], [ // combined, first group share has higher priority - ['1', 100, 'user2', '/share', 31], + ['1', 100, 'user2', '/share', 31, []], ], ], // #3: share as outsider with "group1" and "group2" with different permissions @@ -241,12 +270,12 @@ class MountProviderTest extends \Test\TestCase { [ ], [ - [1, 100, 'user2', '/share', 31], - [2, 100, 'user2', '/share', 15], + [1, 100, 'user2', '/share', 31, [['scope' => 'permission', 'key' => 'download', 'enabled' => false]]], + [2, 100, 'user2', '/share', 15, [['scope' => 'permission', 'key' => 'download', 'enabled' => true]]], ], [ - // use higher permissions - ['1', 100, 'user2', '/share', 31], + // use higher permissions (most permissive) + ['1', 100, 'user2', '/share', 31, [['scope' => 'permission', 'key' => 'download', 'enabled' => true]]], ], ], // #4: share as insider with "group1" @@ -254,7 +283,7 @@ class MountProviderTest extends \Test\TestCase { [ ], [ - [1, 100, 'user1', '/share', 31], + [1, 100, 'user1', '/share', 31, []], ], [ // no received share since "user1" is the sharer/owner @@ -265,8 +294,8 @@ class MountProviderTest extends \Test\TestCase { [ ], [ - [1, 100, 'user1', '/share', 31], - [2, 100, 'user1', '/share', 15], + [1, 100, 'user1', '/share', 31, [['scope' => 'permission', 'key' => 'download', 'enabled' => true]]], + [2, 100, 'user1', '/share', 15, [['scope' => 'permission', 'key' => 'download', 'enabled' => false]]], ], [ // no received share since "user1" is the sharer/owner @@ -277,7 +306,7 @@ class MountProviderTest extends \Test\TestCase { [ ], [ - [1, 100, 'user2', '/share', 0], + [1, 100, 'user2', '/share', 0, []], ], [ // no received share since "user1" opted out @@ -286,40 +315,40 @@ class MountProviderTest extends \Test\TestCase { // #7: share as outsider with "group1" and "user1" where recipient renamed in between [ [ - [1, 100, 'user2', '/share2-renamed', 31], + [1, 100, 'user2', '/share2-renamed', 31, []], ], [ - [2, 100, 'user2', '/share2', 31], + [2, 100, 'user2', '/share2', 31, []], ], [ // use target of least recent share - ['1', 100, 'user2', '/share2-renamed', 31], + ['1', 100, 'user2', '/share2-renamed', 31, []], ], ], // #8: share as outsider with "group1" and "user1" where recipient renamed in between [ [ - [2, 100, 'user2', '/share2', 31], + [2, 100, 'user2', '/share2', 31, []], ], [ - [1, 100, 'user2', '/share2-renamed', 31], + [1, 100, 'user2', '/share2-renamed', 31, []], ], [ // use target of least recent share - ['1', 100, 'user2', '/share2-renamed', 31], + ['1', 100, 'user2', '/share2-renamed', 31, []], ], ], // #9: share as outsider with "nullgroup" and "user1" where recipient renamed in between [ [ - [2, 100, 'user2', '/share2', 31], + [2, 100, 'user2', '/share2', 31, []], ], [ - [1, 100, 'nullgroup', '/share2-renamed', 31], + [1, 100, 'nullgroup', '/share2-renamed', 31, []], ], [ // use target of least recent share - ['1', 100, 'nullgroup', '/share2-renamed', 31], + ['1', 100, 'nullgroup', '/share2-renamed', 31, []], ], true ], @@ -343,10 +372,10 @@ class MountProviderTest extends \Test\TestCase { $userManager = $this->createMock(IUserManager::class); $userShares = array_map(function ($shareSpec) { - return $this->makeMockShare($shareSpec[0], $shareSpec[1], $shareSpec[2], $shareSpec[3], $shareSpec[4]); + return $this->makeMockShare($shareSpec[0], $shareSpec[1], $shareSpec[2], $shareSpec[3], $shareSpec[4], $shareSpec[5]); }, $userShares); $groupShares = array_map(function ($shareSpec) { - return $this->makeMockShare($shareSpec[0], $shareSpec[1], $shareSpec[2], $shareSpec[3], $shareSpec[4]); + return $this->makeMockShare($shareSpec[0], $shareSpec[1], $shareSpec[2], $shareSpec[3], $shareSpec[4], $shareSpec[5]); }, $groupShares); $this->user->expects($this->any()) @@ -400,6 +429,11 @@ class MountProviderTest extends \Test\TestCase { $this->assertEquals($expectedShare[2], $share->getShareOwner()); $this->assertEquals($expectedShare[3], $share->getTarget()); $this->assertEquals($expectedShare[4], $share->getPermissions()); + if ($expectedShare[5] === null) { + $this->assertNull($share->getAttributes()); + } else { + $this->assertEquals($expectedShare[5], $share->getAttributes()->toArray()); + } } } } diff --git a/apps/files_sharing/tests/TestCase.php b/apps/files_sharing/tests/TestCase.php index 234ea2c69c8..d4077c84816 100644 --- a/apps/files_sharing/tests/TestCase.php +++ b/apps/files_sharing/tests/TestCase.php @@ -201,8 +201,6 @@ abstract class TestCase extends \Test\TestCase { } } - self::resetStorage(); - \OC_Util::tearDownFS(); \OC\Files\Cache\Storage::getGlobalCache()->clearCache(); \OC::$server->getUserSession()->setUser(null); @@ -214,17 +212,6 @@ abstract class TestCase extends \Test\TestCase { } /** - * reset init status for the share storage - */ - protected static function resetStorage() { - $storage = new \ReflectionClass('\OCA\Files_Sharing\SharedStorage'); - $isInitialized = $storage->getProperty('initialized'); - $isInitialized->setAccessible(true); - $isInitialized->setValue($storage, false); - $isInitialized->setAccessible(false); - } - - /** * get some information from a given share * @param int $shareID * @return array with: item_source, share_type, share_with, item_type, permissions diff --git a/apps/files_sharing/tests/UpdaterTest.php b/apps/files_sharing/tests/UpdaterTest.php index 464dff412a8..fbdfad2f9cb 100644 --- a/apps/files_sharing/tests/UpdaterTest.php +++ b/apps/files_sharing/tests/UpdaterTest.php @@ -237,4 +237,123 @@ class UpdaterTest extends TestCase { // cleanup $this->shareManager->deleteShare($share); } + + /** + * If a folder gets moved into shared folder, children shares should have their uid_owner and permissions adjusted + * user1 + * |-folder1 --> shared with user2 + * user2 + * |-folder2 --> shared with user3 and moved into folder1 + * |-subfolder1 --> shared with user3 + * |-file1.txt --> shared with user3 + * |-subfolder2 + * |-file2.txt --> shared with user3 + */ + public function testMovedIntoShareChangeOwner() { + $this->markTestSkipped('Skipped because this is failing with S3 as primary as file id are change when moved.'); + + // user1 creates folder1 + $viewUser1 = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER1 . '/files'); + $folder1 = 'folder1'; + $viewUser1->mkdir($folder1); + + // user1 shares folder1 to user2 + $folder1Share = $this->share( + IShare::TYPE_USER, + $folder1, + self::TEST_FILES_SHARING_API_USER1, + self::TEST_FILES_SHARING_API_USER2, + \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE + ); + + $this->loginHelper(self::TEST_FILES_SHARING_API_USER2); + $viewUser2 = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files'); + // Create user2 files + $folder2 = 'folder2'; + $viewUser2->mkdir($folder2); + $file1 = 'folder2/file1.txt'; + $viewUser2->touch($file1); + $subfolder1 = 'folder2/subfolder1'; + $viewUser2->mkdir($subfolder1); + $subfolder2 = 'folder2/subfolder2'; + $viewUser2->mkdir($subfolder2); + $file2 = 'folder2/subfolder2/file2.txt'; + $viewUser2->touch($file2); + + // user2 shares folder2 to user3 + $folder2Share = $this->share( + IShare::TYPE_USER, + $folder2, + self::TEST_FILES_SHARING_API_USER2, + self::TEST_FILES_SHARING_API_USER3, + \OCP\Constants::PERMISSION_ALL + ); + // user2 shares folder2/file1 to user3 + $file1Share = $this->share( + IShare::TYPE_USER, + $file1, + self::TEST_FILES_SHARING_API_USER2, + self::TEST_FILES_SHARING_API_USER3, + \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE + ); + // user2 shares subfolder1 to user3 + $subfolder1Share = $this->share( + IShare::TYPE_USER, + $subfolder1, + self::TEST_FILES_SHARING_API_USER2, + self::TEST_FILES_SHARING_API_USER3, + \OCP\Constants::PERMISSION_ALL + ); + // user2 shares subfolder2/file2.txt to user3 + $file2Share = $this->share( + IShare::TYPE_USER, + $file2, + self::TEST_FILES_SHARING_API_USER2, + self::TEST_FILES_SHARING_API_USER3, + \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE + ); + + // user2 moves folder2 into folder1 + $viewUser2->rename($folder2, $folder1.'/'.$folder2); + $folder2Share = $this->shareManager->getShareById($folder2Share->getFullId()); + $file1Share = $this->shareManager->getShareById($file1Share->getFullId()); + $subfolder1Share = $this->shareManager->getShareById($subfolder1Share->getFullId()); + $file2Share = $this->shareManager->getShareById($file2Share->getFullId()); + + // Expect uid_owner of both shares to be user1 + $this->assertEquals(self::TEST_FILES_SHARING_API_USER1, $folder2Share->getShareOwner()); + $this->assertEquals(self::TEST_FILES_SHARING_API_USER1, $file1Share->getShareOwner()); + $this->assertEquals(self::TEST_FILES_SHARING_API_USER1, $subfolder1Share->getShareOwner()); + $this->assertEquals(self::TEST_FILES_SHARING_API_USER1, $file2Share->getShareOwner()); + // Expect permissions to be limited by the permissions of the destination share + $this->assertEquals(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE, $folder2Share->getPermissions()); + $this->assertEquals(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE, $file1Share->getPermissions()); + $this->assertEquals(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE, $subfolder1Share->getPermissions()); + $this->assertEquals(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE, $file2Share->getPermissions()); + + // user2 moves folder2 out of folder1 + $viewUser2->rename($folder1.'/'.$folder2, $folder2); + $folder2Share = $this->shareManager->getShareById($folder2Share->getFullId()); + $file1Share = $this->shareManager->getShareById($file1Share->getFullId()); + $subfolder1Share = $this->shareManager->getShareById($subfolder1Share->getFullId()); + $file2Share = $this->shareManager->getShareById($file2Share->getFullId()); + + // Expect uid_owner of both shares to be user2 + $this->assertEquals(self::TEST_FILES_SHARING_API_USER2, $folder2Share->getShareOwner()); + $this->assertEquals(self::TEST_FILES_SHARING_API_USER2, $file1Share->getShareOwner()); + $this->assertEquals(self::TEST_FILES_SHARING_API_USER2, $subfolder1Share->getShareOwner()); + $this->assertEquals(self::TEST_FILES_SHARING_API_USER2, $file2Share->getShareOwner()); + // Expect permissions to not change + $this->assertEquals(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE, $folder2Share->getPermissions()); + $this->assertEquals(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE, $file1Share->getPermissions()); + $this->assertEquals(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE, $subfolder1Share->getPermissions()); + $this->assertEquals(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_SHARE, $file2Share->getPermissions()); + + // cleanup + $this->shareManager->deleteShare($folder1Share); + $this->shareManager->deleteShare($folder2Share); + $this->shareManager->deleteShare($file1Share); + $this->shareManager->deleteShare($subfolder1Share); + $this->shareManager->deleteShare($file2Share); + } } diff --git a/apps/files_sharing/tests/js/appSpec.js b/apps/files_sharing/tests/js/appSpec.js index e1249f5b4d7..4d2e5211d7c 100644 --- a/apps/files_sharing/tests/js/appSpec.js +++ b/apps/files_sharing/tests/js/appSpec.js @@ -95,7 +95,7 @@ describe('OCA.Sharing.App tests', function() { var setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView'); // create dummy table so we can click the dom - var $table = '<table><thead></thead><tbody id="fileList"></tbody></table>'; + var $table = '<table><thead></thead><tbody class="files-fileList"></tbody></table>'; $('#app-content-sharingin').append($table); App._inFileList = null; diff --git a/apps/files_sharing/tests/js/publicAppSpec.js b/apps/files_sharing/tests/js/publicAppSpec.js index ed88913b1f6..59ac4bd7bbd 100644 --- a/apps/files_sharing/tests/js/publicAppSpec.js +++ b/apps/files_sharing/tests/js/publicAppSpec.js @@ -51,15 +51,15 @@ describe('OCA.Sharing.PublicApp tests', function() { }); describe('File list', function() { + var parseUrlQueryStub // TODO: this should be moved to a separate file once the PublicFileList is extracted from public.js beforeEach(function() { $preview.append( '<div id="app-content-files">' + // init horrible parameters - '<input type="hidden" id="dir" value="/subdir"/>' + '<input type="hidden" id="permissions" value="31"/>' + // dummy controls - '<div id="controls">' + + '<div class="files-controls">' + ' <div class="actions creatable"></div>' + ' <div class="notCreatable"></div>' + '</div>' + @@ -67,30 +67,34 @@ describe('OCA.Sharing.PublicApp tests', function() { '<input type="file" id="file_upload_start" name="files[]" multiple="multiple">' + // dummy table // TODO: at some point this will be rendered by the fileList class itself! - '<table id="filestable" class="list-container view-grid">' + + '<table class="files-filestable list-container view-grid">' + '<thead><tr>' + - '<th id="headerName" class="hidden column-name">' + + '<th class="hidden column-name">' + '<input type="checkbox" id="select_all_files" class="select-all">' + '<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + '<span class="selectedActions hidden">' + '<a href class="download">Download</a>' + + '</span>' + '</th>' + '<th class="hidden column-size"><a class="columntitle" data-sort="size"><span class="sort-indicator"></span></a></th>' + '<th class="hidden column-mtime"><a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a></th>' + '</tr></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '<tfoot></tfoot>' + '</table>' + // TODO: move to handlebars template - '<div id="emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' + + '<div class="emptyfilelist emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' + '<div class="nofilterresults hidden"></div>' + '</div>' ); + parseUrlQueryStub = sinon.stub(OC.Util.History, 'parseUrlQuery'); + parseUrlQueryStub.returns({path: '/subdir'}); App.initialize($('#preview')); }); afterEach(function() { App._initialized = false; + parseUrlQueryStub.restore(); }); it('Uses public webdav endpoint', function() { diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js index f99c838eda3..8a48ce54f19 100644 --- a/apps/files_sharing/tests/js/shareSpec.js +++ b/apps/files_sharing/tests/js/shareSpec.js @@ -41,17 +41,17 @@ describe('OCA.Sharing.Util tests', function() { } beforeEach(function() { - var $content = $('<div id="content"></div>'); + var $content = $('<div id="app-content"></div>'); $('#testArea').append($content); // dummy file list var $div = $( '<div id="listContainer">' + - '<table id="filestable" class="list-container view-grid">' + + '<table class="files-filestable list-container view-grid">' + '<thead></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '</table>' + '</div>'); - $('#content').append($div); + $('#app-content').append($div); var fileActions = new OCA.Files.FileActions(); fileList = new OCA.Files.FileList( diff --git a/apps/files_trashbin/composer/composer/installed.php b/apps/files_trashbin/composer/composer/installed.php index 914fa1a857f..c54b7ff5437 100644 --- a/apps/files_trashbin/composer/composer/installed.php +++ b/apps/files_trashbin/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'ff67123569a861301d14f83f7b2310e9a518c46d', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'ff67123569a861301d14f83f7b2310e9a518c46d', 'dev_requirement' => false, ), ), diff --git a/apps/files_trashbin/l10n/es_SV.js b/apps/files_trashbin/l10n/es_SV.js index a57d7ddffa9..95dc1d196d9 100644 --- a/apps/files_trashbin/l10n/es_SV.js +++ b/apps/files_trashbin/l10n/es_SV.js @@ -16,4 +16,4 @@ OC.L10N.register( "Deleted" : "Borrado", "Delete" : "Borrar" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_trashbin/l10n/es_SV.json b/apps/files_trashbin/l10n/es_SV.json index 2cd5f41dff9..26e4cc4a1ae 100644 --- a/apps/files_trashbin/l10n/es_SV.json +++ b/apps/files_trashbin/l10n/es_SV.json @@ -13,5 +13,5 @@ "Actions" : "Acciones", "Deleted" : "Borrado", "Delete" : "Borrar" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/mk.js b/apps/files_trashbin/l10n/mk.js index 6a942606754..daa44da00c4 100644 --- a/apps/files_trashbin/l10n/mk.js +++ b/apps/files_trashbin/l10n/mk.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Deleted files" : "Избришани датотеки", "restored" : "повратени", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Избришани датотеки и папки во корпата за отпадоци (може да истечат за време на извозот ако немате доволно простор за складирање)", "This application enables users to restore files that were deleted from the system." : "Оваа апликација им овозможува на корисниците да ги вратат датотеките што се избришани од системот.", "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Оваа апликација им овозможува на корисниците да ги вратат датотеките што се избришани од системот. Прикажува листа на избришани датотеки во веб-интерфејсот и има можност да ги вратите тие избришани датотеки назад до директориумот од каде се избришани или да ги отстраните трајно од системот. Враќањето на датотека ги враќа и нејзините верзии, доколку е овозможена апликацијата за верзии. Кога избришаната датотеката била споделена, таа може да се врати на ист начин, но истата повеќе не е споделена. Стандардно, овие датотеки остануваат во корпата за отпадоци 30 дена.\nСо цел да се спречи да не се искористи просторот за складирање на корисникот, апликацијата Избришани датотеки нема да користи повеќе од 50% од тековно достапната квота за избришани датотеки. Ако избришаните датотеки ја надминат оваа граница, апликацијата ги брише најстарите датотеки сè додека не се дојде под ова ограничување. Повеќе информации се достапни во документацијата за избришани датотеки.", "Restore" : "Врати", diff --git a/apps/files_trashbin/l10n/mk.json b/apps/files_trashbin/l10n/mk.json index 545dde78b93..8187a5bdf06 100644 --- a/apps/files_trashbin/l10n/mk.json +++ b/apps/files_trashbin/l10n/mk.json @@ -1,6 +1,7 @@ { "translations": { "Deleted files" : "Избришани датотеки", "restored" : "повратени", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Избришани датотеки и папки во корпата за отпадоци (може да истечат за време на извозот ако немате доволно простор за складирање)", "This application enables users to restore files that were deleted from the system." : "Оваа апликација им овозможува на корисниците да ги вратат датотеките што се избришани од системот.", "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Оваа апликација им овозможува на корисниците да ги вратат датотеките што се избришани од системот. Прикажува листа на избришани датотеки во веб-интерфејсот и има можност да ги вратите тие избришани датотеки назад до директориумот од каде се избришани или да ги отстраните трајно од системот. Враќањето на датотека ги враќа и нејзините верзии, доколку е овозможена апликацијата за верзии. Кога избришаната датотеката била споделена, таа може да се врати на ист начин, но истата повеќе не е споделена. Стандардно, овие датотеки остануваат во корпата за отпадоци 30 дена.\nСо цел да се спречи да не се искористи просторот за складирање на корисникот, апликацијата Избришани датотеки нема да користи повеќе од 50% од тековно достапната квота за избришани датотеки. Ако избришаните датотеки ја надминат оваа граница, апликацијата ги брише најстарите датотеки сè додека не се дојде под ова ограничување. Повеќе информации се достапни во документацијата за избришани датотеки.", "Restore" : "Врати", diff --git a/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php b/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php index 9e35273544b..c76033e0c79 100644 --- a/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php +++ b/apps/files_trashbin/lib/BackgroundJob/ExpireTrash.php @@ -30,46 +30,30 @@ use OCA\Files_Trashbin\AppInfo\Application; use OCA\Files_Trashbin\Expiration; use OCA\Files_Trashbin\Helper; use OCA\Files_Trashbin\Trashbin; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\TimedJob; use OCP\IConfig; use OCP\IUser; use OCP\IUserManager; -class ExpireTrash extends \OC\BackgroundJob\TimedJob { +class ExpireTrash extends TimedJob { + private IConfig $config; + private Expiration $expiration; + private IUserManager $userManager; - /** @var IConfig */ - private $config; - - /** - * @var Expiration - */ - private $expiration; - - /** - * @var IUserManager - */ - private $userManager; - - public function __construct(IConfig $config = null, - IUserManager $userManager = null, - Expiration $expiration = null) { + public function __construct( + IConfig $config, + IUserManager $userManager, + Expiration $expiration, + ITimeFactory $time + ) { + parent::__construct($time); // Run once per 30 minutes $this->setInterval(60 * 30); - if ($config === null || $expiration === null || $userManager === null) { - $this->fixDIForJobs(); - } else { - $this->config = $config; - $this->userManager = $userManager; - $this->expiration = $expiration; - } - } - - protected function fixDIForJobs() { - /** @var Application $application */ - $application = \OC::$server->query(Application::class); - $this->config = $application->getContainer()->get(IConfig::class); - $this->userManager = \OC::$server->getUserManager(); - $this->expiration = $application->getContainer()->query('Expiration'); + $this->config = $config; + $this->userManager = $userManager; + $this->expiration = $expiration; } /** @@ -101,10 +85,8 @@ class ExpireTrash extends \OC\BackgroundJob\TimedJob { /** * Act on behalf on trash item owner - * @param string $user - * @return boolean */ - protected function setupFS($user) { + protected function setupFS(string $user): bool { \OC_Util::tearDownFS(); \OC_Util::setupFS($user); diff --git a/apps/files_trashbin/lib/Trashbin.php b/apps/files_trashbin/lib/Trashbin.php index d449a136016..975e9fd2557 100644 --- a/apps/files_trashbin/lib/Trashbin.php +++ b/apps/files_trashbin/lib/Trashbin.php @@ -54,6 +54,7 @@ use OC\Files\View; use OCA\Files_Trashbin\AppInfo\Application; use OCA\Files_Trashbin\Command\Expire; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\App\IAppManager; use OCP\Files\File; use OCP\Files\Folder; use OCP\Files\NotFoundException; @@ -395,7 +396,7 @@ class Trashbin { * @param integer $timestamp when the file was deleted */ private static function retainVersions($filename, $owner, $ownerPath, $timestamp) { - if (\OCP\App::isEnabled('files_versions') && !empty($ownerPath)) { + if (\OCP\Server::get(IAppManager::class)->isEnabledForUser('files_versions') && !empty($ownerPath)) { $user = OC_User::getUser(); $rootView = new View('/'); @@ -543,7 +544,7 @@ class Trashbin { * @return false|null */ private static function restoreVersions(View $view, $file, $filename, $uniqueFilename, $location, $timestamp) { - if (\OCP\App::isEnabled('files_versions')) { + if (\OCP\Server::get(IAppManager::class)->isEnabledForUser('files_versions')) { $user = OC_User::getUser(); $rootView = new View('/'); @@ -704,7 +705,7 @@ class Trashbin { */ private static function deleteVersions(View $view, $file, $filename, $timestamp, $user) { $size = 0; - if (\OCP\App::isEnabled('files_versions')) { + if (\OCP\Server::get(IAppManager::class)->isEnabledForUser('files_versions')) { if ($view->is_dir('files_trashbin/versions/' . $file)) { $size += self::calculateSize(new View('/' . $user . '/files_trashbin/versions/' . $file)); $view->unlink('files_trashbin/versions/' . $file); diff --git a/apps/files_trashbin/src/filelist.js b/apps/files_trashbin/src/filelist.js index c1bf1b280ca..7fb55d4b932 100644 --- a/apps/files_trashbin/src/filelist.js +++ b/apps/files_trashbin/src/filelist.js @@ -54,7 +54,7 @@ * @augments OCA.Files.FileList * @classdesc List of deleted files * - * @param $el container element with existing markup for the #controls + * @param $el container element with existing markup for the .files-controls * and a table * @param [options] map of options */ @@ -160,8 +160,8 @@ updateEmptyContent: function() { var exists = this.$fileList.find('tr:first').exists() - this.$el.find('#emptycontent').toggleClass('hidden', exists) - this.$el.find('#filestable th').toggleClass('hidden', !exists) + this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', exists) + this.$el.find('.files-filestable th').toggleClass('hidden', !exists) }, _removeCallback: function(files) { diff --git a/apps/files_trashbin/src/trash.scss b/apps/files_trashbin/src/trash.scss index 2ed57b51918..633107c9d6d 100644 --- a/apps/files_trashbin/src/trash.scss +++ b/apps/files_trashbin/src/trash.scss @@ -16,7 +16,7 @@ #app-content-trashbin .summary :last-child { padding: 0; } -#app-content-trashbin #filestable .summary .filesize { +#app-content-trashbin .files-filestable .summary .filesize { display: none; } diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php index fcd5448db4b..5fe2fab4333 100644 --- a/apps/files_trashbin/templates/index.php +++ b/apps/files_trashbin/templates/index.php @@ -1,49 +1,46 @@ <?php /** @var \OCP\IL10N $l */ ?> -<div id="controls"> - <div id="file_action_panel"></div> +<div class="files-controls"> + <div></div> </div> -<div id='notification'></div> -<div id="emptycontent" class="hidden"> +<div class="emptyfilelist emptycontent hidden"> <div class="icon-delete"></div> <h2><?php p($l->t('No deleted files')); ?></h2> <p><?php p($l->t('You will be able to recover deleted files from here')); ?></p> </div> -<input type="hidden" name="dir" value="" id="dir"> - <div class="nofilterresults emptycontent hidden"> <div class="icon-search"></div> <h2><?php p($l->t('No entries found in this folder')); ?></h2> <p></p> </div> -<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> +<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>"> <thead> <tr> - <th id="headerSelection" class="hidden column-selection"> + <th class="hidden column-selection"> <input type="checkbox" id="select_all_trash" class="select-all checkbox"/> <label for="select_all_trash"> <span class="hidden-visually"><?php p($l->t('Select all'))?></span> </label> </th> - <th id='headerName' class="hidden column-name"> - <div id="headerName-container"> + <th class="hidden column-name"> + <div class="column-name-container"> <a class="name sort columntitle" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a> - <span id="selectedActionsList" class='selectedActions'> - <a href="" class="actions-selected"> + <span class='selectedActions'> + <a href="#" class="actions-selected"> <span class="icon icon-more"></span> <span><?php p($l->t('Actions'))?></span> </a> </span> </div> </th> - <th id="headerDate" class="hidden column-mtime"> - <a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t('Deleted')); ?></span><span class="sort-indicator"></span></a> + <th class="hidden column-mtime"> + <a class="columntitle" data-sort="mtime"><span><?php p($l->t('Deleted')); ?></span><span class="sort-indicator"></span></a> </th> </tr> </thead> - <tbody id="fileList"> + <tbody class="files-fileList"> </tbody> <tfoot> </tfoot> diff --git a/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php b/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php index c49501608f7..bf5d6bc65ae 100644 --- a/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php +++ b/apps/files_trashbin/tests/BackgroundJob/ExpireTrashTest.php @@ -27,12 +27,13 @@ namespace OCA\Files_Trashbin\Tests\BackgroundJob; use OCA\Files_Trashbin\BackgroundJob\ExpireTrash; use OCA\Files_Trashbin\Expiration; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\IConfig; -use OCP\ILogger; use OCP\IUserManager; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; +use Psr\Log\LoggerInterface; class ExpireTrashTest extends TestCase { /** @var IConfig|MockObject */ @@ -47,8 +48,8 @@ class ExpireTrashTest extends TestCase { /** @var IJobList|MockObject */ private $jobList; - /** @var ILogger|MockObject */ - private $logger; + /** @var ITimeFactory|MockObject */ + private $time; protected function setUp(): void { parent::setUp(); @@ -57,7 +58,10 @@ class ExpireTrashTest extends TestCase { $this->userManager = $this->createMock(IUserManager::class); $this->expiration = $this->createMock(Expiration::class); $this->jobList = $this->createMock(IJobList::class); - $this->logger = $this->createMock(ILogger::class); + + $this->time = $this->createMock(ITimeFactory::class); + $this->time->method('getTime') + ->willReturn(99999999999); $this->jobList->expects($this->once()) ->method('setLastRun'); @@ -66,8 +70,12 @@ class ExpireTrashTest extends TestCase { } public function testConstructAndRun(): void { - $job = new ExpireTrash($this->config, $this->userManager, $this->expiration); - $job->execute($this->jobList, $this->logger); + $this->config->method('getAppValue') + ->with('files_trashbin', 'background_job_expire_trash', 'yes') + ->willReturn('yes'); + + $job = new ExpireTrash($this->config, $this->userManager, $this->expiration, $this->time); + $job->start($this->jobList); } public function testBackgroundJobDeactivated(): void { @@ -77,7 +85,7 @@ class ExpireTrashTest extends TestCase { $this->expiration->expects($this->never()) ->method('getMaxAgeAsTimestamp'); - $job = new ExpireTrash($this->config, $this->userManager, $this->expiration); - $job->execute($this->jobList, $this->logger); + $job = new ExpireTrash($this->config, $this->userManager, $this->expiration, $this->time); + $job->start($this->jobList); } } diff --git a/apps/files_trashbin/tests/js/filelistSpec.js b/apps/files_trashbin/tests/js/filelistSpec.js index 0f4661ba09a..9e27188efb8 100644 --- a/apps/files_trashbin/tests/js/filelistSpec.js +++ b/apps/files_trashbin/tests/js/filelistSpec.js @@ -42,31 +42,29 @@ describe('OCA.Trashbin.FileList tests', function () { // init parameters and test table elements $('#testArea').append( - '<div id="app-content-trashbin">' + - // init horrible parameters - '<input type="hidden" id="dir" value="/"></input>' + + '<div id="app-content">' + // set this but it shouldn't be used (could be the one from the // files app) '<input type="hidden" id="permissions" value="31"></input>' + // dummy controls - '<div id="controls">' + + '<div class="files-controls">' + ' <div class="actions creatable"></div>' + ' <div class="notCreatable"></div>' + '</div>' + // dummy table // TODO: at some point this will be rendered by the fileList class itself! - '<table id="filestable" class="list-container view-grid">' + - '<thead><tr><th id="headerName" class="hidden">' + + '<table class="files-filestable list-container view-grid">' + + '<thead><tr><th class="hidden column-name">' + '<input type="checkbox" id="select_all_trash" class="select-all">' + '<span class="name">Name</span>' + '<span class="selectedActions hidden">' + '<a href="" class="actions-selected"><span class="icon icon-more"></span><span>Actions</span>' + '</span>' + '</th></tr></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '<tfoot></tfoot>' + '</table>' + - '<div id="emptycontent">Empty content message</div>' + + '<div class="emptyfilelist emptycontent">Empty content message</div>' + '</div>' ); @@ -107,7 +105,7 @@ describe('OCA.Trashbin.FileList tests', function () { // register file actions like the trashbin App does var fileActions = OCA.Trashbin.App._createFileActions(fileList); fileList = new OCA.Trashbin.FileList( - $('#app-content-trashbin'), { + $('#app-content'), { fileActions: fileActions, multiSelectMenu: [{ name: 'restore', @@ -129,7 +127,6 @@ describe('OCA.Trashbin.FileList tests', function () { fileList.destroy(); fileList = undefined; - $('#dir').remove(); notificationStub.restore(); alertStub.restore(); }); @@ -161,7 +158,7 @@ describe('OCA.Trashbin.FileList tests', function () { it('links the breadcrumb to the trashbin view', function () { fileList.changeDirectory('/subdir', false, true); fakeServer.respond(); - var $crumbs = fileList.$el.find('#controls .crumb'); + var $crumbs = fileList.$el.find('.files-controls .crumb'); expect($crumbs.length).toEqual(3); expect($crumbs.eq(1).find('a').text()).toEqual('Home'); expect($crumbs.eq(1).find('a').attr('href')) @@ -174,7 +171,6 @@ describe('OCA.Trashbin.FileList tests', function () { describe('Rendering rows', function () { it('renders rows with the correct data when in root', function () { // dir listing is false when in root - $('#dir').val('/'); fileList.setFiles(testFiles); var $rows = fileList.$el.find('tbody tr'); var $tr = $rows.eq(0); @@ -195,7 +191,6 @@ describe('OCA.Trashbin.FileList tests', function () { }); it('renders rows with the correct data when in root after calling setFiles with the same data set', function () { // dir listing is false when in root - $('#dir').val('/'); fileList.setFiles(testFiles); fileList.setFiles(fileList.files); var $rows = fileList.$el.find('tbody tr'); @@ -216,9 +211,6 @@ describe('OCA.Trashbin.FileList tests', function () { expect(fileList.findFileEl('One.txt.d11111')[0]).toEqual($tr[0]); }); it('renders rows with the correct data when in subdirectory', function () { - // dir listing is true when in a subdir - $('#dir').val('/subdir'); - fileList.setFiles(testFiles.map(function (file) { file.name = file.displayName; return file; diff --git a/apps/files_versions/composer/composer/installed.php b/apps/files_versions/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/files_versions/composer/composer/installed.php +++ b/apps/files_versions/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/files_versions/l10n/de.js b/apps/files_versions/l10n/de.js index 8f159e5a0d2..ee3d66492e0 100644 --- a/apps/files_versions/l10n/de.js +++ b/apps/files_versions/l10n/de.js @@ -8,6 +8,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"], "Restore" : "Wiederherstellen", "No other versions available" : "Keine anderen Versionen verfügbar", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über die Web-Oberfläche auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen findest Du in der Versionsdokumentation." + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über die Web-Oberfläche auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen findest du in der Versionsdokumentation." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/de.json b/apps/files_versions/l10n/de.json index ea73298e47a..2697c910703 100644 --- a/apps/files_versions/l10n/de.json +++ b/apps/files_versions/l10n/de.json @@ -6,6 +6,6 @@ "_%n byte_::_%n bytes_" : ["%n Byte","%n Bytes"], "Restore" : "Wiederherstellen", "No other versions available" : "Keine anderen Versionen verfügbar", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über die Web-Oberfläche auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen findest Du in der Versionsdokumentation." + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über die Web-Oberfläche auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen findest du in der Versionsdokumentation." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/es_SV.js b/apps/files_versions/l10n/es_SV.js index 11deaab171a..5d974ef3480 100644 --- a/apps/files_versions/l10n/es_SV.js +++ b/apps/files_versions/l10n/es_SV.js @@ -6,4 +6,4 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"], "Restore" : "Restaurar" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/files_versions/l10n/es_SV.json b/apps/files_versions/l10n/es_SV.json index aacaa6486a4..4348982b777 100644 --- a/apps/files_versions/l10n/es_SV.json +++ b/apps/files_versions/l10n/es_SV.json @@ -3,5 +3,5 @@ "Failed to revert {file} to revision {timestamp}." : "Falla al revertir {file} a revisión {timestamp}.", "_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"], "Restore" : "Restaurar" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files_versions/lib/BackgroundJob/ExpireVersions.php b/apps/files_versions/lib/BackgroundJob/ExpireVersions.php index a8a311f0a05..7e714a059d0 100644 --- a/apps/files_versions/lib/BackgroundJob/ExpireVersions.php +++ b/apps/files_versions/lib/BackgroundJob/ExpireVersions.php @@ -27,27 +27,21 @@ namespace OCA\Files_Versions\BackgroundJob; use OCA\Files_Versions\Expiration; use OCA\Files_Versions\Storage; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\TimedJob; use OCP\IConfig; use OCP\IUser; use OCP\IUserManager; -class ExpireVersions extends \OC\BackgroundJob\TimedJob { +class ExpireVersions extends TimedJob { public const ITEMS_PER_SESSION = 1000; - /** @var IConfig */ - private $config; + private IConfig $config; + private Expiration $expiration; + private IUserManager $userManager; - /** - * @var Expiration - */ - private $expiration; - - /** - * @var IUserManager - */ - private $userManager; - - public function __construct(IConfig $config, IUserManager $userManager, Expiration $expiration) { + public function __construct(IConfig $config, IUserManager $userManager, Expiration $expiration, ITimeFactory $time) { + parent::__construct($time); // Run once per 30 minutes $this->setInterval(60 * 30); @@ -78,10 +72,8 @@ class ExpireVersions extends \OC\BackgroundJob\TimedJob { /** * Act on behalf on trash item owner - * @param string $user - * @return boolean */ - protected function setupFS($user) { + protected function setupFS(string $user): bool { \OC_Util::tearDownFS(); \OC_Util::setupFS($user); diff --git a/apps/files_versions/tests/BackgroundJob/ExpireVersionsTest.php b/apps/files_versions/tests/BackgroundJob/ExpireVersionsTest.php index a1acffb8543..442a7020d89 100644 --- a/apps/files_versions/tests/BackgroundJob/ExpireVersionsTest.php +++ b/apps/files_versions/tests/BackgroundJob/ExpireVersionsTest.php @@ -25,9 +25,9 @@ namespace OCA\Files_Versions\Tests\BackgroundJob; use OCA\Files_Versions\BackgroundJob\ExpireVersions; use OCA\Files_Versions\Expiration; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJobList; use OCP\IConfig; -use OCP\ILogger; use OCP\IUserManager; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -46,9 +46,6 @@ class ExpireVersionsTest extends TestCase { /** @var IJobList|MockObject */ private $jobList; - /** @var ILogger|MockObject */ - private $logger; - protected function setUp(): void { parent::setUp(); @@ -56,7 +53,6 @@ class ExpireVersionsTest extends TestCase { $this->userManager = $this->createMock(IUserManager::class); $this->expiration = $this->createMock(Expiration::class); $this->jobList = $this->createMock(IJobList::class); - $this->logger = $this->createMock(ILogger::class); $this->jobList->expects($this->once()) ->method('setLastRun'); @@ -71,7 +67,12 @@ class ExpireVersionsTest extends TestCase { $this->expiration->expects($this->never()) ->method('getMaxAgeAsTimestamp'); - $job = new ExpireVersions($this->config, $this->userManager, $this->expiration); - $job->execute($this->jobList, $this->logger); + $timeFactory = $this->createMock(ITimeFactory::class); + $timeFactory->method('getTime') + ->with() + ->willReturn(99999999999); + + $job = new ExpireVersions($this->config, $this->userManager, $this->expiration, $timeFactory); + $job->start($this->jobList); } } diff --git a/apps/lookup_server_connector/composer/composer/installed.php b/apps/lookup_server_connector/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/lookup_server_connector/composer/composer/installed.php +++ b/apps/lookup_server_connector/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php index f905f9173b6..39d8118abe7 100644 --- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php +++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php @@ -44,22 +44,14 @@ use OCP\IUser; use OCP\IUserManager; class RetryJob extends Job { - /** @var IClientService */ - private $clientService; - /** @var string */ - private $lookupServer; - /** @var IConfig */ - private $config; - /** @var IUserManager */ - private $userManager; - /** @var IAccountManager */ - private $accountManager; - /** @var Signer */ - private $signer; - /** @var int */ - protected $retries = 0; - /** @var bool */ - protected $retainJob = false; + private IClientService $clientService; + private string $lookupServer; + private IConfig $config; + private IUserManager $userManager; + private IAccountManager $accountManager; + private Signer $signer; + protected int $retries = 0; + protected bool $retainJob = false; /** * @param ITimeFactory $time @@ -90,19 +82,16 @@ class RetryJob extends Job { } /** - * run the job, then remove it from the jobList - * - * @param IJobList $jobList - * @param ILogger|null $logger + * Run the job, then remove it from the jobList */ - public function execute(IJobList $jobList, ILogger $logger = null): void { + public function start(IJobList $jobList): void { if (!isset($this->argument['userId'])) { // Old background job without user id, just drop it. $jobList->remove($this, $this->argument); return; } - $this->retries = (int) $this->config->getUserValue($this->argument['userId'], 'lookup_server_connector', 'update_retries', 0); + $this->retries = (int) $this->config->getUserValue($this->argument['userId'], 'lookup_server_connector', 'update_retries', '0'); if ($this->shouldRemoveBackgroundJob()) { $jobList->remove($this, $this->argument); @@ -110,7 +99,7 @@ class RetryJob extends Job { } if ($this->shouldRun()) { - parent::execute($jobList, $logger); + parent::start($jobList); if (!$this->retainJob) { $jobList->remove($this, $this->argument); } @@ -124,8 +113,6 @@ class RetryJob extends Job { * - no valid lookup server URL given * - lookup server was disabled by the admin * - max retries are reached (set to 5) - * - * @return bool */ protected function shouldRemoveBackgroundJob(): bool { return $this->config->getSystemValueBool('has_internet_connection', true) === false || diff --git a/apps/oauth2/composer/composer/installed.php b/apps/oauth2/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/oauth2/composer/composer/installed.php +++ b/apps/oauth2/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/oauth2/l10n/de.js b/apps/oauth2/l10n/de.js index 30e5afee87f..c7f12b53b45 100644 --- a/apps/oauth2/l10n/de.js +++ b/apps/oauth2/l10n/de.js @@ -1,7 +1,7 @@ OC.L10N.register( "oauth2", { - "Your client is not authorized to connect. Please inform the administrator of your client." : "Dein Client ist nicht berechtigt, eine Verbindung herzustellen. Bitte informiere den Administrator Deines Clients.", + "Your client is not authorized to connect. Please inform the administrator of your client." : "Dein Client ist nicht berechtigt, eine Verbindung herzustellen. Bitte informiere den Administrator deines Clients.", "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Ermöglicht OAuth2 komplatible Authentifizierung durch andere Web-Anwendungen.", diff --git a/apps/oauth2/l10n/de.json b/apps/oauth2/l10n/de.json index d7a10fbc24f..4a19ba47ef8 100644 --- a/apps/oauth2/l10n/de.json +++ b/apps/oauth2/l10n/de.json @@ -1,5 +1,5 @@ { "translations": { - "Your client is not authorized to connect. Please inform the administrator of your client." : "Dein Client ist nicht berechtigt, eine Verbindung herzustellen. Bitte informiere den Administrator Deines Clients.", + "Your client is not authorized to connect. Please inform the administrator of your client." : "Dein Client ist nicht berechtigt, eine Verbindung herzustellen. Bitte informiere den Administrator deines Clients.", "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Ermöglicht OAuth2 komplatible Authentifizierung durch andere Web-Anwendungen.", diff --git a/apps/oauth2/l10n/es_SV.js b/apps/oauth2/l10n/es_SV.js index 4aec3467450..526958adef2 100644 --- a/apps/oauth2/l10n/es_SV.js +++ b/apps/oauth2/l10n/es_SV.js @@ -11,4 +11,4 @@ OC.L10N.register( "Secret" : "Secreto", "Delete" : "Borrar" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/oauth2/l10n/es_SV.json b/apps/oauth2/l10n/es_SV.json index 3cb30b3b90c..2640762b41a 100644 --- a/apps/oauth2/l10n/es_SV.json +++ b/apps/oauth2/l10n/es_SV.json @@ -8,5 +8,5 @@ "Client Identifier" : "Identificador del cliente", "Secret" : "Secreto", "Delete" : "Borrar" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/oauth2/src/App.vue b/apps/oauth2/src/App.vue index 3636a532ce1..8b9d2e7aff6 100644 --- a/apps/oauth2/src/App.vue +++ b/apps/oauth2/src/App.vue @@ -20,7 +20,7 @@ - --> <template> - <SettingsSection :title="t('oauth2', 'OAuth 2.0 clients')" + <NcSettingsSection :title="t('oauth2', 'OAuth 2.0 clients')" :description="t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName })" :doc-url="oauthDocLink"> <table v-if="clients.length > 0" class="grid"> @@ -54,11 +54,11 @@ type="url" name="redirectUri" :placeholder="t('oauth2', 'Redirection URI')"> - <Button class="inline-button"> + <NcButton class="inline-button"> {{ t('oauth2', 'Add') }} - </Button> + </NcButton> </form> - </SettingsSection> + </NcSettingsSection> </template> <script> @@ -66,16 +66,16 @@ import axios from '@nextcloud/axios' import OAuthItem from './components/OAuthItem' import { generateUrl } from '@nextcloud/router' import { getCapabilities } from '@nextcloud/capabilities' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' import { loadState } from '@nextcloud/initial-state' export default { name: 'App', components: { OAuthItem, - SettingsSection, - Button, + NcSettingsSection, + NcButton, }, props: { clients: { diff --git a/apps/oauth2/src/components/OAuthItem.vue b/apps/oauth2/src/components/OAuthItem.vue index 6f4c5ad0f7e..41874b1f02b 100644 --- a/apps/oauth2/src/components/OAuthItem.vue +++ b/apps/oauth2/src/components/OAuthItem.vue @@ -42,14 +42,14 @@ </table> </td> <td class="action-column"> - <Button type="tertiary-no-background" + <NcButton type="tertiary-no-background" :aria-label="t('oauth2', 'Delete')" @click="$emit('delete', id)"> <template #icon> <Delete :size="20" :title="t('oauth2', 'Delete')" /> </template> - </Button> + </NcButton> </td> </tr> </template> @@ -57,13 +57,13 @@ <script> import Delete from 'vue-material-design-icons/Delete' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' export default { name: 'OAuthItem', components: { Delete, - Button, + NcButton, }, props: { client: { diff --git a/apps/oauth2/tests/Controller/SettingsControllerTest.php b/apps/oauth2/tests/Controller/SettingsControllerTest.php index 4954d379f9d..216655190ae 100644 --- a/apps/oauth2/tests/Controller/SettingsControllerTest.php +++ b/apps/oauth2/tests/Controller/SettingsControllerTest.php @@ -72,15 +72,12 @@ class SettingsControllerTest extends TestCase { public function testAddClient() { $this->secureRandom - ->expects($this->at(0)) + ->expects($this->exactly(2)) ->method('generate') ->with(64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') - ->willReturn('MySecret'); - $this->secureRandom - ->expects($this->at(1)) - ->method('generate') - ->with(64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') - ->willReturn('MyClientIdentifier'); + ->willReturnOnConsecutiveCalls( + 'MySecret', + 'MyClientIdentifier'); $client = new Client(); $client->setName('My Client Name'); diff --git a/apps/provisioning_api/composer/composer/installed.php b/apps/provisioning_api/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/provisioning_api/composer/composer/installed.php +++ b/apps/provisioning_api/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/provisioning_api/l10n/ca.js b/apps/provisioning_api/l10n/ca.js index 23400639c0d..06c88ed818e 100644 --- a/apps/provisioning_api/l10n/ca.js +++ b/apps/provisioning_api/l10n/ca.js @@ -1,8 +1,18 @@ OC.L10N.register( "provisioning_api", { + "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuari iniciat ha de ser un administrador o tenir autorització per editar aquesta configuració.", + "Email confirmation" : "Confirmació de l'adreça electrònica", + "To enable the email address %s please click the button below." : "Per activar l'adreça de correu electrònic %s, feu clic al botó següent.", + "Confirm" : "Confirma", + "Email was already removed from account and cannot be confirmed anymore." : "El correu electrònic ja s'ha eliminat del compte i ja no es pot confirmar.", + "Could not verify mail because the token is expired." : "No s'ha pogut verificar el correu perquè el testimoni ha caducat.", + "Could not verify mail because the token is invalid." : "No s'ha pogut verificar el correu perquè el testimoni no és vàlid.", + "An unexpected error occurred. Please contact your admin." : "S'ha produït un error inesperat. Poseu-vos en contacte amb el vostre administrador.", + "Email confirmation successful" : "Confirmació del correu electrònic correcta", "Provisioning API" : "API d’aprovisionament", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per administrar usuaris, grups i aplicacions.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per crear, editar, suprimir i consultar atributs\n\t\td’usuari, consulta, definir i eliminar grups, definir quota i consulta d'emmagatzematge total utilitzat a Nextcloud. Usuaris d'administració de grup\n\t\ttambé poden consultar Nextcloud i realitzar les mateixes funcions que un administrador per als grups que gestionen. L'API també permet a\n\t\tun administrador consultar les aplicacions actives de Nextcloud, la informació de l'aplicació i habilitar o desactivar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, les sol·licituds HTTP es poden utilitzar a través d'una capçalera de autenticació bàsica per dur a terme qualsevol de les funcions\n\t\tque s'enumeren més amunt. Hi ha més informació disponible a la documentació de l'API d’aprovisionament, incloses les crides d'exemple\n\t\ti respostes del servidor." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per crear, editar, suprimir i consultar atributs\n\t\td’usuari, consulta, definir i eliminar grups, definir quota i consulta d'emmagatzematge total utilitzat a Nextcloud. Usuaris d'administració de grup\n\t\ttambé poden consultar Nextcloud i realitzar les mateixes funcions que un administrador per als grups que gestionen. L'API també permet a\n\t\tun administrador consultar les aplicacions actives de Nextcloud, la informació de l'aplicació i habilitar o desactivar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, les sol·licituds HTTP es poden utilitzar a través d'una capçalera de autenticació bàsica per dur a terme qualsevol de les funcions\n\t\tque s'enumeren més amunt. Hi ha més informació disponible a la documentació de l'API d’aprovisionament, incloses les crides d'exemple\n\t\ti respostes del servidor.", + "An unexpected error occurred. Please consult your sysadmin." : "S'ha produït un error inesperat. Si us plau, consulteu el vostre administrador del sistema." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/ca.json b/apps/provisioning_api/l10n/ca.json index 313696fb555..ae7c4f4ede2 100644 --- a/apps/provisioning_api/l10n/ca.json +++ b/apps/provisioning_api/l10n/ca.json @@ -1,6 +1,16 @@ { "translations": { + "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuari iniciat ha de ser un administrador o tenir autorització per editar aquesta configuració.", + "Email confirmation" : "Confirmació de l'adreça electrònica", + "To enable the email address %s please click the button below." : "Per activar l'adreça de correu electrònic %s, feu clic al botó següent.", + "Confirm" : "Confirma", + "Email was already removed from account and cannot be confirmed anymore." : "El correu electrònic ja s'ha eliminat del compte i ja no es pot confirmar.", + "Could not verify mail because the token is expired." : "No s'ha pogut verificar el correu perquè el testimoni ha caducat.", + "Could not verify mail because the token is invalid." : "No s'ha pogut verificar el correu perquè el testimoni no és vàlid.", + "An unexpected error occurred. Please contact your admin." : "S'ha produït un error inesperat. Poseu-vos en contacte amb el vostre administrador.", + "Email confirmation successful" : "Confirmació del correu electrònic correcta", "Provisioning API" : "API d’aprovisionament", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per administrar usuaris, grups i aplicacions.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per crear, editar, suprimir i consultar atributs\n\t\td’usuari, consulta, definir i eliminar grups, definir quota i consulta d'emmagatzematge total utilitzat a Nextcloud. Usuaris d'administració de grup\n\t\ttambé poden consultar Nextcloud i realitzar les mateixes funcions que un administrador per als grups que gestionen. L'API també permet a\n\t\tun administrador consultar les aplicacions actives de Nextcloud, la informació de l'aplicació i habilitar o desactivar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, les sol·licituds HTTP es poden utilitzar a través d'una capçalera de autenticació bàsica per dur a terme qualsevol de les funcions\n\t\tque s'enumeren més amunt. Hi ha més informació disponible a la documentació de l'API d’aprovisionament, incloses les crides d'exemple\n\t\ti respostes del servidor." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per crear, editar, suprimir i consultar atributs\n\t\td’usuari, consulta, definir i eliminar grups, definir quota i consulta d'emmagatzematge total utilitzat a Nextcloud. Usuaris d'administració de grup\n\t\ttambé poden consultar Nextcloud i realitzar les mateixes funcions que un administrador per als grups que gestionen. L'API també permet a\n\t\tun administrador consultar les aplicacions actives de Nextcloud, la informació de l'aplicació i habilitar o desactivar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, les sol·licituds HTTP es poden utilitzar a través d'una capçalera de autenticació bàsica per dur a terme qualsevol de les funcions\n\t\tque s'enumeren més amunt. Hi ha més informació disponible a la documentació de l'API d’aprovisionament, incloses les crides d'exemple\n\t\ti respostes del servidor.", + "An unexpected error occurred. Please consult your sysadmin." : "S'ha produït un error inesperat. Si us plau, consulteu el vostre administrador del sistema." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/de.js b/apps/provisioning_api/l10n/de.js index 82e09c88101..52691e7ef01 100644 --- a/apps/provisioning_api/l10n/de.js +++ b/apps/provisioning_api/l10n/de.js @@ -8,11 +8,11 @@ OC.L10N.register( "Email was already removed from account and cannot be confirmed anymore." : "Diese E-Mail-Adresse wurde bereits aus dem Konto entfernt und kann nicht mehr bestätigt werden.", "Could not verify mail because the token is expired." : "Die E-Mail konnte nicht verifiziert werden, da die Frist des Tokens abgelaufen ist.", "Could not verify mail because the token is invalid." : "Die E-Mail konnte nicht verifiziert werden, da der Token ungültig ist.", - "An unexpected error occurred. Please contact your admin." : "Es ist ein unerwarteter Fehler aufgetreten, bitte kontaktiere Deinen Administrator.", + "An unexpected error occurred. Please contact your admin." : "Es ist ein unerwarteter Fehler aufgetreten, bitte kontaktiere deinen Administrator.", "Email confirmation successful" : "Die E-Mail Bestätigung war erfolgreich.", "Provisioning API" : "Bereitstellungs-API", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Diese Anwendung stellt eine API bereit, um von anderen Systemen aus Benutzer, Gruppen und Apps zu verwalten.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest Du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", - "An unexpected error occurred. Please consult your sysadmin." : "Es ist ein unerwarteter Fehler aufgetreten, bitte kontaktiere Deinen Administrator." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", + "An unexpected error occurred. Please consult your sysadmin." : "Es ist ein unerwarteter Fehler aufgetreten, bitte kontaktiere deinen Administrator." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/de.json b/apps/provisioning_api/l10n/de.json index 934f06f88cb..bfa273dda7d 100644 --- a/apps/provisioning_api/l10n/de.json +++ b/apps/provisioning_api/l10n/de.json @@ -6,11 +6,11 @@ "Email was already removed from account and cannot be confirmed anymore." : "Diese E-Mail-Adresse wurde bereits aus dem Konto entfernt und kann nicht mehr bestätigt werden.", "Could not verify mail because the token is expired." : "Die E-Mail konnte nicht verifiziert werden, da die Frist des Tokens abgelaufen ist.", "Could not verify mail because the token is invalid." : "Die E-Mail konnte nicht verifiziert werden, da der Token ungültig ist.", - "An unexpected error occurred. Please contact your admin." : "Es ist ein unerwarteter Fehler aufgetreten, bitte kontaktiere Deinen Administrator.", + "An unexpected error occurred. Please contact your admin." : "Es ist ein unerwarteter Fehler aufgetreten, bitte kontaktiere deinen Administrator.", "Email confirmation successful" : "Die E-Mail Bestätigung war erfolgreich.", "Provisioning API" : "Bereitstellungs-API", "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Diese Anwendung stellt eine API bereit, um von anderen Systemen aus Benutzer, Gruppen und Apps zu verwalten.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest Du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", - "An unexpected error occurred. Please consult your sysadmin." : "Es ist ein unerwarteter Fehler aufgetreten, bitte kontaktiere Deinen Administrator." + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Diese Anwendung aktiviert eine Reihe von APIs, mit denen externe Systeme Benutzer erstellen, bearbeiten, löschen und abfragen können\n\t\tAttribute, Gruppen abfragen, festlegen und entfernen, Kontingent festlegen und Gesamtspeicher abfragen, der in Nextcloud verwendet wird. Gruppenadministratorbenutzer\n\t\tSie können auch Nextcloud abfragen und dieselben Funktionen wie ein Administrator für von ihnen verwaltete Gruppen ausführen. Die API ermöglicht auch\n\t\tEin Administrator, der nach aktiven Nextcloud-Anwendungen und Anwendungsinformationen fragt und eine App entfernt aktiviert oder deaktiviert.\n\t\tSobald die App aktiviert ist, können HTTP-Anforderungen über einen Basic Auth-Header verwendet werden, um eine der Funktionen auszuführen\n\t\toben aufgelistet. Weitere Informationen findest du in der Bereitstellung-API Dokumentation, einschließlich Beispielaufrufen\n\t\tund Serverantworten.", + "An unexpected error occurred. Please consult your sysadmin." : "Es ist ein unerwarteter Fehler aufgetreten, bitte kontaktiere deinen Administrator." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/pt_PT.js b/apps/provisioning_api/l10n/pt_PT.js new file mode 100644 index 00000000000..514d4485053 --- /dev/null +++ b/apps/provisioning_api/l10n/pt_PT.js @@ -0,0 +1,18 @@ +OC.L10N.register( + "provisioning_api", + { + "Logged in user must be an administrator or have authorization to edit this setting." : "O usuário conectado deve ser um administrador ou ter autorização para editar esta configuração. ", + "Email confirmation" : "Verificação de correio eletrónico.", + "To enable the email address %s please click the button below." : "Para habilitar o endereço de correio eletrónico %s por favor pressione o botão abaixo.", + "Confirm" : "Confirmar", + "Email was already removed from account and cannot be confirmed anymore." : "O endereço já foi removido da conta e não pode mais ser confirmado.", + "Could not verify mail because the token is expired." : "Não foi possível verificar o endereço porque o marcador expirou.", + "Could not verify mail because the token is invalid." : "Não foi possível verificar o endereço porque o marcador é inválido.", + "An unexpected error occurred. Please contact your admin." : "Ocorreu um erro inesperado. Contacte o seu administrador de sistemas.", + "Email confirmation successful" : "Endereço confirmado com sucesso", + "Provisioning API" : "API de aprovisionamento", + "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicação ativa um conjunto de API que sistemas externos podem usar para gerir utilizadores, grupos e aplicações.", + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicação ativa um conjunto de API que sistemas externos podem usar para gerir criar, editar, apagar ou pesquisar atributos de utilizadores,\n\t\tpesquisar, definir e remover grupos, definir cotas e consultar o armazenamento total usado em Nextcloud. Utilizadores administradores de grupos\n\t\ttambém podem pesquisar no Nextcloud e executar as mesmas funções que um administrador para os grupos que gerem. A API também permite\n\t\tque um administrador possa consultar aplicações ativas no Nextcloud, informações das mesmas e para ativar ou desativar uma aplicação remotamente.\n\t\tDepois de ativar uma aplicação, podem-se usar pedidos HTTP com um cabeçalho Basic Auth para executar qualquer uma das funções\n\t\tacima indicadas. Mais informações estão disponíveis na documentação da API de aprovisionamento, incluindo pedidos de exemplo\n\t\te respostas do servidor.", + "An unexpected error occurred. Please consult your sysadmin." : "Ocorreu um erro inesperado. Contacte o seu administrador de sistemas." +}, +"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/provisioning_api/l10n/pt_PT.json b/apps/provisioning_api/l10n/pt_PT.json new file mode 100644 index 00000000000..8b1f793cbc0 --- /dev/null +++ b/apps/provisioning_api/l10n/pt_PT.json @@ -0,0 +1,16 @@ +{ "translations": { + "Logged in user must be an administrator or have authorization to edit this setting." : "O usuário conectado deve ser um administrador ou ter autorização para editar esta configuração. ", + "Email confirmation" : "Verificação de correio eletrónico.", + "To enable the email address %s please click the button below." : "Para habilitar o endereço de correio eletrónico %s por favor pressione o botão abaixo.", + "Confirm" : "Confirmar", + "Email was already removed from account and cannot be confirmed anymore." : "O endereço já foi removido da conta e não pode mais ser confirmado.", + "Could not verify mail because the token is expired." : "Não foi possível verificar o endereço porque o marcador expirou.", + "Could not verify mail because the token is invalid." : "Não foi possível verificar o endereço porque o marcador é inválido.", + "An unexpected error occurred. Please contact your admin." : "Ocorreu um erro inesperado. Contacte o seu administrador de sistemas.", + "Email confirmation successful" : "Endereço confirmado com sucesso", + "Provisioning API" : "API de aprovisionamento", + "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Esta aplicação ativa um conjunto de API que sistemas externos podem usar para gerir utilizadores, grupos e aplicações.", + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Esta aplicação ativa um conjunto de API que sistemas externos podem usar para gerir criar, editar, apagar ou pesquisar atributos de utilizadores,\n\t\tpesquisar, definir e remover grupos, definir cotas e consultar o armazenamento total usado em Nextcloud. Utilizadores administradores de grupos\n\t\ttambém podem pesquisar no Nextcloud e executar as mesmas funções que um administrador para os grupos que gerem. A API também permite\n\t\tque um administrador possa consultar aplicações ativas no Nextcloud, informações das mesmas e para ativar ou desativar uma aplicação remotamente.\n\t\tDepois de ativar uma aplicação, podem-se usar pedidos HTTP com um cabeçalho Basic Auth para executar qualquer uma das funções\n\t\tacima indicadas. Mais informações estão disponíveis na documentação da API de aprovisionamento, incluindo pedidos de exemplo\n\t\te respostas do servidor.", + "An unexpected error occurred. Please consult your sysadmin." : "Ocorreu um erro inesperado. Contacte o seu administrador de sistemas." +},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +}
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/tr.js b/apps/provisioning_api/l10n/tr.js index 5153712d52b..b8bcf83bf8d 100644 --- a/apps/provisioning_api/l10n/tr.js +++ b/apps/provisioning_api/l10n/tr.js @@ -6,7 +6,7 @@ OC.L10N.register( "To enable the email address %s please click the button below." : "%s e-posta adresini doğrulamak için aşağıdaki düğmeye tıklayın.", "Confirm" : "Onayla", "Email was already removed from account and cannot be confirmed anymore." : "E-posta hesaptan kaldırılmış olduğundan artık onaylanamaz.", - "Could not verify mail because the token is expired." : "Kodun süresi geçtiğinden e-posta doğrulanamadı.", + "Could not verify mail because the token is expired." : "Kodun geçerlilik süresi dolmuş olduğundan e-posta doğrulanamadı.", "Could not verify mail because the token is invalid." : "Kod geçersiz olduğundan e-posta doğrulanamadı.", "An unexpected error occurred. Please contact your admin." : "Beklenmeyen bir sorun çıktı. Lütfen BT yöneticiniz ile görüşün.", "Email confirmation successful" : "E-posta onaylandı", diff --git a/apps/provisioning_api/l10n/tr.json b/apps/provisioning_api/l10n/tr.json index d586d7d79d3..0b9745064e4 100644 --- a/apps/provisioning_api/l10n/tr.json +++ b/apps/provisioning_api/l10n/tr.json @@ -4,7 +4,7 @@ "To enable the email address %s please click the button below." : "%s e-posta adresini doğrulamak için aşağıdaki düğmeye tıklayın.", "Confirm" : "Onayla", "Email was already removed from account and cannot be confirmed anymore." : "E-posta hesaptan kaldırılmış olduğundan artık onaylanamaz.", - "Could not verify mail because the token is expired." : "Kodun süresi geçtiğinden e-posta doğrulanamadı.", + "Could not verify mail because the token is expired." : "Kodun geçerlilik süresi dolmuş olduğundan e-posta doğrulanamadı.", "Could not verify mail because the token is invalid." : "Kod geçersiz olduğundan e-posta doğrulanamadı.", "An unexpected error occurred. Please contact your admin." : "Beklenmeyen bir sorun çıktı. Lütfen BT yöneticiniz ile görüşün.", "Email confirmation successful" : "E-posta onaylandı", diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index 839ac404c94..37bbdc9e1c4 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -426,7 +426,14 @@ class UsersController extends AUserData { } if ($displayName !== '') { - $this->editUser($userid, self::USER_FIELD_DISPLAYNAME, $displayName); + try { + $this->editUser($userid, self::USER_FIELD_DISPLAYNAME, $displayName); + } catch (OCSException $e) { + if ($newUser instanceof IUser) { + $newUser->delete(); + } + throw $e; + } } if ($quota !== '') { @@ -837,8 +844,10 @@ class UsersController extends AUserData { switch ($key) { case self::USER_FIELD_DISPLAYNAME: case IAccountManager::PROPERTY_DISPLAYNAME: - if (!$targetUser->setDisplayName($value)) { - throw new OCSException('Invalid displayname', 102); + try { + $targetUser->setDisplayName($value); + } catch (InvalidArgumentException $e) { + throw new OCSException($e->getMessage(), 101); } break; case self::USER_FIELD_QUOTA: diff --git a/apps/provisioning_api/tests/Controller/AppsControllerTest.php b/apps/provisioning_api/tests/Controller/AppsControllerTest.php index d4237508a31..187247b9f66 100644 --- a/apps/provisioning_api/tests/Controller/AppsControllerTest.php +++ b/apps/provisioning_api/tests/Controller/AppsControllerTest.php @@ -67,7 +67,7 @@ class AppsControllerTest extends \OCA\Provisioning_API\Tests\TestCase { public function testGetAppInfo() { $result = $this->api->getAppInfo('provisioning_api'); - $expected = \OC_App::getAppInfo('provisioning_api'); + $expected = $this->appManager->getAppInfo('provisioning_api'); $this->assertEquals($expected, $result->getData()); } diff --git a/apps/settings/composer/composer/installed.php b/apps/settings/composer/composer/installed.php index 6e11f678155..c54b7ff5437 100644 --- a/apps/settings/composer/composer/installed.php +++ b/apps/settings/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '3c77e489a6bb2541cd5d0c92b5498e71ec1a873f', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '3c77e489a6bb2541cd5d0c92b5498e71ec1a873f', 'dev_requirement' => false, ), ), diff --git a/apps/settings/css/settings.css b/apps/settings/css/settings.css index d363f869cf3..735d8c0b1fb 100644 --- a/apps/settings/css/settings.css +++ b/apps/settings/css/settings.css @@ -169,7 +169,9 @@ input#openid, input#webdav { grid-template-rows: 1fr 1fr 1fr 2fr; } .profile-settings-container #locale h3 { - height: 32px; + height: 44px; + display: flex; + align-items: center; } .personal-show-container { @@ -221,7 +223,7 @@ select#timezone, select#languageinput, select#localeinput { text-decoration: underline; } .development-notice a:not(.link-button):hover { - background-color: var(--color-primary-element-lighter); + background-color: var(--color-primary-element-hover); } .link-button { @@ -311,6 +313,8 @@ select#timezone, select#languageinput, select#localeinput { flex-wrap: nowrap; justify-content: flex-start; width: 100%; + align-items: center; + gap: 8px; } .personal-settings-container > div h3 > label { white-space: nowrap; @@ -384,7 +388,7 @@ select#timezone, select#languageinput, select#localeinput { width: 44px; height: 44px; padding: 10px; - margin: -12px 0 0 8px; + margin: 0; background: none; border: none; } @@ -480,12 +484,32 @@ table.nostyle td { #security-password #passwordform { display: flex; flex-wrap: wrap; + flex-direction: column; + gap: 1rem; } -#security-password #passwordform #pass1, #security-password #passwordform .personal-show-container, #security-password #passwordform #passwordbutton { +#security-password #passwordform .input-control { + display: flex; + flex-wrap: wrap; + flex-direction: column; +} +#security-password #passwordform .input-control label { + margin-bottom: 0.5rem; +} +#security-password #passwordform #pass1, #security-password #passwordform .personal-show-container { flex-shrink: 1; - width: 200px; + width: 300px; min-width: 150px; } +#security-password #passwordform .personal-show-container #pass2 { + position: relative; + top: 0.5rem; +} +#security-password #passwordform .personal-show-container .personal-show-label { + top: 34px !important; + margin-right: 0; + margin-top: 0 !important; + right: 3px; +} #security-password #passwordform #pass2 { width: 100%; } @@ -497,7 +521,7 @@ table.nostyle td { left: 0; width: 100%; border-radius: 0 0 2px 2px; - margin-top: -6px; + margin-top: 5px; overflow: hidden; height: 3px; } @@ -927,7 +951,8 @@ span.version { padding-left: 60px; width: 100%; background-color: var(--color-main-background); - position: fixed; + position: sticky; + top: 0; z-index: 1; display: flex; align-items: center; @@ -1169,7 +1194,7 @@ table.grid td.date { } #mail_smtpport { - width: 40px; + width: 60px; } .cronlog { @@ -1274,11 +1299,6 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { } /* USERS LIST -------------------------------------------------------------- */ -#body-settings { - overflow-x: scroll; - min-height: 100%; - height: auto; -} #body-settings #app-content.user-list-grid { display: grid; grid-column-gap: 20px; @@ -1364,7 +1384,7 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { background-color: var(--color-main-background); z-index: 100; /* above multiselect */ - top: 50px; + top: 0; } #body-settings #app-content.user-list-grid .row#grid-header.sticky { box-shadow: 0 -2px 10px 1px var(--color-box-shadow); diff --git a/apps/settings/css/settings.css.map b/apps/settings/css/settings.css.map index 8065e4fe436..bdeacb4f959 100644 --- a/apps/settings/css/settings.css.map +++ b/apps/settings/css/settings.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","settings.scss","../../../core/css/functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD3CC;EACC;;;AAIF;AACA;EACC;;;AAGD;AACA;AC6CC;EAEA;;;AD3CD;ACyCC;EAEA;;;ADvCD;ACqCC;EAEA;;;ADnCD;ACiCC;EAEA;;;AD/BD;AC6BC;EAEA;;;AD1BA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAED;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AAGC;EACC;;;AAKH;EACC;;;AAIA;EACC;;AAEA;EACC;;AAIA;EACC;;;AAOH;EAGC;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAMF;EACC;;AACA;EACC;;AACA;EACC;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;EACA;;AAGD;EACC;EACA;;;AAMF;EACC;IACC;IACA;;EAEA;IACC;IACA;;EAGD;IACC;IACA;;EAGD;IACC;IACA;IACA;;;AAKH;EACC;IACC;IACA;;EAEA;IACC;;EAGD;IACC;IACA;;EAGD;IACC;IACA;;;AAKH;EACC;IACC;IACA;;EAEA;IACC;;EAGD;IACC;IACA;;EAGD;IACC;IACA;;;AAKH;EACC;EACA;EACA;;AAEA;EACC;;AAIA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;EACA;EACA;EACA;;;AAKF;EACC;EACA;;AAEA;EACC;;AAEA;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;;AAKF;AACA;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAIF;EACC;;AAGC;EAEC;EACA;;AAEA;EACC;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;EAEA;;AAEA;EACC;;;AAQN;EACC;;;AAGD;EACC;;;AAIA;EACC;;AAGD;EACC;;;AAIF;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAMD;EACC;;AAGD;EACC;;;AAKD;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAGC;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;AAGC;EACC;EACA;EACA;EACA;;AAGD;EACC;;;AAKD;AAAA;EAEC;;;AAKD;AAAA;EAEC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;AACA;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;;AAGD;EAEC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;;;AAGD;AACA;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACC;;AACA;EACC;EACA;EACA;;AAGD;EACC;;AAIA;EACC;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;;;AAIA;EACC;;;AAMD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;;AAEA;AAAA;EAEC;;AAGD;EACC;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;AAIF;EACC;IACC;;;AAIF;AACA;EAEE;IACC;;;AAKH;EACC;IACC;;;AAIF;EACC;;;AAGD;EACC;AACA;AAKA;;AAJA;EACC;;AAID;EACC;;AAEA;EACC;EACA;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EAwGC;EACA;EACA;AAkDA;;AAxJA;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC,QAfgB;EAgBhB,SAjBiB;EAmBjB,cAlBgB;EAmBhB;EACA;EACA;EACA;EACA;EACA;;AAGD;EAQC;;AAPA;EACC;EACA;EACA;EACA,YAhCe;;AAqChB;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAKF;EACC;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAEA;EACC;EACA;EACA;;AAKH;EACC;EACA;AACA;EACA;EACA;EACA;;AAOD;EACC;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;;AAKD;EACC;;AAGD;EACC;;AAGD;EACC;;AAEA;EACC;;AAKD;EACC;;AAKD;EACC;;AAMH;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAQF;EACC;;;AAKH;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAOA;AAAA;AAAA;AAAA;EACC;;AAEA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;;;AAMF;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;AACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AAIA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAIA;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;;AAKF;AACA;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKD;EACC;;AAGD;EACC;;;AAIF;EACC;;AAEA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;;;AAID;AACA;EAGC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EAGC;EACA;EACA,YAhBgB;EAiBhB;EACA;EACA;AACA;AAAA;EAEA,uBACE;EAOF;AAMA;AA0DA;;AA9DA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC,WA3CkB;;AA6ClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAID;EAMC;;AAIF;AAAA;AAAA;EAGC,WAjEkB;;AAmElB;AAAA;AAAA;EACC;EACA;EACA;;AAIF;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAID;EACC;EACA;EACA;EACA;AAAc;EACd,KD16CY;;AC46CZ;EACC;;AAIF;EACC;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUC;EACA;EACA;EACA;EACA;;AAKD;EACC;;AAGD;EACC;;AAIF;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;AAaA;AA2GA;;AAtHA;AAAA;AAAA;EACC;EACA;;AAIA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKF;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;EACC;;AAKA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;AAAA;AAAA;AAEC;EACA;EACA;EACA;AACA;AAAA;AAAA;EAGA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;EACA;;AAIF;AAAA;AAAA;EACC;EACA;;AAEA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AAEA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;EACC;EACA;;AAEA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAKH;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;;AAMH;AAAA;AAAA;EACC;;AAKH;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;EACI;;;AAGJ;EACE;IACE;;;AAGJ;EACE;IACE","file":"settings.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","settings.scss","../../../core/css/functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD3CC;EACC;;;AAIF;AACA;EACC;;;AAGD;AACA;AC6CC;EAEA;;;AD3CD;ACyCC;EAEA;;;ADvCD;ACqCC;EAEA;;;ADnCD;ACiCC;EAEA;;;AD/BD;AC6BC;EAEA;;;AD1BA;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAED;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;;AAGD;EACC;;AAGD;EACC;;;AAKH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AAGC;EACC;EACA;EACA;;;AAKH;EACC;;;AAIA;EACC;;AAEA;EACC;;AAIA;EACC;;;AAOH;EAGC;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAMF;EACC;;AACA;EACC;;AACA;EACC;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;EACA;;AAGD;EACC;EACA;;;AAMF;EACC;IACC;IACA;;EAEA;IACC;IACA;;EAGD;IACC;IACA;;EAGD;IACC;IACA;IACA;;;AAKH;EACC;IACC;IACA;;EAEA;IACC;;EAGD;IACC;IACA;;EAGD;IACC;IACA;;;AAKH;EACC;IACC;IACA;;EAEA;IACC;;EAGD;IACC;IACA;;EAGD;IACC;IACA;;;AAKH;EACC;EACA;EACA;;AAEA;EACC;;AAIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;EACA;EACA;EACA;;;AAKF;EACC;EACA;;AAEA;EACC;;AAEA;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;;AAKF;AACA;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAIF;EACC;;AAGC;EAEC;EACA;;AAEA;EACC;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;EAEA;;AAEA;EACC;;;AAQN;EACC;;;AAGD;EACC;;;AAIA;EACC;;AAGD;EACC;;;AAIF;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAMD;EACC;;AAGD;EACC;;;AAKD;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;;AAKA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAGC;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;AAGC;EACC;EACA;EACA;EACA;;AAGD;EACC;;;AAKD;AAAA;EAEC;;;AAKD;AAAA;EAEC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;AACA;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;;AAGD;EAEC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;;;AAGD;AACA;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACC;;AACA;EACC;EACA;EACA;;AAGD;EACC;;AAIA;EACC;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;;;AAIA;EACC;;;AAMD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;;AAEA;AAAA;EAEC;;AAGD;EACC;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;AAIF;EACC;IACC;;;AAIF;AACA;EAEE;IACC;;;AAKH;EACC;IACC;;;AAIF;EACC;;;AAGD;EACC;AACA;AAKA;;AAJA;EACC;;AAID;EACC;;AAEA;EACC;EACA;EACA;;;AAKH;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EAyGC;EACA;EACA;AAkDA;;AAzJA;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC,QAfgB;EAgBhB,SAjBiB;EAmBjB,cAlBgB;EAmBhB;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAQC;;AAPA;EACC;EACA;EACA;EACA,YAjCe;;AAsChB;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAKF;EACC;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAEA;EACC;EACA;EACA;;AAKH;EACC;EACA;AACA;EACA;EACA;EACA;;AAOD;EACC;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;;AAKD;EACC;;AAGD;EACC;;AAGD;EACC;;AAEA;EACC;;AAKD;EACC;;AAKD;EACC;;AAMH;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAQF;EACC;;;AAKH;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAOA;AAAA;AAAA;AAAA;EACC;;AAEA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;;;AAMF;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;AACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AAIA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAIA;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;;AAKF;AACA;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKD;EACC;;AAGD;EACC;;;AAIF;EACC;;AAEA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;;;AAID;AAKC;EACC;EACA;EACA;;AAEA;EAGC;EACA;EACA,YAbgB;EAchB;EACA;EACA;AACA;AAAA;EAEA,uBACE;EAOF;AAMA;AA0DA;;AA9DA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC,WAxCkB;;AA0ClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAID;EAMC;;AAIF;AAAA;AAAA;EAGC,WA9DkB;;AAgElB;AAAA;AAAA;EACC;EACA;EACA;;AAIF;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAID;EACC;EACA;EACA;EACA;AAAc;EACd;;AAEA;EACC;;AAIF;EACC;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUC;EACA;EACA;EACA;EACA;;AAKD;EACC;;AAGD;EACC;;AAIF;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;AAaA;AA2GA;;AAtHA;AAAA;AAAA;EACC;EACA;;AAIA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKF;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;EACC;;AAKA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;AAAA;AAAA;AAEC;EACA;EACA;EACA;AACA;AAAA;AAAA;EAGA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;EACA;;AAIF;AAAA;AAAA;EACC;EACA;;AAEA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AAEA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;EACC;EACA;;AAEA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAKH;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;;AAMH;AAAA;AAAA;EACC;;AAKH;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;EACI;;;AAGJ;EACE;IACE;;;AAGJ;EACE;IACE","file":"settings.css"}
\ No newline at end of file diff --git a/apps/settings/css/settings.scss b/apps/settings/css/settings.scss index 9f0ab432cc7..2343ac7de34 100644 --- a/apps/settings/css/settings.scss +++ b/apps/settings/css/settings.scss @@ -120,7 +120,9 @@ input { #locale { h3 { - height: 32px; + height: 44px; + display: flex; + align-items: center; } } } @@ -188,7 +190,7 @@ select { a:not(.link-button) { text-decoration: underline; &:hover { - background-color: var(--color-primary-element-lighter); + background-color: var(--color-primary-element-hover); } } } @@ -300,6 +302,8 @@ select { flex-wrap: nowrap; justify-content: flex-start; width: 100%; + align-items: center; + gap: 8px; > label { white-space: nowrap; @@ -391,7 +395,7 @@ select { width: 44px; height: 44px; padding: 10px; - margin: -12px 0 0 8px; + margin: 0; background: none; border: none; @@ -514,13 +518,37 @@ table.nostyle { #passwordform { display: flex; flex-wrap: wrap; + flex-direction: column; + gap: 1rem; + .input-control { + display: flex; + flex-wrap: wrap; + flex-direction: column; + label { + margin-bottom: 0.5rem; + } + } - #pass1, .personal-show-container, #passwordbutton { + #pass1, .personal-show-container { flex-shrink: 1; - width: 200px; + width: 300px; min-width: 150px; } + // Extremely fragile code, to be replaced by PasswordField component soon + .personal-show-container { + #pass2 { + position: relative; + top: 0.5rem; + } + .personal-show-label { + top: 34px !important; + margin-right: 0; + margin-top: 0 !important; + right: 3px; + } + } + #pass2 { width: 100%; } @@ -534,7 +562,7 @@ table.nostyle { left: 0; width: 100%; border-radius: 0 0 2px 2px; - margin-top: -6px; + margin-top: 5px; overflow: hidden; height: 3px; } @@ -1042,7 +1070,8 @@ span.version { padding-left: $toolbar-height; width: 100%; background-color: var(--color-main-background); - position: fixed; + position: sticky; + top: 0; z-index: 1; display: flex; align-items: center; @@ -1330,7 +1359,7 @@ table.grid td.date { } #mail_smtpport { - width: 40px; + width: 60px; } .cronlog { @@ -1457,9 +1486,6 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { #body-settings { $grid-row-height: 60px; $grid-col-min-width: 160px; - overflow-x: scroll; - min-height: 100%; - height: auto; #app-content.user-list-grid { display: grid; @@ -1555,7 +1581,7 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { align-self: normal; background-color: var(--color-main-background); z-index: 100; /* above multiselect */ - top: variables.$header-height; + top: 0; &.sticky { box-shadow: 0 -2px 10px 1px var(--color-box-shadow); diff --git a/apps/settings/js/federationsettingsview.js b/apps/settings/js/federationsettingsview.js index e05cc9f20f4..a4a1a31223e 100644 --- a/apps/settings/js/federationsettingsview.js +++ b/apps/settings/js/federationsettingsview.js @@ -106,6 +106,7 @@ self._onScopeChanged(field, scope); }); $icon.append(scopeMenu.$el); + $icon.attr('aria-expanded', 'false'); $icon.on('click', _.bind(scopeMenu.show, scopeMenu)); $icon.on('keydown', function(e) { if (e.keyCode === 32) { @@ -129,7 +130,11 @@ if ( field === 'avatar' || field === 'email' || - field === 'displayname' + field === 'displayname' || + field === 'twitter' || + field === 'address' || + field === 'website' || + field === 'phone' ) { return; } diff --git a/apps/settings/l10n/af.js b/apps/settings/l10n/af.js index cbe28f7062d..9e081a83999 100644 --- a/apps/settings/l10n/af.js +++ b/apps/settings/l10n/af.js @@ -56,10 +56,16 @@ OC.L10N.register( "Copy" : "Kopieer", "Profile" : "Profiel", "Enable" : "Aktiveer", + "Current password" : "Huidige wagwoord", + "New password" : "Nuwe wagwoord", + "Change password" : "Verander wagwoord", "Your email address" : "U e-posadres", "No email address set" : "Geen e-posadres ingestel", "Language" : "Taal", "Help translate" : "Help met vertaling", + "Your phone number" : "U foonnommer", + "Your Twitter handle" : "U Twitter-handvatsel", + "Your website" : "U webwerf", "Add" : "Voeg by", "Cancel" : "Kanselleer", "Display name" : "Vertoonnaam", @@ -78,7 +84,7 @@ OC.L10N.register( "Active users" : "Aktiewe gebruikers", "Send email to new user" : "Stuur e-pos aan nuwe gebruiker", "Email sent" : "E-pos gestuur", - "Address" : "Adres", + "Location" : "Ligging", "About" : "Oor", "Full name" : "Volle naam", "Phone number" : "Foonnommer", @@ -108,15 +114,12 @@ OC.L10N.register( "Remove image" : "Verwyder beeld", "png or jpg, max. 20 MB" : "png of jpg, maks. 20 MB", "Choose as profile picture" : "Kies as profielprent", - "Your phone number" : "U foonnommer", - "Your postal address" : "U posadres", - "Link https://…" : "Skakel https://…", - "Twitter handle @…" : "Twitter-handvatsel @…", - "Current password" : "Huidige wagwoord", - "New password" : "Nuwe wagwoord", - "Change password" : "Verander wagwoord", "All languages" : "Alle tale", "Everyone" : "Almal", - "days" : "dae" + "days" : "dae", + "Address" : "Adres", + "Your postal address" : "U posadres", + "Link https://…" : "Skakel https://…", + "Twitter handle @…" : "Twitter-handvatsel @…" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/af.json b/apps/settings/l10n/af.json index 87de85e8c58..dffc0e6aab4 100644 --- a/apps/settings/l10n/af.json +++ b/apps/settings/l10n/af.json @@ -54,10 +54,16 @@ "Copy" : "Kopieer", "Profile" : "Profiel", "Enable" : "Aktiveer", + "Current password" : "Huidige wagwoord", + "New password" : "Nuwe wagwoord", + "Change password" : "Verander wagwoord", "Your email address" : "U e-posadres", "No email address set" : "Geen e-posadres ingestel", "Language" : "Taal", "Help translate" : "Help met vertaling", + "Your phone number" : "U foonnommer", + "Your Twitter handle" : "U Twitter-handvatsel", + "Your website" : "U webwerf", "Add" : "Voeg by", "Cancel" : "Kanselleer", "Display name" : "Vertoonnaam", @@ -76,7 +82,7 @@ "Active users" : "Aktiewe gebruikers", "Send email to new user" : "Stuur e-pos aan nuwe gebruiker", "Email sent" : "E-pos gestuur", - "Address" : "Adres", + "Location" : "Ligging", "About" : "Oor", "Full name" : "Volle naam", "Phone number" : "Foonnommer", @@ -106,15 +112,12 @@ "Remove image" : "Verwyder beeld", "png or jpg, max. 20 MB" : "png of jpg, maks. 20 MB", "Choose as profile picture" : "Kies as profielprent", - "Your phone number" : "U foonnommer", - "Your postal address" : "U posadres", - "Link https://…" : "Skakel https://…", - "Twitter handle @…" : "Twitter-handvatsel @…", - "Current password" : "Huidige wagwoord", - "New password" : "Nuwe wagwoord", - "Change password" : "Verander wagwoord", "All languages" : "Alle tale", "Everyone" : "Almal", - "days" : "dae" + "days" : "dae", + "Address" : "Adres", + "Your postal address" : "U posadres", + "Link https://…" : "Skakel https://…", + "Twitter handle @…" : "Twitter-handvatsel @…" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js index 5f58063d4e9..84b4d7824f5 100644 --- a/apps/settings/l10n/ar.js +++ b/apps/settings/l10n/ar.js @@ -132,10 +132,14 @@ OC.L10N.register( "No encryption module loaded, please enable an encryption module in the app menu." : "لم يتم تحميل حزمة التشفير، يرجى تفعيل حزمة التشفير من قائمة التطبيق.", "Select default encryption module:" : "اختر حزمة التشفير الافتراضية:", "Remove group" : "حذف الفريق", + "Current password" : "كلمات السر الحالية", + "New password" : "كلمات سر جديدة", + "Change password" : "عدل كلمة السر", "Your email address" : "عنوانك البريدي", "No email address set" : "لم يتم إدخال أي عنوان للبريد الإلكتروني", "Language" : "اللغة", "Help translate" : "ساعد في الترجمة", + "Your phone number" : "رقم هاتفك", "Add" : "إضافة", "Delete user" : "احذف المستخدم", "Cancel" : "الغاء", @@ -169,7 +173,7 @@ OC.L10N.register( "Not saved" : "لم يتم حفظه", "Sending…" : "جارٍ الإرسال …", "Email sent" : "تم ارسال البريد الالكتروني", - "Address" : "العنوان", + "Location" : "الموقع", "Avatar" : "الصورة الرمزية", "About" : "عن", "Full name" : "الإسم الكامل", @@ -228,13 +232,6 @@ OC.L10N.register( "You are a member of the following groups:" : "إنك عضو في الفِرَق التالية:", "You are using <strong>%s</strong>" : "تستخدم حاليا <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "تستخدم حاليا <strong>%1$s</strong> مِن أصل <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "رقم هاتفك", - "Your postal address" : "عنوان البريد العادي", - "Link https://…" : "الرابط https://…", - "Twitter handle @…" : "حساب تويتر @…", - "Current password" : "كلمات السر الحالية", - "New password" : "كلمات سر جديدة", - "Change password" : "عدل كلمة السر", "Migration in progress. Please wait until the migration is finished" : "عملية الترحيل جارية. الرجاء الإنتظار حتى تكتمل العملية", "Migration started …" : "بدأت عملية الترحيل …", "Couldn't remove app." : "لم نتمكّن مِن حذف التطبيق.", @@ -248,6 +245,10 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "يجب عليك دمج مفتاح التشفير من التشفير السابق (ownCloud <= 8.0) إلى الجديد.", "Start migration" : "إبدأ الدمج", "days" : "أيام", - "No display name set" : "لم يتم إدخال أي إسم" + "No display name set" : "لم يتم إدخال أي إسم", + "Address" : "العنوان", + "Your postal address" : "عنوان البريد العادي", + "Link https://…" : "الرابط https://…", + "Twitter handle @…" : "حساب تويتر @…" }, "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json index 6c5ab247f02..bf3fb4b1af1 100644 --- a/apps/settings/l10n/ar.json +++ b/apps/settings/l10n/ar.json @@ -130,10 +130,14 @@ "No encryption module loaded, please enable an encryption module in the app menu." : "لم يتم تحميل حزمة التشفير، يرجى تفعيل حزمة التشفير من قائمة التطبيق.", "Select default encryption module:" : "اختر حزمة التشفير الافتراضية:", "Remove group" : "حذف الفريق", + "Current password" : "كلمات السر الحالية", + "New password" : "كلمات سر جديدة", + "Change password" : "عدل كلمة السر", "Your email address" : "عنوانك البريدي", "No email address set" : "لم يتم إدخال أي عنوان للبريد الإلكتروني", "Language" : "اللغة", "Help translate" : "ساعد في الترجمة", + "Your phone number" : "رقم هاتفك", "Add" : "إضافة", "Delete user" : "احذف المستخدم", "Cancel" : "الغاء", @@ -167,7 +171,7 @@ "Not saved" : "لم يتم حفظه", "Sending…" : "جارٍ الإرسال …", "Email sent" : "تم ارسال البريد الالكتروني", - "Address" : "العنوان", + "Location" : "الموقع", "Avatar" : "الصورة الرمزية", "About" : "عن", "Full name" : "الإسم الكامل", @@ -226,13 +230,6 @@ "You are a member of the following groups:" : "إنك عضو في الفِرَق التالية:", "You are using <strong>%s</strong>" : "تستخدم حاليا <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "تستخدم حاليا <strong>%1$s</strong> مِن أصل <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "رقم هاتفك", - "Your postal address" : "عنوان البريد العادي", - "Link https://…" : "الرابط https://…", - "Twitter handle @…" : "حساب تويتر @…", - "Current password" : "كلمات السر الحالية", - "New password" : "كلمات سر جديدة", - "Change password" : "عدل كلمة السر", "Migration in progress. Please wait until the migration is finished" : "عملية الترحيل جارية. الرجاء الإنتظار حتى تكتمل العملية", "Migration started …" : "بدأت عملية الترحيل …", "Couldn't remove app." : "لم نتمكّن مِن حذف التطبيق.", @@ -246,6 +243,10 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "يجب عليك دمج مفتاح التشفير من التشفير السابق (ownCloud <= 8.0) إلى الجديد.", "Start migration" : "إبدأ الدمج", "days" : "أيام", - "No display name set" : "لم يتم إدخال أي إسم" + "No display name set" : "لم يتم إدخال أي إسم", + "Address" : "العنوان", + "Your postal address" : "عنوان البريد العادي", + "Link https://…" : "الرابط https://…", + "Twitter handle @…" : "حساب تويتر @…" },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" }
\ No newline at end of file diff --git a/apps/settings/l10n/ast.js b/apps/settings/l10n/ast.js index b29ff4ca9da..de828cbb390 100644 --- a/apps/settings/l10n/ast.js +++ b/apps/settings/l10n/ast.js @@ -118,10 +118,15 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta ye l'alvertencia final: ¿De xuru que quies activar el cifráu?", "No encryption module loaded, please enable an encryption module in the app menu." : "Nun se cargó dengún módulu de cifráu, activa un módulu de cifráu nel menú d'aplicaciones.", "Select default encryption module:" : "Esbilla'l módulu predetermináu de cifráu:", + "Current password" : "Contraseña actual", + "New password" : "Contraseña nueva", + "Change password" : "Camudar contraseña", "Your email address" : "Direición de corréu-e", "No email address set" : "Nun s'afitó denguna direición de corréu", "Language" : "Llingua", "Help translate" : "Ayúdanos nes traducciones", + "Your phone number" : "El to númberu de teléfonu", + "Your website" : "El to sitiu web", "Add" : "Amestar", "Cancel" : "Encaboxar", "{size} used" : "{size} usaos", @@ -148,7 +153,7 @@ OC.L10N.register( "Not saved" : "Nun se guardó", "Sending…" : "Unviando...", "Email sent" : "Corréu-e unviáu", - "Address" : "Direición", + "Location" : "Llocalización", "About" : "Tocante a", "Full name" : "Nome completu", "Phone number" : "Númberu de teléfonu", @@ -201,12 +206,6 @@ OC.L10N.register( "Remove image" : "Desaniciar imaxe", "png or jpg, max. 20 MB" : "png o jpg, máximu 20 MB", "Picture provided by original account" : "Semeya fornida pola cuenta orixinal", - "Your phone number" : "El to númberu de teléfonu", - "Your postal address" : "La to direición postal", - "Link https://…" : "Enllaz https://…", - "Current password" : "Contraseña actual", - "New password" : "Contraseña nueva", - "Change password" : "Camudar contraseña", "Migration in progress. Please wait until the migration is finished" : "Migración en cursu. Espera fasta que la migración fine, por favor.", "Migration started …" : "Migración aniciada...", "Couldn't remove app." : "Nun pudo desaniciase l'aplicación.", @@ -224,6 +223,9 @@ OC.L10N.register( "Recommended" : "Recomendáu", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php precisa executalu l'usuariu del sistema «%s».", "days" : "díes", - "No display name set" : "Nun s'afitó'l nome p'amosar" + "No display name set" : "Nun s'afitó'l nome p'amosar", + "Address" : "Direición", + "Your postal address" : "La to direición postal", + "Link https://…" : "Enllaz https://…" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/ast.json b/apps/settings/l10n/ast.json index 50c0c49c863..11478265568 100644 --- a/apps/settings/l10n/ast.json +++ b/apps/settings/l10n/ast.json @@ -116,10 +116,15 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta ye l'alvertencia final: ¿De xuru que quies activar el cifráu?", "No encryption module loaded, please enable an encryption module in the app menu." : "Nun se cargó dengún módulu de cifráu, activa un módulu de cifráu nel menú d'aplicaciones.", "Select default encryption module:" : "Esbilla'l módulu predetermináu de cifráu:", + "Current password" : "Contraseña actual", + "New password" : "Contraseña nueva", + "Change password" : "Camudar contraseña", "Your email address" : "Direición de corréu-e", "No email address set" : "Nun s'afitó denguna direición de corréu", "Language" : "Llingua", "Help translate" : "Ayúdanos nes traducciones", + "Your phone number" : "El to númberu de teléfonu", + "Your website" : "El to sitiu web", "Add" : "Amestar", "Cancel" : "Encaboxar", "{size} used" : "{size} usaos", @@ -146,7 +151,7 @@ "Not saved" : "Nun se guardó", "Sending…" : "Unviando...", "Email sent" : "Corréu-e unviáu", - "Address" : "Direición", + "Location" : "Llocalización", "About" : "Tocante a", "Full name" : "Nome completu", "Phone number" : "Númberu de teléfonu", @@ -199,12 +204,6 @@ "Remove image" : "Desaniciar imaxe", "png or jpg, max. 20 MB" : "png o jpg, máximu 20 MB", "Picture provided by original account" : "Semeya fornida pola cuenta orixinal", - "Your phone number" : "El to númberu de teléfonu", - "Your postal address" : "La to direición postal", - "Link https://…" : "Enllaz https://…", - "Current password" : "Contraseña actual", - "New password" : "Contraseña nueva", - "Change password" : "Camudar contraseña", "Migration in progress. Please wait until the migration is finished" : "Migración en cursu. Espera fasta que la migración fine, por favor.", "Migration started …" : "Migración aniciada...", "Couldn't remove app." : "Nun pudo desaniciase l'aplicación.", @@ -222,6 +221,9 @@ "Recommended" : "Recomendáu", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php precisa executalu l'usuariu del sistema «%s».", "days" : "díes", - "No display name set" : "Nun s'afitó'l nome p'amosar" + "No display name set" : "Nun s'afitó'l nome p'amosar", + "Address" : "Direición", + "Your postal address" : "La to direición postal", + "Link https://…" : "Enllaz https://…" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js index 27e21d87a31..3bb5c1d1d3a 100644 --- a/apps/settings/l10n/bg.js +++ b/apps/settings/l10n/bg.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Премахване на групата", "You are about to remove the group {group}. The users will NOT be deleted." : "На път сте да премахнете групата {group}. Потребителите НЯМА да бъдат изтрити.", "Please confirm the group removal " : "Моля, потвърдете премахването на групата", + "Current password" : "Текуща парола", + "New password" : "Нова парола", + "Change password" : "Промени паролата", "Your biography" : "Вашата биография", - "Unable to update biography" : "Биографията не може да се актуализира ", "Your full name" : "Вашето пълно име", - "Unable to update full name" : " Пълното име не може да се актуализира", - "No full name set" : "Няма зададено пълно име", "Email options" : "Опции за имейл", "Primary email for password reset and notifications" : "Основен имейл за възстановяване на парола и известия", "Remove primary email" : "Премахване на основния имейл", @@ -287,13 +287,12 @@ OC.L10N.register( "No email address set" : "Не е въведен имейл адрес", "Additional emails" : "Допълнителни имейли", "Your headline" : "Вашето заглавие", - "Unable to update headline" : "Заглавието не може да се актуализира", "Language" : "Език", "Help translate" : "Помогнете с превода", "Unable to update language" : "Езикът не може да се актуализира", "No language set" : "Няма зададен език", "Your organisation" : "Вашата организация", - "Unable to update organisation" : "Организацията не може да се актуализира", + "Your phone number" : "Вашият тел. номер", "Edit your Profile visibility" : "Редактиране на видимостта на вашия профил", "Enable Profile" : "Активиране на профил", "Unable to update profile enabled state" : "Не може да се актуализира активирано състояние на профил", @@ -301,10 +300,7 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Не може да се актуализира видимостта на {displayId}", "Your role" : "Вашата роля", - "Unable to update role" : "Ролята не може да се актуализира", - "Change scope level of {accountProperty}, current scope is {scope}" : "Променете нивото на обхват на {accountProperty}, текущият обхват е {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Не може да се актуализира обхвата на федерация на основния {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Не може да се актуализира обхвата на федерация на допълнителен {accountProperty}", + "Your website" : "Вашата уеб страница", "Add additional email" : "Добавяне на допълнителен имейл", "Add" : "Добави", "You do not have permissions to see the details of this user" : "Нямате права да виждате подробности за този потребител", @@ -383,7 +379,7 @@ OC.L10N.register( "Not saved" : "Не е запазено", "Sending…" : "Изпращане...", "Email sent" : "Имейлът е изпратен", - "Address" : "Адрес", + "Location" : "Местоположение", "Avatar" : "Аватар", "About" : "Относно", "Full name" : "Име", @@ -490,19 +486,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Членувате в следните групи:", "You are using <strong>%s</strong>" : "Ползвате <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Вие използвате <strong>%1$s</strong> от <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Промяна на нивото на поверителност на телефонния номер", - "Your phone number" : "Вашият тел. номер", - "Change privacy level of address" : "Промяна на нивото на поверителност на адреса", - "Your postal address" : "Вашият пощенски код", - "Change privacy level of website" : "Промяна на нивото на поверителност на уеб сайт", - "It can take up to 24 hours before the account is displayed as verified." : "Може да отнеме до 24 часа, преди профилът да се покаже като потвърден.", - "Link https://…" : "Връзка https://…", - "Change privacy level of Twitter profile" : "Промяна на нивото на поверителност на профила в Twitter", - "Twitter handle @…" : "Twitter манипулатор @…", "Locale" : "Локален/Местен/", - "Current password" : "Текуща парола", - "New password" : "Нова парола", - "Change password" : "Промени паролата", "Use a second factor besides your password to increase security for your account." : "Ползвайте двустепенно удостоверяване за да повишите сигурността на профила си.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ако използвате приложения на трети страни, за да се свържете с Nextcloud, моля, не забравяйте да създадете и конфигурирате парола за приложение за всяко едно от тях, преди да активирате удостоверяване на втория фактор.", "Migration in progress. Please wait until the migration is finished" : "В ход е миграция. Моля, изчакайте, докато миграцията приключи", @@ -536,7 +520,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешаване на автоматично довършване на име на потребител при въвеждане на пълното име или имейл адрес (като игнорирате липсващото съвпадение в телефонния указател и сте в същата група)", "Change privacy level of full name" : "Промяна на нивото на поверителност на пълното име", "No display name set" : "Няма настроено екранно име", + "Change privacy level of phone number" : "Промяна на нивото на поверителност на телефонния номер", + "Address" : "Адрес", + "Change privacy level of address" : "Промяна на нивото на поверителност на адреса", + "Your postal address" : "Вашият пощенски код", + "Change privacy level of website" : "Промяна на нивото на поверителност на уеб сайт", + "It can take up to 24 hours before the account is displayed as verified." : "Може да отнеме до 24 часа, преди профилът да се покаже като потвърден.", + "Link https://…" : "Връзка https://…", + "Change privacy level of Twitter profile" : "Промяна на нивото на поверителност на профила в Twitter", + "Twitter handle @…" : "Twitter манипулатор @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Максималният брой OPcache ключове почти е надвишен. За да се гарантира, че всички скриптове могат да се задържат в кеш, се препоръчва да се приложи <code>opcache.max_accelerated_files</code> към вашата PHP конфигурация със стойност, по-висока от <code>%s</code>.", - "Change scope level of {accountProperty}" : "Промяна на нивото на обхвата на {accountProperty}" + "Unable to update biography" : "Биографията не може да се актуализира ", + "Unable to update full name" : " Пълното име не може да се актуализира", + "No full name set" : "Няма зададено пълно име", + "Unable to update headline" : "Заглавието не може да се актуализира", + "Unable to update organisation" : "Организацията не може да се актуализира", + "Unable to update role" : "Ролята не може да се актуализира", + "Change scope level of {accountProperty}" : "Промяна на нивото на обхвата на {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Не може да се актуализира обхвата на федерация на основния {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Не може да се актуализира обхвата на федерация на допълнителен {accountProperty}" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json index f6c7967290f..002fc1a5b4a 100644 --- a/apps/settings/l10n/bg.json +++ b/apps/settings/l10n/bg.json @@ -263,11 +263,11 @@ "Remove group" : "Премахване на групата", "You are about to remove the group {group}. The users will NOT be deleted." : "На път сте да премахнете групата {group}. Потребителите НЯМА да бъдат изтрити.", "Please confirm the group removal " : "Моля, потвърдете премахването на групата", + "Current password" : "Текуща парола", + "New password" : "Нова парола", + "Change password" : "Промени паролата", "Your biography" : "Вашата биография", - "Unable to update biography" : "Биографията не може да се актуализира ", "Your full name" : "Вашето пълно име", - "Unable to update full name" : " Пълното име не може да се актуализира", - "No full name set" : "Няма зададено пълно име", "Email options" : "Опции за имейл", "Primary email for password reset and notifications" : "Основен имейл за възстановяване на парола и известия", "Remove primary email" : "Премахване на основния имейл", @@ -285,13 +285,12 @@ "No email address set" : "Не е въведен имейл адрес", "Additional emails" : "Допълнителни имейли", "Your headline" : "Вашето заглавие", - "Unable to update headline" : "Заглавието не може да се актуализира", "Language" : "Език", "Help translate" : "Помогнете с превода", "Unable to update language" : "Езикът не може да се актуализира", "No language set" : "Няма зададен език", "Your organisation" : "Вашата организация", - "Unable to update organisation" : "Организацията не може да се актуализира", + "Your phone number" : "Вашият тел. номер", "Edit your Profile visibility" : "Редактиране на видимостта на вашия профил", "Enable Profile" : "Активиране на профил", "Unable to update profile enabled state" : "Не може да се актуализира активирано състояние на профил", @@ -299,10 +298,7 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Не може да се актуализира видимостта на {displayId}", "Your role" : "Вашата роля", - "Unable to update role" : "Ролята не може да се актуализира", - "Change scope level of {accountProperty}, current scope is {scope}" : "Променете нивото на обхват на {accountProperty}, текущият обхват е {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Не може да се актуализира обхвата на федерация на основния {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Не може да се актуализира обхвата на федерация на допълнителен {accountProperty}", + "Your website" : "Вашата уеб страница", "Add additional email" : "Добавяне на допълнителен имейл", "Add" : "Добави", "You do not have permissions to see the details of this user" : "Нямате права да виждате подробности за този потребител", @@ -381,7 +377,7 @@ "Not saved" : "Не е запазено", "Sending…" : "Изпращане...", "Email sent" : "Имейлът е изпратен", - "Address" : "Адрес", + "Location" : "Местоположение", "Avatar" : "Аватар", "About" : "Относно", "Full name" : "Име", @@ -488,19 +484,7 @@ "You are a member of the following groups:" : "Членувате в следните групи:", "You are using <strong>%s</strong>" : "Ползвате <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Вие използвате <strong>%1$s</strong> от <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Промяна на нивото на поверителност на телефонния номер", - "Your phone number" : "Вашият тел. номер", - "Change privacy level of address" : "Промяна на нивото на поверителност на адреса", - "Your postal address" : "Вашият пощенски код", - "Change privacy level of website" : "Промяна на нивото на поверителност на уеб сайт", - "It can take up to 24 hours before the account is displayed as verified." : "Може да отнеме до 24 часа, преди профилът да се покаже като потвърден.", - "Link https://…" : "Връзка https://…", - "Change privacy level of Twitter profile" : "Промяна на нивото на поверителност на профила в Twitter", - "Twitter handle @…" : "Twitter манипулатор @…", "Locale" : "Локален/Местен/", - "Current password" : "Текуща парола", - "New password" : "Нова парола", - "Change password" : "Промени паролата", "Use a second factor besides your password to increase security for your account." : "Ползвайте двустепенно удостоверяване за да повишите сигурността на профила си.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ако използвате приложения на трети страни, за да се свържете с Nextcloud, моля, не забравяйте да създадете и конфигурирате парола за приложение за всяко едно от тях, преди да активирате удостоверяване на втория фактор.", "Migration in progress. Please wait until the migration is finished" : "В ход е миграция. Моля, изчакайте, докато миграцията приключи", @@ -534,7 +518,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешаване на автоматично довършване на име на потребител при въвеждане на пълното име или имейл адрес (като игнорирате липсващото съвпадение в телефонния указател и сте в същата група)", "Change privacy level of full name" : "Промяна на нивото на поверителност на пълното име", "No display name set" : "Няма настроено екранно име", + "Change privacy level of phone number" : "Промяна на нивото на поверителност на телефонния номер", + "Address" : "Адрес", + "Change privacy level of address" : "Промяна на нивото на поверителност на адреса", + "Your postal address" : "Вашият пощенски код", + "Change privacy level of website" : "Промяна на нивото на поверителност на уеб сайт", + "It can take up to 24 hours before the account is displayed as verified." : "Може да отнеме до 24 часа, преди профилът да се покаже като потвърден.", + "Link https://…" : "Връзка https://…", + "Change privacy level of Twitter profile" : "Промяна на нивото на поверителност на профила в Twitter", + "Twitter handle @…" : "Twitter манипулатор @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Максималният брой OPcache ключове почти е надвишен. За да се гарантира, че всички скриптове могат да се задържат в кеш, се препоръчва да се приложи <code>opcache.max_accelerated_files</code> към вашата PHP конфигурация със стойност, по-висока от <code>%s</code>.", - "Change scope level of {accountProperty}" : "Промяна на нивото на обхвата на {accountProperty}" + "Unable to update biography" : "Биографията не може да се актуализира ", + "Unable to update full name" : " Пълното име не може да се актуализира", + "No full name set" : "Няма зададено пълно име", + "Unable to update headline" : "Заглавието не може да се актуализира", + "Unable to update organisation" : "Организацията не може да се актуализира", + "Unable to update role" : "Ролята не може да се актуализира", + "Change scope level of {accountProperty}" : "Промяна на нивото на обхвата на {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Не може да се актуализира обхвата на федерация на основния {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Не може да се актуализира обхвата на федерация на допълнителен {accountProperty}" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js index 7449e9491cc..a730ac78837 100644 --- a/apps/settings/l10n/br.js +++ b/apps/settings/l10n/br.js @@ -203,11 +203,15 @@ OC.L10N.register( "Remove group" : "Lemel strollad", "You are about to remove the group {group}. The users will NOT be deleted." : "O vont da lemel ar strollad {group} emaoc'h. An implijourienn NA VEZONT KET lemet.", "Please confirm the group removal " : "Gwiriit an dilemel", + "Current password" : "Ger-tremen hiziv", + "New password" : "Ger-tremen nevez", + "Change password" : "Cheñch ger-tremen", "Your email address" : "O chom-lec'h postel", "No email address set" : "Chom-lec'h postel ebet lakaet", "Language" : "Yezh", "Help translate" : "Sikour treiñ", "No language set" : "Yezh ebet lakaet", + "Your phone number" : "O niverenn pelgomzer", "Add" : "Ouzhpennañ", "You do not have permissions to see the details of this user" : "N'oc'h ket aotreet da gwellet munudoù an implijer", "Add new password" : "Ouzhpennañ ur ger-tremen", @@ -281,7 +285,7 @@ OC.L10N.register( "Not saved" : "N'eo ket bet enrollet", "Sending…" : "O kas...", "Email sent" : "Postel kaset", - "Address" : "Chom-lec'h", + "Location" : "Lec'hiadur", "Avatar" : "Avatar", "About" : "Diwar-benn", "Full name" : "Tout an anv", @@ -358,15 +362,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Er strolladoù-mañ emaoc'h", "You are using <strong>%s</strong>" : "Emaoc'h o imlpij <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Emaoc'h o implij <strong>%1$s</strong> diouzh <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "O niverenn pelgomzer", - "Your postal address" : "O chom-lec'h postel", - "It can take up to 24 hours before the account is displayed as verified." : "Kemer a raio betek 24 heurvezh a raok ma vo gwiriaet kont an ardivink.", - "Link https://…" : "Liamm https://...", - "Twitter handle @…" : "Anv twitter @...", "Locale" : "Diabarzh", - "Current password" : "Ger-tremen hiziv", - "New password" : "Ger-tremen nevez", - "Change password" : "Cheñch ger-tremen", "Use a second factor besides your password to increase security for your account." : "Implijour un eil-elfenn d'ho ger-tremen a gwella urentez o c'hont.", "Migration in progress. Please wait until the migration is finished" : "Oc'h ober an divroadenn. Gortozit e vefe echuet mar-plij", "Migration started …" : "Divroadeg kroget...", @@ -391,6 +387,11 @@ OC.L10N.register( "Pick background job setting" : "Choazit stumm al labourioù diadreñv", "The cron.php needs to be executed by the system user \"%s\"." : "Ret eo da cron.php beza lakaet en dro gant sistem an implijer \"%s\".", "days" : "devezh", - "No display name set" : "Anv ardivink lakaet ebet" + "No display name set" : "Anv ardivink lakaet ebet", + "Address" : "Chom-lec'h", + "Your postal address" : "O chom-lec'h postel", + "It can take up to 24 hours before the account is displayed as verified." : "Kemer a raio betek 24 heurvezh a raok ma vo gwiriaet kont an ardivink.", + "Link https://…" : "Liamm https://...", + "Twitter handle @…" : "Anv twitter @..." }, "nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"); diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json index 2c061f45c41..c3aa72eb4d5 100644 --- a/apps/settings/l10n/br.json +++ b/apps/settings/l10n/br.json @@ -201,11 +201,15 @@ "Remove group" : "Lemel strollad", "You are about to remove the group {group}. The users will NOT be deleted." : "O vont da lemel ar strollad {group} emaoc'h. An implijourienn NA VEZONT KET lemet.", "Please confirm the group removal " : "Gwiriit an dilemel", + "Current password" : "Ger-tremen hiziv", + "New password" : "Ger-tremen nevez", + "Change password" : "Cheñch ger-tremen", "Your email address" : "O chom-lec'h postel", "No email address set" : "Chom-lec'h postel ebet lakaet", "Language" : "Yezh", "Help translate" : "Sikour treiñ", "No language set" : "Yezh ebet lakaet", + "Your phone number" : "O niverenn pelgomzer", "Add" : "Ouzhpennañ", "You do not have permissions to see the details of this user" : "N'oc'h ket aotreet da gwellet munudoù an implijer", "Add new password" : "Ouzhpennañ ur ger-tremen", @@ -279,7 +283,7 @@ "Not saved" : "N'eo ket bet enrollet", "Sending…" : "O kas...", "Email sent" : "Postel kaset", - "Address" : "Chom-lec'h", + "Location" : "Lec'hiadur", "Avatar" : "Avatar", "About" : "Diwar-benn", "Full name" : "Tout an anv", @@ -356,15 +360,7 @@ "You are a member of the following groups:" : "Er strolladoù-mañ emaoc'h", "You are using <strong>%s</strong>" : "Emaoc'h o imlpij <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Emaoc'h o implij <strong>%1$s</strong> diouzh <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "O niverenn pelgomzer", - "Your postal address" : "O chom-lec'h postel", - "It can take up to 24 hours before the account is displayed as verified." : "Kemer a raio betek 24 heurvezh a raok ma vo gwiriaet kont an ardivink.", - "Link https://…" : "Liamm https://...", - "Twitter handle @…" : "Anv twitter @...", "Locale" : "Diabarzh", - "Current password" : "Ger-tremen hiziv", - "New password" : "Ger-tremen nevez", - "Change password" : "Cheñch ger-tremen", "Use a second factor besides your password to increase security for your account." : "Implijour un eil-elfenn d'ho ger-tremen a gwella urentez o c'hont.", "Migration in progress. Please wait until the migration is finished" : "Oc'h ober an divroadenn. Gortozit e vefe echuet mar-plij", "Migration started …" : "Divroadeg kroget...", @@ -389,6 +385,11 @@ "Pick background job setting" : "Choazit stumm al labourioù diadreñv", "The cron.php needs to be executed by the system user \"%s\"." : "Ret eo da cron.php beza lakaet en dro gant sistem an implijer \"%s\".", "days" : "devezh", - "No display name set" : "Anv ardivink lakaet ebet" + "No display name set" : "Anv ardivink lakaet ebet", + "Address" : "Chom-lec'h", + "Your postal address" : "O chom-lec'h postel", + "It can take up to 24 hours before the account is displayed as verified." : "Kemer a raio betek 24 heurvezh a raok ma vo gwiriaet kont an ardivink.", + "Link https://…" : "Liamm https://...", + "Twitter handle @…" : "Anv twitter @..." },"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);" }
\ No newline at end of file diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js index 027952b6387..31757e3504e 100644 --- a/apps/settings/l10n/ca.js +++ b/apps/settings/l10n/ca.js @@ -3,8 +3,10 @@ OC.L10N.register( { "Private" : "Privat", "Local" : "Local", + "Only visible to people on this instance and guests" : "Només visible per a les persones d'aquesta instància i convidats", "Federated" : "Federat", "Only synchronize to trusted servers" : "Sincronitza només amb servidors de confiança", + "Published" : "Publicat", "Synchronize to trusted servers and the global and public address book" : "Sincronitza amb servidors de confiança i amb la llibreta d'adreces global i pública", "Verify" : "Verifica", "Verifying …" : "S'està verificant …", @@ -40,6 +42,7 @@ OC.L10N.register( "You changed your email address" : "Heu canviat la vostra adreça de correu electrònic", "Your email address was changed by an administrator" : "Un administrador ha canviat la vostra adreça de correu electrònic", "You created app password \"{token}\"" : "Heu creat \"{token}\" a l’aplicació de contrasenyes", + "An administrator created app password \"{token}\"" : "Un administrador ha creat la contrasenya de l'aplicació \"{token}\"", "You deleted app password \"{token}\"" : "Heu suprimit \"{token}\" de l’aplicació de contrasenyes", "You renamed app password \"{token}\" to \"{newToken}\"" : "Heu reanomenat \"{token}\" a \"{newToken} a l'aplicació de contrasenyes", "You granted filesystem access to app password \"{token}\"" : "Heu donat accés al sistema de fitxers a l'aplicació de contrasenyes \"{token}\"", @@ -50,25 +53,44 @@ OC.L10N.register( "Remote wipe was started on %1$s" : "S'ha engegat la neteja remota a %1$s", "Remote wipe has finished on %1$s" : "Ha finalitzat la neteja remota a %1$s", "Your <strong>password</strong> or <strong>email</strong> was modified" : "S'ha modificat la vostra <strong>contrasenya</strong> o <strong>correu electrònic</strong>", + "Could not remove app." : "No s'ha pogut suprimir l'aplicació.", + "Could not update app." : "No s'ha pogut actualitzar l'aplicació.", "Wrong password" : "Contrasenya incorrecta", + "Unable to change personal password" : "No s'ha pogut canviar la contrasenya personal", "Saved" : "S'ha desat", "No user supplied" : "No heu proporcionat cap usuari", + "Unable to change password. Password too long." : "No s'ha pogut canviar la contrasenya. És massa llarga.", "Authentication error" : "Error d'autenticació", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Si us plau, proporcioneu una contrasenya d'administrador de recuperació; en cas contrari, es perdran totes les dades.", "Wrong admin recovery password. Please check the password and try again." : "La contrasenya d'administrador de recuperació és incorrecta. Si us plau, comproveu-la i torneu-ho a provar.", + "Backend does not support password change, but the user's encryption key was updated." : "El rerefons no admet el canvi de contrasenya, però s'ha actualitzat la clau de xifratge de l'usuari.", + "installing and updating apps via the App Store or Federated Cloud Sharing" : "instal·lació i actualització d'aplicacions a través de la botiga d'aplicacions o el Núvol Federat", "Federated Cloud Sharing" : "Compartició de Núvols Federats", "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL està fent servir una versió %1$s antiquada (%2$s). Si us plau, actualitzeu el vostre sistema operatiu o característiques com %3$s no funcionaran amb fiabilitat.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "No s'ha pogut determinar si la versió TLS de cURL està obsoleta o no perquè s'ha produït un error durant la sol·licitud HTTPS contra https://nextcloud.com. Comproveu el fitxer de registre de Nextcloud per obtenir més detalls.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "El mòdul OPcache de PHP no està carregat. Per a un millor rendiment, es recomana carregar-lo a la instal·lació PHP.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache està inhabilitat. Per a un millor rendiment, es recomana aplicar <code>opcache.enable=1</code> a la configuració de PHP.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache està configurat per suprimir comentaris de codi. Amb OPcache habilitat, s'ha d'establir <code>opcache.save.comments=1</code> perquè Nextcloud funcioni.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud no té permís per utilitzar l'API OPcache. Amb OPcache habilitat, us recomanem que inclogueu tots els directoris Nextcloud amb <code>opcache.restrict.api</code> o que desconfigureu aquest paràmetre per inhabilitar les restriccions de l'API OPcache i evitar errors durant les actualitzacions del nucli de Nextcloud o de l'aplicació.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud no té permís per utilitzar l'API OPcache. Us recomanem que inclogueu tots els directoris Nextcloud amb <code>1opcache.restrict.api1</code> o que desconfigureu aquest paràmetre per inhabilitar les restriccions de l'API OPcache i evitar errors durant les actualitzacions del nucli de Nextcloud o de l'aplicació.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Gairebé s'ha excedit el nombre màxim de claus d'OPcache. Per assegurar-vos que tots els scripts es puguin mantenir a la memòria cau, us recomanem que apliqueu <code>opcache.max.accelerated.files</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "La memòria intermèdia d'OPcache està gairebé plena. Per garantir que tots els scripts es puguin mantenir a la memòria cau, us recomanem que apliqueu <code>opcache.memory.consumption</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "La memòria cau de cadenes internades OPcache està gairebé plena. Per assegurar-vos que les cadenes que es repeteixen es poden emmagatzemar a la memòria cau de manera efectiva, es recomana aplicar <code>opcache.interned.strings.buffer</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", "Invalid SMTP password." : "Contrasenya SMTP no vàlida.", "Email setting test" : "Prova de configuració del correu electrònic", "Well done, %s!" : "Ben fet, %s!", "If you received this email, the email configuration seems to be correct." : "Si heu rebut aquest correu electrònic, sembla que la configuració del correu electrònic és correcta.", "Email could not be sent. Check your mail server log" : "No s'ha pogut enviar el correu electrònic. Comproveu el registre del servidor de correu", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hi ha hagut un problema mentre s'enviava el correu electrònic. Reviseu els paràmetres. (Error: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "Heu d'establir el correu electrònic d'usuari abans de poder enviar correus de prova. Aneu a %s per fer-ho.", "Invalid user" : "Usuari no vàlid", "Invalid mail address" : "Adreça de correu electrònic no vàlida", "Settings saved" : "S'han desat els paràmetres", "Unable to change full name" : "No s'ha pogut canviar el nom complet", "Unable to change email address" : "No s'ha pogut canviar l'adreça electrònica", + "Unable to set invalid phone number" : "No es pot establir un número de telèfon no vàlid", + "Unable to set invalid website" : "No es pot establir un lloc web no vàlid", + "Some account data was invalid" : "Algunes dades del compte no eren vàlides", "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Per tal de verificar el vostre compte de Twitter, publiqueu el següent tweet a Twitter (assegureu-vos de publicar-lo sense cap salt de línia):", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Per tal de verificar el vostre lloc web, emmagatzemeu el següent contingut a l’arrel web a '.well-known/CloudIdVerificationCode.txt' (assegureu-vos que el text complet és en una línia):", "%1$s changed your password on %2$s." : "%1$s ha canviat la vostra contrasenya a %2$s.", @@ -97,6 +119,7 @@ OC.L10N.register( "Personal" : "Personal", "Administration" : "Administració", "Additional settings" : "Paràmetres addicionals", + "Admin privileges" : "Privilegis d'administrador", "Groupware" : "Treball en grup", "Overview" : "Resum", "Basic settings" : "Configuració bàsica", @@ -114,9 +137,18 @@ OC.L10N.register( "Verifying" : "S'està verificant", "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Hi ha un treball en segon pla pendent que de comprovar els certificats SSL importats per l'usuari. Comproveu-ho més tard.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Hi ha alguns certificats SSL importats per l'usuari que ja no s'utilitzen amb Nextcloud 21. Es poden importar en la línia d'ordres a través de l'ordre «occ security:certificates:import». A continuació se'n mostren els camins dins del directori de dades.", + "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "S'han trobat UUID no vàlids d'usuaris o grups LDAP. Reviseu els paràmetres de l'\"Anul·lació de detecció d'UUID\" a la part Experta de la configuració LDAP i utilitzeu \"occ ldap:update-uuid\" per actualitzar-los.", "The old server-side-encryption format is enabled. We recommend disabling this." : "L'antic format de xifratge del servidor està habilitat. Recomanem desactivar-ho.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "S'utilitza la versió \"%s\" de MariaDB . Nextcloud 21 i les versions superiors no admeten aquesta versió i requereixen MariaDB 10.2 o superior.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "S'utilitza la versió \"%s\" de MariaDB . Nextcloud 21 i les versions superiors no admeten aquesta versió i requereixen MySQL 8.0 o MariaDB 10.2 o superior.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "S'utilitza la versió \"%s\" de PostgreSQL . Nextcloud 21 i les versions superiors no admeten aquesta versió i requereixen PostgreSQL 9.6 o superior.", + "Profile information" : "Informació del perfil", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Imatge del perfil, nom complet, correu electrònic, número de telèfon, adreça, lloc web, Twitter, organització, rol, titular, biografia i si el vostre perfil està habilitat", "Nextcloud settings" : "Paràmetres del Nextcloud", + "Administration privileges" : "Privilegis d'administració", + "Here you can decide which group can access certain sections of the administration settings." : "Aquí podeu decidir quin grup pot accedir a certes seccions dels paràmetres d'administració.", "None" : "Cap", + "Unable to modify setting" : "No es pot modificar el paràmetre", "Two-Factor Authentication" : "Autenticació de doble factor", "Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L’autenticació de doble factor pot ser forçada per a tots els usuaris i grups específics. Si no tenen un proveïdor de doble factor configurat, no podran accedir en el sistema.", "Enforce two-factor authentication" : "Força l'autenticació de doble factor", @@ -148,17 +180,20 @@ OC.L10N.register( "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les aplicacions destacades es desenvolupen per i dins de la comunitat. Ofereixen funcionalitats centrals i estan preparades per ser emprades en producció.", "Featured" : "Destacat", "Update to {update}" : "Actualitza a {update}", + "All apps are up-to-date." : "Totes les aplicacions estan actualitzades.", "Results from other categories" : "Resultats d'altres categories", "No apps found for your version" : "No s'han trobat aplicacions per la vostra versió", "Disable all" : "Desactiva-ho tot", "Enable all" : "Activa-ho tot", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicació té una actualització disponible","%n aplicacions tenen una actualització disponible"], + "_Update_::_Update all_" : ["Actualitza","Actualitza tot"], "Marked for remote wipe" : "Marcat per netejar remotament", "Device settings" : "Paràmetres del dispositiu", "Allow filesystem access" : "Permet l'accés al sistema de fitxers", "Rename" : "Canvia el nom", "Revoke" : "Revoca", "Wipe device" : "Esborra el dispositiu", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "Revocar aquest testimoni podria evitar la neteja del dispositiu si encara no ha començat.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -167,6 +202,10 @@ OC.L10N.register( "Google Chrome for Android" : "Google Chrome per a Android", "iPhone" : "iPhone", "iPad" : "iPad", + "{productName} iOS app" : "Aplicació iOS de {productName}", + "{productName} Android app" : "Aplicació Android de {productName} ", + "{productName} Talk for iOS" : "Talk for iOS de {productName} ", + "{productName} Talk for Android" : "Talk for Android de {productName} ", "Sync client - {os}" : "Client de sincronització - {os}", "This session" : "Aquesta sessió", "Device" : "Dispositiu", @@ -191,6 +230,11 @@ OC.L10N.register( "Copied!" : "S'ha copiat!", "Copy" : "Copia", "Could not copy app password. Please copy it manually." : "No s’ha pogut copiar la contrasenya de l’aplicació. Copieu-la manualment.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Perquè el servidor funcioni correctament, és important configurar els treballs en segon pla correctament. Cron és el paràmetre recomanat. Per a més informació, vegeu la documentació.", + "Background job did not run yet!" : "La tasca en segon pla encara no s'ha executat", + "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "Executeu una tasca amb cada pàgina carregada. Cas d'ús: instància d'un sol usuari.", + "Webcron" : "Webcron", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per executar això es necessita l'extensió POSIX de PHP. Per més detalls, vegeu {linkstart}documentació de PHP{linkend}.", "Profile" : "Perfil", "Enable" : "Activa", @@ -207,11 +251,16 @@ OC.L10N.register( "Remove group" : "Suprimeix el grup", "You are about to remove the group {group}. The users will NOT be deleted." : "Esteu a punt de suprimir el grup {group}. Els usuaris NO seran suprimits.", "Please confirm the group removal " : "Confirmeu la supressió del grup ", + "Current password" : "Contrasenya actual", + "New password" : "Contrasenya nova", + "Change password" : "Canvia la contrasenya", "Your email address" : "El vostre correu electrònic", "No email address set" : "No s'ha establert cap adreça de correu electrònic", "Language" : "Llengua", "Help translate" : "Ajudeu-nos amb la traducció", "No language set" : "No s'ha establert cap idioma", + "Your phone number" : "El vostre número de telèfon", + "Your website" : "El teu lloc web", "Add" : "Afegeix", "You do not have permissions to see the details of this user" : "No teniu els permisos necessaris per veure els detalls d'aquest usuari", "Add new password" : "Afegeix una nova contrasenya", @@ -288,7 +337,7 @@ OC.L10N.register( "Not saved" : "No s'ha desat", "Sending…" : "S'està enviant…", "Email sent" : "S'ha enviat el correu electrònic", - "Address" : "Adreça", + "Location" : "Ubicació", "Avatar" : "Avatar", "About" : "Quant a", "Full name" : "Nom complet", @@ -370,15 +419,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Sou membre dels grups següents:", "You are using <strong>%s</strong>" : "Esteu utilitzant <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Esteu utilitzant <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "El vostre número de telèfon", - "Your postal address" : "La vostra adreça postal", - "It can take up to 24 hours before the account is displayed as verified." : "Pot trigar fins a 24 hores abans que el compte es mostri com a verificat.", - "Link https://…" : "Enllaç https://…", - "Twitter handle @…" : "Compte Twitter @…", "Locale" : "Configuració regional", - "Current password" : "Contrasenya actual", - "New password" : "Contrasenya nova", - "Change password" : "Canvia la contrasenya", "Use a second factor besides your password to increase security for your account." : "Feu servir un segon factor a més de la vostra contrasenya per augmentar la seguretat del vostre compte.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si utilitzeu aplicacions de tercers per a connectar-vos a Nextcloud, assegureu-vos de crear i configurar una contrasenya d'aplicació per a cadascuna abans d'habilitar l'autenticació de segon factor.", "Migration in progress. Please wait until the migration is finished" : "Migració en procés. Si us plau, espereu fins que finalitzi la migració", @@ -405,6 +446,11 @@ OC.L10N.register( "Recommended" : "Recomanat", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".", "days" : "dies", - "No display name set" : "No s'ha establert cap nom para mostrar" + "No display name set" : "No s'ha establert cap nom para mostrar", + "Address" : "Adreça", + "Your postal address" : "La vostra adreça postal", + "It can take up to 24 hours before the account is displayed as verified." : "Pot trigar fins a 24 hores abans que el compte es mostri com a verificat.", + "Link https://…" : "Enllaç https://…", + "Twitter handle @…" : "Compte Twitter @…" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json index 0ddf6f6b182..531f918da21 100644 --- a/apps/settings/l10n/ca.json +++ b/apps/settings/l10n/ca.json @@ -1,8 +1,10 @@ { "translations": { "Private" : "Privat", "Local" : "Local", + "Only visible to people on this instance and guests" : "Només visible per a les persones d'aquesta instància i convidats", "Federated" : "Federat", "Only synchronize to trusted servers" : "Sincronitza només amb servidors de confiança", + "Published" : "Publicat", "Synchronize to trusted servers and the global and public address book" : "Sincronitza amb servidors de confiança i amb la llibreta d'adreces global i pública", "Verify" : "Verifica", "Verifying …" : "S'està verificant …", @@ -38,6 +40,7 @@ "You changed your email address" : "Heu canviat la vostra adreça de correu electrònic", "Your email address was changed by an administrator" : "Un administrador ha canviat la vostra adreça de correu electrònic", "You created app password \"{token}\"" : "Heu creat \"{token}\" a l’aplicació de contrasenyes", + "An administrator created app password \"{token}\"" : "Un administrador ha creat la contrasenya de l'aplicació \"{token}\"", "You deleted app password \"{token}\"" : "Heu suprimit \"{token}\" de l’aplicació de contrasenyes", "You renamed app password \"{token}\" to \"{newToken}\"" : "Heu reanomenat \"{token}\" a \"{newToken} a l'aplicació de contrasenyes", "You granted filesystem access to app password \"{token}\"" : "Heu donat accés al sistema de fitxers a l'aplicació de contrasenyes \"{token}\"", @@ -48,25 +51,44 @@ "Remote wipe was started on %1$s" : "S'ha engegat la neteja remota a %1$s", "Remote wipe has finished on %1$s" : "Ha finalitzat la neteja remota a %1$s", "Your <strong>password</strong> or <strong>email</strong> was modified" : "S'ha modificat la vostra <strong>contrasenya</strong> o <strong>correu electrònic</strong>", + "Could not remove app." : "No s'ha pogut suprimir l'aplicació.", + "Could not update app." : "No s'ha pogut actualitzar l'aplicació.", "Wrong password" : "Contrasenya incorrecta", + "Unable to change personal password" : "No s'ha pogut canviar la contrasenya personal", "Saved" : "S'ha desat", "No user supplied" : "No heu proporcionat cap usuari", + "Unable to change password. Password too long." : "No s'ha pogut canviar la contrasenya. És massa llarga.", "Authentication error" : "Error d'autenticació", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Si us plau, proporcioneu una contrasenya d'administrador de recuperació; en cas contrari, es perdran totes les dades.", "Wrong admin recovery password. Please check the password and try again." : "La contrasenya d'administrador de recuperació és incorrecta. Si us plau, comproveu-la i torneu-ho a provar.", + "Backend does not support password change, but the user's encryption key was updated." : "El rerefons no admet el canvi de contrasenya, però s'ha actualitzat la clau de xifratge de l'usuari.", + "installing and updating apps via the App Store or Federated Cloud Sharing" : "instal·lació i actualització d'aplicacions a través de la botiga d'aplicacions o el Núvol Federat", "Federated Cloud Sharing" : "Compartició de Núvols Federats", "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL està fent servir una versió %1$s antiquada (%2$s). Si us plau, actualitzeu el vostre sistema operatiu o característiques com %3$s no funcionaran amb fiabilitat.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "No s'ha pogut determinar si la versió TLS de cURL està obsoleta o no perquè s'ha produït un error durant la sol·licitud HTTPS contra https://nextcloud.com. Comproveu el fitxer de registre de Nextcloud per obtenir més detalls.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "El mòdul OPcache de PHP no està carregat. Per a un millor rendiment, es recomana carregar-lo a la instal·lació PHP.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache està inhabilitat. Per a un millor rendiment, es recomana aplicar <code>opcache.enable=1</code> a la configuració de PHP.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache està configurat per suprimir comentaris de codi. Amb OPcache habilitat, s'ha d'establir <code>opcache.save.comments=1</code> perquè Nextcloud funcioni.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud no té permís per utilitzar l'API OPcache. Amb OPcache habilitat, us recomanem que inclogueu tots els directoris Nextcloud amb <code>opcache.restrict.api</code> o que desconfigureu aquest paràmetre per inhabilitar les restriccions de l'API OPcache i evitar errors durant les actualitzacions del nucli de Nextcloud o de l'aplicació.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud no té permís per utilitzar l'API OPcache. Us recomanem que inclogueu tots els directoris Nextcloud amb <code>1opcache.restrict.api1</code> o que desconfigureu aquest paràmetre per inhabilitar les restriccions de l'API OPcache i evitar errors durant les actualitzacions del nucli de Nextcloud o de l'aplicació.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Gairebé s'ha excedit el nombre màxim de claus d'OPcache. Per assegurar-vos que tots els scripts es puguin mantenir a la memòria cau, us recomanem que apliqueu <code>opcache.max.accelerated.files</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "La memòria intermèdia d'OPcache està gairebé plena. Per garantir que tots els scripts es puguin mantenir a la memòria cau, us recomanem que apliqueu <code>opcache.memory.consumption</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "La memòria cau de cadenes internades OPcache està gairebé plena. Per assegurar-vos que les cadenes que es repeteixen es poden emmagatzemar a la memòria cau de manera efectiva, es recomana aplicar <code>opcache.interned.strings.buffer</code> a la configuració de PHP amb un valor superior a <code>%s</code>.", "Invalid SMTP password." : "Contrasenya SMTP no vàlida.", "Email setting test" : "Prova de configuració del correu electrònic", "Well done, %s!" : "Ben fet, %s!", "If you received this email, the email configuration seems to be correct." : "Si heu rebut aquest correu electrònic, sembla que la configuració del correu electrònic és correcta.", "Email could not be sent. Check your mail server log" : "No s'ha pogut enviar el correu electrònic. Comproveu el registre del servidor de correu", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Hi ha hagut un problema mentre s'enviava el correu electrònic. Reviseu els paràmetres. (Error: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "Heu d'establir el correu electrònic d'usuari abans de poder enviar correus de prova. Aneu a %s per fer-ho.", "Invalid user" : "Usuari no vàlid", "Invalid mail address" : "Adreça de correu electrònic no vàlida", "Settings saved" : "S'han desat els paràmetres", "Unable to change full name" : "No s'ha pogut canviar el nom complet", "Unable to change email address" : "No s'ha pogut canviar l'adreça electrònica", + "Unable to set invalid phone number" : "No es pot establir un número de telèfon no vàlid", + "Unable to set invalid website" : "No es pot establir un lloc web no vàlid", + "Some account data was invalid" : "Algunes dades del compte no eren vàlides", "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Per tal de verificar el vostre compte de Twitter, publiqueu el següent tweet a Twitter (assegureu-vos de publicar-lo sense cap salt de línia):", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Per tal de verificar el vostre lloc web, emmagatzemeu el següent contingut a l’arrel web a '.well-known/CloudIdVerificationCode.txt' (assegureu-vos que el text complet és en una línia):", "%1$s changed your password on %2$s." : "%1$s ha canviat la vostra contrasenya a %2$s.", @@ -95,6 +117,7 @@ "Personal" : "Personal", "Administration" : "Administració", "Additional settings" : "Paràmetres addicionals", + "Admin privileges" : "Privilegis d'administrador", "Groupware" : "Treball en grup", "Overview" : "Resum", "Basic settings" : "Configuració bàsica", @@ -112,9 +135,18 @@ "Verifying" : "S'està verificant", "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Hi ha un treball en segon pla pendent que de comprovar els certificats SSL importats per l'usuari. Comproveu-ho més tard.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Hi ha alguns certificats SSL importats per l'usuari que ja no s'utilitzen amb Nextcloud 21. Es poden importar en la línia d'ordres a través de l'ordre «occ security:certificates:import». A continuació se'n mostren els camins dins del directori de dades.", + "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "S'han trobat UUID no vàlids d'usuaris o grups LDAP. Reviseu els paràmetres de l'\"Anul·lació de detecció d'UUID\" a la part Experta de la configuració LDAP i utilitzeu \"occ ldap:update-uuid\" per actualitzar-los.", "The old server-side-encryption format is enabled. We recommend disabling this." : "L'antic format de xifratge del servidor està habilitat. Recomanem desactivar-ho.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "S'utilitza la versió \"%s\" de MariaDB . Nextcloud 21 i les versions superiors no admeten aquesta versió i requereixen MariaDB 10.2 o superior.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "S'utilitza la versió \"%s\" de MariaDB . Nextcloud 21 i les versions superiors no admeten aquesta versió i requereixen MySQL 8.0 o MariaDB 10.2 o superior.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "S'utilitza la versió \"%s\" de PostgreSQL . Nextcloud 21 i les versions superiors no admeten aquesta versió i requereixen PostgreSQL 9.6 o superior.", + "Profile information" : "Informació del perfil", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Imatge del perfil, nom complet, correu electrònic, número de telèfon, adreça, lloc web, Twitter, organització, rol, titular, biografia i si el vostre perfil està habilitat", "Nextcloud settings" : "Paràmetres del Nextcloud", + "Administration privileges" : "Privilegis d'administració", + "Here you can decide which group can access certain sections of the administration settings." : "Aquí podeu decidir quin grup pot accedir a certes seccions dels paràmetres d'administració.", "None" : "Cap", + "Unable to modify setting" : "No es pot modificar el paràmetre", "Two-Factor Authentication" : "Autenticació de doble factor", "Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L’autenticació de doble factor pot ser forçada per a tots els usuaris i grups específics. Si no tenen un proveïdor de doble factor configurat, no podran accedir en el sistema.", "Enforce two-factor authentication" : "Força l'autenticació de doble factor", @@ -146,17 +178,20 @@ "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les aplicacions destacades es desenvolupen per i dins de la comunitat. Ofereixen funcionalitats centrals i estan preparades per ser emprades en producció.", "Featured" : "Destacat", "Update to {update}" : "Actualitza a {update}", + "All apps are up-to-date." : "Totes les aplicacions estan actualitzades.", "Results from other categories" : "Resultats d'altres categories", "No apps found for your version" : "No s'han trobat aplicacions per la vostra versió", "Disable all" : "Desactiva-ho tot", "Enable all" : "Activa-ho tot", "_%n app has an update available_::_%n apps have an update available_" : ["%n aplicació té una actualització disponible","%n aplicacions tenen una actualització disponible"], + "_Update_::_Update all_" : ["Actualitza","Actualitza tot"], "Marked for remote wipe" : "Marcat per netejar remotament", "Device settings" : "Paràmetres del dispositiu", "Allow filesystem access" : "Permet l'accés al sistema de fitxers", "Rename" : "Canvia el nom", "Revoke" : "Revoca", "Wipe device" : "Esborra el dispositiu", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "Revocar aquest testimoni podria evitar la neteja del dispositiu si encara no ha començat.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -165,6 +200,10 @@ "Google Chrome for Android" : "Google Chrome per a Android", "iPhone" : "iPhone", "iPad" : "iPad", + "{productName} iOS app" : "Aplicació iOS de {productName}", + "{productName} Android app" : "Aplicació Android de {productName} ", + "{productName} Talk for iOS" : "Talk for iOS de {productName} ", + "{productName} Talk for Android" : "Talk for Android de {productName} ", "Sync client - {os}" : "Client de sincronització - {os}", "This session" : "Aquesta sessió", "Device" : "Dispositiu", @@ -189,6 +228,11 @@ "Copied!" : "S'ha copiat!", "Copy" : "Copia", "Could not copy app password. Please copy it manually." : "No s’ha pogut copiar la contrasenya de l’aplicació. Copieu-la manualment.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Perquè el servidor funcioni correctament, és important configurar els treballs en segon pla correctament. Cron és el paràmetre recomanat. Per a més informació, vegeu la documentació.", + "Background job did not run yet!" : "La tasca en segon pla encara no s'ha executat", + "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "Executeu una tasca amb cada pàgina carregada. Cas d'ús: instància d'un sol usuari.", + "Webcron" : "Webcron", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Per executar això es necessita l'extensió POSIX de PHP. Per més detalls, vegeu {linkstart}documentació de PHP{linkend}.", "Profile" : "Perfil", "Enable" : "Activa", @@ -205,11 +249,16 @@ "Remove group" : "Suprimeix el grup", "You are about to remove the group {group}. The users will NOT be deleted." : "Esteu a punt de suprimir el grup {group}. Els usuaris NO seran suprimits.", "Please confirm the group removal " : "Confirmeu la supressió del grup ", + "Current password" : "Contrasenya actual", + "New password" : "Contrasenya nova", + "Change password" : "Canvia la contrasenya", "Your email address" : "El vostre correu electrònic", "No email address set" : "No s'ha establert cap adreça de correu electrònic", "Language" : "Llengua", "Help translate" : "Ajudeu-nos amb la traducció", "No language set" : "No s'ha establert cap idioma", + "Your phone number" : "El vostre número de telèfon", + "Your website" : "El teu lloc web", "Add" : "Afegeix", "You do not have permissions to see the details of this user" : "No teniu els permisos necessaris per veure els detalls d'aquest usuari", "Add new password" : "Afegeix una nova contrasenya", @@ -286,7 +335,7 @@ "Not saved" : "No s'ha desat", "Sending…" : "S'està enviant…", "Email sent" : "S'ha enviat el correu electrònic", - "Address" : "Adreça", + "Location" : "Ubicació", "Avatar" : "Avatar", "About" : "Quant a", "Full name" : "Nom complet", @@ -368,15 +417,7 @@ "You are a member of the following groups:" : "Sou membre dels grups següents:", "You are using <strong>%s</strong>" : "Esteu utilitzant <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Esteu utilitzant <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "El vostre número de telèfon", - "Your postal address" : "La vostra adreça postal", - "It can take up to 24 hours before the account is displayed as verified." : "Pot trigar fins a 24 hores abans que el compte es mostri com a verificat.", - "Link https://…" : "Enllaç https://…", - "Twitter handle @…" : "Compte Twitter @…", "Locale" : "Configuració regional", - "Current password" : "Contrasenya actual", - "New password" : "Contrasenya nova", - "Change password" : "Canvia la contrasenya", "Use a second factor besides your password to increase security for your account." : "Feu servir un segon factor a més de la vostra contrasenya per augmentar la seguretat del vostre compte.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si utilitzeu aplicacions de tercers per a connectar-vos a Nextcloud, assegureu-vos de crear i configurar una contrasenya d'aplicació per a cadascuna abans d'habilitar l'autenticació de segon factor.", "Migration in progress. Please wait until the migration is finished" : "Migració en procés. Si us plau, espereu fins que finalitzi la migració", @@ -403,6 +444,11 @@ "Recommended" : "Recomanat", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".", "days" : "dies", - "No display name set" : "No s'ha establert cap nom para mostrar" + "No display name set" : "No s'ha establert cap nom para mostrar", + "Address" : "Adreça", + "Your postal address" : "La vostra adreça postal", + "It can take up to 24 hours before the account is displayed as verified." : "Pot trigar fins a 24 hores abans que el compte es mostri com a verificat.", + "Link https://…" : "Enllaç https://…", + "Twitter handle @…" : "Compte Twitter @…" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js index e536a8b3296..fc3a1e313cd 100644 --- a/apps/settings/l10n/cs.js +++ b/apps/settings/l10n/cs.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Odebrat skupinu", "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte se smazat skupinu {group}. Uživatelé NEbudou smazáni.", "Please confirm the group removal " : "Potvrďte odstranění skupiny", + "Current password" : "Stávající heslo", + "New password" : "Nové heslo", + "Change password" : "Změnit heslo", "Your biography" : "Váš životopis", - "Unable to update biography" : "Životopis se nedaří aktulizovat", "Your full name" : "Vaše celé jméno", - "Unable to update full name" : "Nedaří se aktualizovat celé jméno", - "No full name set" : "Nenastaveno celé jméno", "Email options" : "Předvolby e-mailu", "Primary email for password reset and notifications" : "Hlavní e-mail pro resetování hesla a oznamování", "Remove primary email" : "Odebrat hlavní e-mail", @@ -287,13 +287,13 @@ OC.L10N.register( "No email address set" : "E-mailová adresa není nastavena", "Additional emails" : "Další e-maily", "Your headline" : "Váš nadpis", - "Unable to update headline" : "Nadpis se nedaří změnit", "Language" : "Jazyk", "Help translate" : "Pomoci s překladem", "Unable to update language" : "Jazyk se nedaří aktualizovat", "No language set" : "Není nastaven jazyk", + "Your location" : "Kde se nacházíte", "Your organisation" : "Vaše organizace", - "Unable to update organisation" : "Nedaří se aktualizovat organizaci", + "Your phone number" : "Vaše telefonní číslo", "Edit your Profile visibility" : "Upravit viditelnost profilu", "Enable Profile" : "Zapnout profil", "Unable to update profile enabled state" : "Nedaří se aktualizovat stav zapnutí profilu", @@ -301,13 +301,16 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nedaří se aktualizovat viditelnost {displayId}", "Your role" : "Vaše úloha", - "Unable to update role" : "Nedaří se aktualizovat roli", - "Change scope level of {accountProperty}, current scope is {scope}" : "Změnit stupeň rozsahu {accountProperty}, stávající je {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Nedaří se aktualizovat rozsah federování primární {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Nedaří se aktualizovat rozsah federování dodatečné {accountProperty}", + "Your Twitter handle" : "Twitter účet", + "Your website" : "Vlastní webová stránka", + "No {property} set" : "Nenastaveno žádné {property}", + "Unable to update {property}" : "Nedaří se aktualizovat {property}", + "Change scope level of {property}, current scope is {scope}" : "Změnit stupeň rozsahu {property}, stávající je {scope}", + "Unable to update federation scope of the primary {property}" : "Nedaří se aktualizovat rozsah federování primární {property}", + "Unable to update federation scope of additional {property}" : "Nedaří se aktualizovat rozsah federování dodatečné {property}", "Add additional email" : "Přidat další e-mail", "Add" : "Přidat", - "You do not have permissions to see the details of this user" : "Nemáte oprávnění k zobrazení podrobností o tomto uživateli", + "You do not have permissions to see the details of this user" : "Nemáte oprávnění zobrazit si podrobností o tomto uživateli", "Add new password" : "Přidat nové heslo", "Add new email address" : "Přidat novou e-mailovou adresu", "Add user to group" : "Přidat uživatele do skupiny", @@ -372,7 +375,7 @@ OC.L10N.register( "Add group" : "Přidat skupinu", "Active users" : "Aktivní uživatelé", "Admins" : "Správci", - "Disabled users" : "Zakázaní uživatelé", + "Disabled users" : "Znepřístupnění uživatelé", "Default quota:" : "Výchozí kvóta:", "Select default quota" : "Vybrat výchozí kvótu", "Show Languages" : "Zobrazit jazyky", @@ -383,7 +386,7 @@ OC.L10N.register( "Not saved" : "Neuloženo", "Sending…" : "Odesílání…", "Email sent" : "E-mail odeslán", - "Address" : "Adresa", + "Location" : "Poloha", "Avatar" : "Profilový obrázek", "About" : "O uživateli", "Full name" : "Celé jméno", @@ -406,7 +409,7 @@ OC.L10N.register( "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Tato aplikace není označena jako kompatibilní s vámi používanou verzí Nexcloud. Pokud budete pokračovat, pořád budete moci aplikaci nainstalovat. Uvědomte si ale, že aplikace nemusí fungovat, jak je očekáváno.", "Never" : "Nikdy", "An error occured during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.", - "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikace byla povolena ale je třeba ji aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikace byla zapnuta ale je třeba ji ještě aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.", "Error: This app cannot be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru", "An error occurred during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.", "User already exists." : "Uživatel už existuje.", @@ -487,22 +490,10 @@ OC.L10N.register( "Picture provided by original account" : "Obrázek poskytovaný původním účtem", "Please note that it can take up to 24 hours for the avatar to get updated everywhere." : "Mějte na paměti, že může trvat až 24 hodin, než bude avatar aktualizován všude.", "Choose as profile picture" : "Vybrat jako profilový obrázek", - "You are a member of the following groups:" : "Jste členem následujících skupin:", + "You are a member of the following groups:" : "Jste členy následujících skupin:", "You are using <strong>%s</strong>" : "Vaše data zabírají <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Používáte <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Změnit úroveň soukromí telefonního čísla", - "Your phone number" : "Vaše telefonní číslo", - "Change privacy level of address" : "Změnit úroveň soukromí adresy", - "Your postal address" : "Vaše poštovní adresa", - "Change privacy level of website" : "Změnit úroveň soukromí webové stránky", - "It can take up to 24 hours before the account is displayed as verified." : "Může trvat až 24 hodin, než se účet zobrazí jako ověřený.", - "Link https://…" : "Odkaz https://…", - "Change privacy level of Twitter profile" : "Změnit úroveň soukromí Twitteru", - "Twitter handle @…" : "Přezdívka na Twitteru @…", "Locale" : "Místní a jazyková nastavení", - "Current password" : "Stávající heslo", - "New password" : "Nové heslo", - "Change password" : "Změnit heslo", "Use a second factor besides your password to increase security for your account." : "Pro zlepšení zabezpečení vašeho účtu použijte vedle hesla také druhý faktor.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Pokud pro připojování se k Nextcloud používáte aplikace třetích stran, nezapomeňte před zapnutím ověřování druhým faktorem vytvořit pro jednotlivé aplikace jejich hesla.", "Migration in progress. Please wait until the migration is finished" : "Probíhá migrace. Vyčkejte jejího dokončení", @@ -536,7 +527,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Povolit automatické dokončování uživatelského jména při zadávání celého jména nebo e-mailové adresy (při ignorování chybějící shody s telefonním seznamem a toho, že je ve stejné skupině)", "Change privacy level of full name" : "Změnit úroveň soukromí pro celé jméno", "No display name set" : "Nenastaveno žádné zobrazované jméno", + "Change privacy level of phone number" : "Změnit úroveň soukromí telefonního čísla", + "Address" : "Adresa", + "Change privacy level of address" : "Změnit úroveň soukromí adresy", + "Your postal address" : "Vaše poštovní adresa", + "Change privacy level of website" : "Změnit úroveň soukromí webové stránky", + "It can take up to 24 hours before the account is displayed as verified." : "Může trvat až 24 hodin, než se účet zobrazí jako ověřený.", + "Link https://…" : "Odkaz https://…", + "Change privacy level of Twitter profile" : "Změnit úroveň soukromí Twitteru", + "Twitter handle @…" : "Přezdívka na Twitteru @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Je téměř vyčerpán nejvyšší umožněný počet klíčů v OPcache. Aby bylo zajištěno, že se do mezipaměti vejdou veškeré skripty, je doporučeno přidat do nastavení PHP volbu <code>opcache.max_accelerated_files</code> s hodnotou vyšší než <code>%s</code>.", - "Change scope level of {accountProperty}" : "Změnit stupeň rozsahu {accountProperty}" + "Unable to update biography" : "Životopis se nedaří aktulizovat", + "Unable to update full name" : "Nedaří se aktualizovat celé jméno", + "No full name set" : "Nenastaveno celé jméno", + "Unable to update headline" : "Nadpis se nedaří změnit", + "Unable to update organisation" : "Nedaří se aktualizovat organizaci", + "Unable to update role" : "Nedaří se aktualizovat roli", + "Change scope level of {accountProperty}" : "Změnit stupeň rozsahu {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Nedaří se aktualizovat rozsah federování primární {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Nedaří se aktualizovat rozsah federování dodatečné {accountProperty}" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json index 819e319b906..a4e862441be 100644 --- a/apps/settings/l10n/cs.json +++ b/apps/settings/l10n/cs.json @@ -263,11 +263,11 @@ "Remove group" : "Odebrat skupinu", "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte se smazat skupinu {group}. Uživatelé NEbudou smazáni.", "Please confirm the group removal " : "Potvrďte odstranění skupiny", + "Current password" : "Stávající heslo", + "New password" : "Nové heslo", + "Change password" : "Změnit heslo", "Your biography" : "Váš životopis", - "Unable to update biography" : "Životopis se nedaří aktulizovat", "Your full name" : "Vaše celé jméno", - "Unable to update full name" : "Nedaří se aktualizovat celé jméno", - "No full name set" : "Nenastaveno celé jméno", "Email options" : "Předvolby e-mailu", "Primary email for password reset and notifications" : "Hlavní e-mail pro resetování hesla a oznamování", "Remove primary email" : "Odebrat hlavní e-mail", @@ -285,13 +285,13 @@ "No email address set" : "E-mailová adresa není nastavena", "Additional emails" : "Další e-maily", "Your headline" : "Váš nadpis", - "Unable to update headline" : "Nadpis se nedaří změnit", "Language" : "Jazyk", "Help translate" : "Pomoci s překladem", "Unable to update language" : "Jazyk se nedaří aktualizovat", "No language set" : "Není nastaven jazyk", + "Your location" : "Kde se nacházíte", "Your organisation" : "Vaše organizace", - "Unable to update organisation" : "Nedaří se aktualizovat organizaci", + "Your phone number" : "Vaše telefonní číslo", "Edit your Profile visibility" : "Upravit viditelnost profilu", "Enable Profile" : "Zapnout profil", "Unable to update profile enabled state" : "Nedaří se aktualizovat stav zapnutí profilu", @@ -299,13 +299,16 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nedaří se aktualizovat viditelnost {displayId}", "Your role" : "Vaše úloha", - "Unable to update role" : "Nedaří se aktualizovat roli", - "Change scope level of {accountProperty}, current scope is {scope}" : "Změnit stupeň rozsahu {accountProperty}, stávající je {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Nedaří se aktualizovat rozsah federování primární {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Nedaří se aktualizovat rozsah federování dodatečné {accountProperty}", + "Your Twitter handle" : "Twitter účet", + "Your website" : "Vlastní webová stránka", + "No {property} set" : "Nenastaveno žádné {property}", + "Unable to update {property}" : "Nedaří se aktualizovat {property}", + "Change scope level of {property}, current scope is {scope}" : "Změnit stupeň rozsahu {property}, stávající je {scope}", + "Unable to update federation scope of the primary {property}" : "Nedaří se aktualizovat rozsah federování primární {property}", + "Unable to update federation scope of additional {property}" : "Nedaří se aktualizovat rozsah federování dodatečné {property}", "Add additional email" : "Přidat další e-mail", "Add" : "Přidat", - "You do not have permissions to see the details of this user" : "Nemáte oprávnění k zobrazení podrobností o tomto uživateli", + "You do not have permissions to see the details of this user" : "Nemáte oprávnění zobrazit si podrobností o tomto uživateli", "Add new password" : "Přidat nové heslo", "Add new email address" : "Přidat novou e-mailovou adresu", "Add user to group" : "Přidat uživatele do skupiny", @@ -370,7 +373,7 @@ "Add group" : "Přidat skupinu", "Active users" : "Aktivní uživatelé", "Admins" : "Správci", - "Disabled users" : "Zakázaní uživatelé", + "Disabled users" : "Znepřístupnění uživatelé", "Default quota:" : "Výchozí kvóta:", "Select default quota" : "Vybrat výchozí kvótu", "Show Languages" : "Zobrazit jazyky", @@ -381,7 +384,7 @@ "Not saved" : "Neuloženo", "Sending…" : "Odesílání…", "Email sent" : "E-mail odeslán", - "Address" : "Adresa", + "Location" : "Poloha", "Avatar" : "Profilový obrázek", "About" : "O uživateli", "Full name" : "Celé jméno", @@ -404,7 +407,7 @@ "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Tato aplikace není označena jako kompatibilní s vámi používanou verzí Nexcloud. Pokud budete pokračovat, pořád budete moci aplikaci nainstalovat. Uvědomte si ale, že aplikace nemusí fungovat, jak je očekáváno.", "Never" : "Nikdy", "An error occured during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.", - "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikace byla povolena ale je třeba ji aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.", + "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikace byla zapnuta ale je třeba ji ještě aktualizovat. Za 5 sekund budete přesměrování na stránku pro aktualizaci.", "Error: This app cannot be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru", "An error occurred during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.", "User already exists." : "Uživatel už existuje.", @@ -485,22 +488,10 @@ "Picture provided by original account" : "Obrázek poskytovaný původním účtem", "Please note that it can take up to 24 hours for the avatar to get updated everywhere." : "Mějte na paměti, že může trvat až 24 hodin, než bude avatar aktualizován všude.", "Choose as profile picture" : "Vybrat jako profilový obrázek", - "You are a member of the following groups:" : "Jste členem následujících skupin:", + "You are a member of the following groups:" : "Jste členy následujících skupin:", "You are using <strong>%s</strong>" : "Vaše data zabírají <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Používáte <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Změnit úroveň soukromí telefonního čísla", - "Your phone number" : "Vaše telefonní číslo", - "Change privacy level of address" : "Změnit úroveň soukromí adresy", - "Your postal address" : "Vaše poštovní adresa", - "Change privacy level of website" : "Změnit úroveň soukromí webové stránky", - "It can take up to 24 hours before the account is displayed as verified." : "Může trvat až 24 hodin, než se účet zobrazí jako ověřený.", - "Link https://…" : "Odkaz https://…", - "Change privacy level of Twitter profile" : "Změnit úroveň soukromí Twitteru", - "Twitter handle @…" : "Přezdívka na Twitteru @…", "Locale" : "Místní a jazyková nastavení", - "Current password" : "Stávající heslo", - "New password" : "Nové heslo", - "Change password" : "Změnit heslo", "Use a second factor besides your password to increase security for your account." : "Pro zlepšení zabezpečení vašeho účtu použijte vedle hesla také druhý faktor.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Pokud pro připojování se k Nextcloud používáte aplikace třetích stran, nezapomeňte před zapnutím ověřování druhým faktorem vytvořit pro jednotlivé aplikace jejich hesla.", "Migration in progress. Please wait until the migration is finished" : "Probíhá migrace. Vyčkejte jejího dokončení", @@ -534,7 +525,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Povolit automatické dokončování uživatelského jména při zadávání celého jména nebo e-mailové adresy (při ignorování chybějící shody s telefonním seznamem a toho, že je ve stejné skupině)", "Change privacy level of full name" : "Změnit úroveň soukromí pro celé jméno", "No display name set" : "Nenastaveno žádné zobrazované jméno", + "Change privacy level of phone number" : "Změnit úroveň soukromí telefonního čísla", + "Address" : "Adresa", + "Change privacy level of address" : "Změnit úroveň soukromí adresy", + "Your postal address" : "Vaše poštovní adresa", + "Change privacy level of website" : "Změnit úroveň soukromí webové stránky", + "It can take up to 24 hours before the account is displayed as verified." : "Může trvat až 24 hodin, než se účet zobrazí jako ověřený.", + "Link https://…" : "Odkaz https://…", + "Change privacy level of Twitter profile" : "Změnit úroveň soukromí Twitteru", + "Twitter handle @…" : "Přezdívka na Twitteru @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Je téměř vyčerpán nejvyšší umožněný počet klíčů v OPcache. Aby bylo zajištěno, že se do mezipaměti vejdou veškeré skripty, je doporučeno přidat do nastavení PHP volbu <code>opcache.max_accelerated_files</code> s hodnotou vyšší než <code>%s</code>.", - "Change scope level of {accountProperty}" : "Změnit stupeň rozsahu {accountProperty}" + "Unable to update biography" : "Životopis se nedaří aktulizovat", + "Unable to update full name" : "Nedaří se aktualizovat celé jméno", + "No full name set" : "Nenastaveno celé jméno", + "Unable to update headline" : "Nadpis se nedaří změnit", + "Unable to update organisation" : "Nedaří se aktualizovat organizaci", + "Unable to update role" : "Nedaří se aktualizovat roli", + "Change scope level of {accountProperty}" : "Změnit stupeň rozsahu {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Nedaří se aktualizovat rozsah federování primární {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Nedaří se aktualizovat rozsah federování dodatečné {accountProperty}" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js index b5e9cc67a7e..6688e8498cc 100644 --- a/apps/settings/l10n/da.js +++ b/apps/settings/l10n/da.js @@ -222,11 +222,11 @@ OC.L10N.register( "Remove group" : "Fjern gruppe", "You are about to remove the group {group}. The users will NOT be deleted." : "Du er ved at fjerne gruppen {group}. Brugerne bliver IKKE slettet.", "Please confirm the group removal " : "Bekræft at gruppen skal fjernes", + "Current password" : "Nuværende adgangskode", + "New password" : "Nyt kodeord", + "Change password" : "Skift kodeord", "Your biography" : "Din biografi", - "Unable to update biography" : "Kan ikke opdatere biografien", "Your full name" : "Dit fulde navn", - "Unable to update full name" : "Det fulde navn kunne ikke opdateres", - "No full name set" : "Intet fuldt navn angivet", "Email options" : "E-mail muligheder", "Primary email for password reset and notifications" : "Primær e-mail til nulstilling af adgangskode og meddelelser", "Remove primary email" : "Fjern primær e-mail", @@ -244,13 +244,12 @@ OC.L10N.register( "No email address set" : "Der er ikke angivet e-mailadresse", "Additional emails" : "Yderligere e-mails", "Your headline" : "Din overskrift", - "Unable to update headline" : "Kan ikke opdatere overskriften", "Language" : "Sprog", "Help translate" : "Hjælp med oversættelsen", "Unable to update language" : "Kunne ikke opdatere sproget", "No language set" : "Intet sprog indstillet", "Your organisation" : "Din organisation", - "Unable to update organisation" : "Kan ikke opdatere organisationen", + "Your phone number" : "Dit telefon nummer", "Edit your Profile visibility" : "Rediger din profils synlighed", "Enable Profile" : "Aktiver profil", "Unable to update profile enabled state" : "Kan ikke opdatere profilaktiveret tilstand", @@ -258,9 +257,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Kan ikke opdatere synligheden af {displayId}", "Your role" : "Din rolle", - "Unable to update role" : "Rollen kunne ikke opdateres", - "Unable to update federation scope of the primary {accountProperty}" : "Kan ikke opdatere føderationsomfanget for den primære {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Kan ikke opdatere føderationsomfanget for yderligere {accountProperty}", + "Your Twitter handle" : "Dit Twitter handle @…", + "Your website" : "Vores hjemmeside", "Add" : "Tilføj", "You do not have permissions to see the details of this user" : "Du har ikke tilladelse til at se denne brugers detaljer", "Add new password" : "Tilføj ny adgangskode", @@ -338,7 +336,7 @@ OC.L10N.register( "Not saved" : "Ikke gemt", "Sending…" : "Sender...", "Email sent" : "E-mail afsendt", - "Address" : "Adresse", + "Location" : "Sted", "Avatar" : "Avatar", "About" : "Om", "Full name" : "Fulde navn", @@ -439,19 +437,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Du er medlem af følgende grupper:", "You are using <strong>%s</strong>" : "Du bruger <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du bruger <strong>%1$s</strong> af <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Skift privatlivsniveau for telefonnummer", - "Your phone number" : "Dit telefon nummer", - "Change privacy level of address" : "Skift privatlivsniveau for adresse", - "Your postal address" : "Dit Postnummer", - "Change privacy level of website" : "Skift privatlivsniveau på webstedet", - "It can take up to 24 hours before the account is displayed as verified." : "Det kan tage op til 24 timer, før kontoen vises som verificeret.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Skift privatlivsniveau for Twitter-profil", - "Twitter handle @…" : "Twitter handle @…", "Locale" : "Lokal", - "Current password" : "Nuværende adgangskode", - "New password" : "Nyt kodeord", - "Change password" : "Skift kodeord", "Use a second factor besides your password to increase security for your account." : "Brug to-faktor godkendelse for at øge sikkerheden for din konto.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Hvis du bruger tredjepartsapplikationer til at oprette forbindelse til Nextcloud, skal du sørge for at oprette og konfigurere en app-adgangskode for hver, før du aktiverer anden faktor-godkendelse.", "Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet", @@ -484,6 +470,23 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tillad autofuldførelse af brugernavn, når du indtaster det fulde navn eller e-mailadresse (ignorerer manglende telefonbogsmatch og er i samme gruppe)", "Change privacy level of full name" : "Skift privatlivsniveau for det fulde navn", "No display name set" : "Der er ikke angivet skærmnavn", - "Change scope level of {accountProperty}" : "Skift omfangsniveau for {accountProperty}" + "Change privacy level of phone number" : "Skift privatlivsniveau for telefonnummer", + "Address" : "Adresse", + "Change privacy level of address" : "Skift privatlivsniveau for adresse", + "Your postal address" : "Dit Postnummer", + "Change privacy level of website" : "Skift privatlivsniveau på webstedet", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan tage op til 24 timer, før kontoen vises som verificeret.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Skift privatlivsniveau for Twitter-profil", + "Twitter handle @…" : "Twitter handle @…", + "Unable to update biography" : "Kan ikke opdatere biografien", + "Unable to update full name" : "Det fulde navn kunne ikke opdateres", + "No full name set" : "Intet fuldt navn angivet", + "Unable to update headline" : "Kan ikke opdatere overskriften", + "Unable to update organisation" : "Kan ikke opdatere organisationen", + "Unable to update role" : "Rollen kunne ikke opdateres", + "Change scope level of {accountProperty}" : "Skift omfangsniveau for {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Kan ikke opdatere føderationsomfanget for den primære {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Kan ikke opdatere føderationsomfanget for yderligere {accountProperty}" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json index 52b50a668d6..998d435ee91 100644 --- a/apps/settings/l10n/da.json +++ b/apps/settings/l10n/da.json @@ -220,11 +220,11 @@ "Remove group" : "Fjern gruppe", "You are about to remove the group {group}. The users will NOT be deleted." : "Du er ved at fjerne gruppen {group}. Brugerne bliver IKKE slettet.", "Please confirm the group removal " : "Bekræft at gruppen skal fjernes", + "Current password" : "Nuværende adgangskode", + "New password" : "Nyt kodeord", + "Change password" : "Skift kodeord", "Your biography" : "Din biografi", - "Unable to update biography" : "Kan ikke opdatere biografien", "Your full name" : "Dit fulde navn", - "Unable to update full name" : "Det fulde navn kunne ikke opdateres", - "No full name set" : "Intet fuldt navn angivet", "Email options" : "E-mail muligheder", "Primary email for password reset and notifications" : "Primær e-mail til nulstilling af adgangskode og meddelelser", "Remove primary email" : "Fjern primær e-mail", @@ -242,13 +242,12 @@ "No email address set" : "Der er ikke angivet e-mailadresse", "Additional emails" : "Yderligere e-mails", "Your headline" : "Din overskrift", - "Unable to update headline" : "Kan ikke opdatere overskriften", "Language" : "Sprog", "Help translate" : "Hjælp med oversættelsen", "Unable to update language" : "Kunne ikke opdatere sproget", "No language set" : "Intet sprog indstillet", "Your organisation" : "Din organisation", - "Unable to update organisation" : "Kan ikke opdatere organisationen", + "Your phone number" : "Dit telefon nummer", "Edit your Profile visibility" : "Rediger din profils synlighed", "Enable Profile" : "Aktiver profil", "Unable to update profile enabled state" : "Kan ikke opdatere profilaktiveret tilstand", @@ -256,9 +255,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Kan ikke opdatere synligheden af {displayId}", "Your role" : "Din rolle", - "Unable to update role" : "Rollen kunne ikke opdateres", - "Unable to update federation scope of the primary {accountProperty}" : "Kan ikke opdatere føderationsomfanget for den primære {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Kan ikke opdatere føderationsomfanget for yderligere {accountProperty}", + "Your Twitter handle" : "Dit Twitter handle @…", + "Your website" : "Vores hjemmeside", "Add" : "Tilføj", "You do not have permissions to see the details of this user" : "Du har ikke tilladelse til at se denne brugers detaljer", "Add new password" : "Tilføj ny adgangskode", @@ -336,7 +334,7 @@ "Not saved" : "Ikke gemt", "Sending…" : "Sender...", "Email sent" : "E-mail afsendt", - "Address" : "Adresse", + "Location" : "Sted", "Avatar" : "Avatar", "About" : "Om", "Full name" : "Fulde navn", @@ -437,19 +435,7 @@ "You are a member of the following groups:" : "Du er medlem af følgende grupper:", "You are using <strong>%s</strong>" : "Du bruger <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du bruger <strong>%1$s</strong> af <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Skift privatlivsniveau for telefonnummer", - "Your phone number" : "Dit telefon nummer", - "Change privacy level of address" : "Skift privatlivsniveau for adresse", - "Your postal address" : "Dit Postnummer", - "Change privacy level of website" : "Skift privatlivsniveau på webstedet", - "It can take up to 24 hours before the account is displayed as verified." : "Det kan tage op til 24 timer, før kontoen vises som verificeret.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Skift privatlivsniveau for Twitter-profil", - "Twitter handle @…" : "Twitter handle @…", "Locale" : "Lokal", - "Current password" : "Nuværende adgangskode", - "New password" : "Nyt kodeord", - "Change password" : "Skift kodeord", "Use a second factor besides your password to increase security for your account." : "Brug to-faktor godkendelse for at øge sikkerheden for din konto.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Hvis du bruger tredjepartsapplikationer til at oprette forbindelse til Nextcloud, skal du sørge for at oprette og konfigurere en app-adgangskode for hver, før du aktiverer anden faktor-godkendelse.", "Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet", @@ -482,6 +468,23 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tillad autofuldførelse af brugernavn, når du indtaster det fulde navn eller e-mailadresse (ignorerer manglende telefonbogsmatch og er i samme gruppe)", "Change privacy level of full name" : "Skift privatlivsniveau for det fulde navn", "No display name set" : "Der er ikke angivet skærmnavn", - "Change scope level of {accountProperty}" : "Skift omfangsniveau for {accountProperty}" + "Change privacy level of phone number" : "Skift privatlivsniveau for telefonnummer", + "Address" : "Adresse", + "Change privacy level of address" : "Skift privatlivsniveau for adresse", + "Your postal address" : "Dit Postnummer", + "Change privacy level of website" : "Skift privatlivsniveau på webstedet", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan tage op til 24 timer, før kontoen vises som verificeret.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Skift privatlivsniveau for Twitter-profil", + "Twitter handle @…" : "Twitter handle @…", + "Unable to update biography" : "Kan ikke opdatere biografien", + "Unable to update full name" : "Det fulde navn kunne ikke opdateres", + "No full name set" : "Intet fuldt navn angivet", + "Unable to update headline" : "Kan ikke opdatere overskriften", + "Unable to update organisation" : "Kan ikke opdatere organisationen", + "Unable to update role" : "Rollen kunne ikke opdateres", + "Change scope level of {accountProperty}" : "Skift omfangsniveau for {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Kan ikke opdatere føderationsomfanget for den primære {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Kan ikke opdatere føderationsomfanget for yderligere {accountProperty}" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js index 8edf1f3f9e8..6f49c40406e 100644 --- a/apps/settings/l10n/de.js +++ b/apps/settings/l10n/de.js @@ -24,23 +24,23 @@ OC.L10N.register( "Groups" : "Gruppen", "Group list is empty" : "Gruppenliste ist leer", "Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden", - "{actor} added you to group {group}" : "{actor} hat Dich zur Gruppe {group} hinzugefügt", + "{actor} added you to group {group}" : "{actor} hat dich zur Gruppe {group} hinzugefügt", "You added {user} to group {group}" : "Du hast {user} zur Gruppe {group} hinzugefügt", "{actor} added {user} to group {group}" : "{actor} hat {user} zur Gruppe {group} hinzugefügt", - "An administrator added you to group {group}" : "Ein Administrator hat Dich zur Gruppe {group} hinzugefügt", + "An administrator added you to group {group}" : "Ein Administrator hat dich zur Gruppe {group} hinzugefügt", "An administrator added {user} to group {group}" : "Ein Administrator hat {user} zur Gruppe {group} hinzugefügt", - "{actor} removed you from group {group}" : "{actor} hat Dich von der Gruppe {group} entfernt", + "{actor} removed you from group {group}" : "{actor} hat dich von der Gruppe {group} entfernt", "You removed {user} from group {group}" : "Du hast {user} von der Gruppe {group} entfernt", "{actor} removed {user} from group {group}" : "{actor} hat {user} von der Gruppe {group} entfernt", - "An administrator removed you from group {group}" : "Ein Administrator hat Dich von der Gruppe {group} entfernt", + "An administrator removed you from group {group}" : "Ein Administrator hat dich von der Gruppe {group} entfernt", "An administrator removed {user} from group {group}" : "Ein Administrator hat {user} von der Gruppe {group} entfernt", "Your <strong>group memberships</strong> were modified" : "Deine <strong>Gruppenmitgliedschaft</strong> wurde geändert", - "{actor} changed your password" : "{actor} hat Dein Passwort geändert", - "You changed your password" : "Du hast Dein Passwort geändert", + "{actor} changed your password" : "{actor} hat dein Passwort geändert", + "You changed your password" : "Du hast dein Passwort geändert", "Your password was reset by an administrator" : "Dein Passwort wurde vom Administrator zurückgesetzt", "Your password was reset" : "Dein Passwort wurde zurückgesetzt", - "{actor} changed your email address" : "{actor} hat Deine E-Mail-Adresse geändert", - "You changed your email address" : "Du hast Deine E-Mail-Adresse geändert", + "{actor} changed your email address" : "{actor} hat deine E-Mail-Adresse geändert", + "You changed your email address" : "Du hast deine E-Mail-Adresse geändert", "Your email address was changed by an administrator" : "Deine E-Mail-Adresse wurde von einem Administrator geändert", "You created app password \"{token}\"" : "Du hast das App-Passwort \"{token}\" erstellt", "An administrator created app password \"{token}\"" : "Ein vom Administrator erstelltes App-Passwort \"{token}\"", @@ -49,11 +49,11 @@ OC.L10N.register( "You granted filesystem access to app password \"{token}\"" : "Du hast Dateisystemzugriff für App-Passwort \"{token}\" erlaubt", "You revoked filesystem access from app password \"{token}\"" : "Du hast Dateisystemzugriff für App-Passwort \"{token}\" widerrufen", "Security" : "Sicherheit", - "You successfully logged in using two-factor authentication (%1$s)" : "Du hast Dich erfolgreich mittels Zwei-Faktor-Authentifizierung angemeldet (%1$s)", + "You successfully logged in using two-factor authentication (%1$s)" : "Du hast dich erfolgreich mittels Zwei-Faktor-Authentifizierung angemeldet (%1$s)", "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktor-Authentifizierung schlug fehl (%1$s)", "Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet", "Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen", - "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder Deine <strong>E-Mail-Adresse</strong> wurde geändert", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder deine <strong>E-Mail-Adresse</strong> wurde geändert", "Could not remove app." : "App konnte nicht entfernt werden", "Could not update app." : "App konnte nicht aktualisiert werden", "Wrong password" : "Falsches Passwort", @@ -67,20 +67,22 @@ OC.L10N.register( "Backend does not support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert", "installing and updating apps via the App Store or Federated Cloud Sharing" : "Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated-Cloud-Sharing", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", - "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisiere Dein Betriebssystem, da ansonsten Funktionen, wie z. B. %3$s, nicht zuverlässig funktionieren.", - "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Das PHP-OPcache-Modul ist nicht geladen. Für eine bessere Leistung empfiehlt es sich, das Modul in Deiner PHP-Installation zu laden.", - "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache ist deaktiviert. Für eine bessere Leistung wird empfohlen, <code>opcache.enable=1</code> in Deiner PHP-Konfiguration anzuwenden.", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z. B. %3$s, nicht zuverlässig funktionieren.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Das PHP-OPcache-Modul ist nicht geladen. Für eine bessere Leistung empfiehlt es sich, das Modul in deiner PHP-Installation zu laden.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache ist deaktiviert. Für eine bessere Leistung wird empfohlen, <code>opcache.enable=1</code> in deiner PHP-Konfiguration anzuwenden.", "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache ist so konfiguriert, dass Codekommentare entfernt werden. Wenn OPcache aktiviert ist, muss <code>opcache.save_comments=1</code> gesetzt werden, damit Nextcloud funktioniert.", - "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast erreicht. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in Deiner PHP-Konfiguration anzuwenden.", - "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Puffer ist fast voll. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.memory_consumption</code> in Deiner PHP-Konfiguration mit einem höheren Wert als <code>%s</code> anzuwenden.", - "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Zwischenspeicher für interne Zeichenfolgen ist fast voll. Um sicherzustellen, dass sich wiederholende Zeichenfolgen effektiv zwischengespeichert werden können, wird empfohlen, <code>opcache.interned_strings_buffer</code> mit einem Wert größer als <code>%s</code> in Deiner PHP-Konfiguration anzuwenden.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud darf die OPcache-API nicht verwenden. Wenn OPcache aktiviert ist, wird dringend empfohlen, alle Nextcloud-Verzeichnisse mit <code>opcache.restrict_api</code> einzuschließen oder diese Einstellung zu deaktivieren, um OPcache-API-Einschränkungen zu deaktivieren und Fehler während Nextcloud-Core- oder App-Aktualisierungen zu vermeiden.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud darf die OPcache-API nicht verwenden. Es wird dringend empfohlen, alle Nextcloud-Verzeichnisse mit <code>opcache.restrict_api</code> einzuschließen oder diese Einstellung zu deaktivieren, um OPcache-API-Einschränkungen zu deaktivieren und Fehler während Nextcloud-Core- oder App-Aktualisierungen zu vermeiden.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast erreicht. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Puffer ist fast voll. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.memory_consumption</code> in deiner PHP-Konfiguration mit einem höheren Wert als <code>%s</code> anzuwenden.", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Zwischenspeicher für interne Zeichenfolgen ist fast voll. Um sicherzustellen, dass sich wiederholende Zeichenfolgen effektiv zwischengespeichert werden können, wird empfohlen, <code>opcache.interned_strings_buffer</code> mit einem Wert größer als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", "Invalid SMTP password." : "Ungültiges SMTP-Passwort", "Email setting test" : "Test der E-Mail-Einstellungen", "Well done, %s!" : "Gut gemacht, %s!", - "If you received this email, the email configuration seems to be correct." : "Wenn Du diese E-Mail empfangen hast, sind die E-Mail-Einstellungen korrekt.", - "Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfe Dein E-Mail-Server-Protokoll", - "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe Deine Einstellungen. (Fehler: %s)", - "You need to set your user email before being able to send test emails. Go to %s for that." : "Du musst Deine Benutzer-E-Mail-Adresse festlegen, bevor Du Test-E-Mails senden kannst. Gehe dazu zu %s.", + "If you received this email, the email configuration seems to be correct." : "Wenn du diese E-Mail empfangen hast, sind die E-Mail-Einstellungen korrekt.", + "Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfe dein E-Mail-Server-Protokoll", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe deine Einstellungen. (Fehler: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "Du musst deine Benutzer-E-Mail-Adresse festlegen, bevor du Test-E-Mails senden kannst. Gehe dazu zu %s.", "Invalid user" : "Ungültiger Benutzer", "Invalid mail address" : "Ungültige E-Mail-Adresse", "Settings saved" : "Einstellungen gespeichert", @@ -89,15 +91,15 @@ OC.L10N.register( "Unable to set invalid phone number" : "Ungültige Telefonnummer konnte nicht festgelegt werden", "Unable to set invalid website" : "Ungültige Webseite konnte nicht eingestellt werden", "Some account data was invalid" : "Einige Kontodaten waren ungültig", - "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Um Dein Twitter-Konto zu überprüfen, veröffentliche bitte den folgenden Tweet auf Twitter (Bitte stelle sicher, dass der Tweet keinen Zeilenumbruch enthält):", - "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Um Deine Webseite zu überprüfen, speichere bitte den folgenden Inhalt im Web-Wurzelverzeichnist in der Datei '.well-known/CloudIdVerificationCode.txt' (bitte stelle sicher, das sich der gesamte Text in einer Zeile befindet):", - "%1$s changed your password on %2$s." : "%1$s hat Dein Passwort auf %2$s geändert.", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Um dein Twitter-Konto zu überprüfen, veröffentliche bitte den folgenden Tweet auf Twitter (Bitte stelle sicher, dass der Tweet keinen Zeilenumbruch enthält):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Um deine Webseite zu überprüfen, speichere bitte den folgenden Inhalt im Web-Wurzelverzeichnist in der Datei '.well-known/CloudIdVerificationCode.txt' (bitte stelle sicher, das sich der gesamte Text in einer Zeile befindet):", + "%1$s changed your password on %2$s." : "%1$s hat dein Passwort auf %2$s geändert.", "Your password on %s was changed." : "Dein Passwort auf %s wurde geändert.", "Your password on %s was reset by an administrator." : "Dein Passwort auf %s wurde vom Administrator zurückgesetzt.", "Your password on %s was reset." : "Dein Passwort auf %s wurde zurückgesetzt", "Password for %1$s changed on %2$s" : "Passwort für %1$s geändert auf %2$s", "Password changed for %s" : "Passwort geändert für %s", - "If you did not request this, please contact an administrator." : "Wenn Du das nicht angefordert haben solltest, wende Dich bitte an den Administrator.", + "If you did not request this, please contact an administrator." : "Wenn du das nicht angefordert haben solltest, wende dich bitte an den Administrator.", "Your email address on %s was changed." : "Deine E-Mail-Adresse auf %s wurde geändert.", "Your email address on %s was changed by an administrator." : "Deine E-Mail-Adresse auf %s wurde von einem Administrator geändert.", "Email address for %1$s changed on %2$s" : "E-Mail-Adresse für %1$s geändert auf %2$s", @@ -106,9 +108,9 @@ OC.L10N.register( "Your %s account was created" : "Dein %s-Konto wurde erstellt", "Welcome aboard" : "Willkommen an Bord", "Welcome aboard %s" : "Willkommen an Bord %s", - "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu Deinem %s-Konto. Du kannst Deine Daten hinzufügen, schützen und teilen.", + "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu deinem %s-Konto. Du kannst deine Daten hinzufügen, schützen und teilen.", "Your username is: %s" : "Dein Benutzername lautet: %s", - "Set your password" : "Setze Dein Passwort", + "Set your password" : "Setze dein Passwort", "Go to %s" : "%s aufrufen", "Install Client" : "Installiere den Client", "Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Administrator sein", @@ -135,14 +137,14 @@ OC.L10N.register( "Verifying" : "Überprüfe", "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Eine Hintergrundaufgabe, die nach vom Benutzer importierten SSL-Zertifikaten sucht, läuft noch. Bitte später erneut versuchen.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Es sind einige vom Benutzer importierte SSL-Zertifikate vorhanden, die von Nextcloud 21 nicht mehr verwendet werden. Du kannst über den Befehl \"occ security:certificates:import\" in der Befehlszeile importiert werden. Ihre Pfade innerhalb des Datenverzeichnisses werden unten angezeigt.", - "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Benutzern oder -Gruppen gefunden. Bitte überprüfe Deine „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwende „occ ldap:update-uuid“, um sie zu aktualisieren.", + "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Benutzern oder -Gruppen gefunden. Bitte überprüfe deine „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwende „occ ldap:update-uuid“, um sie zu aktualisieren.", "The old server-side-encryption format is enabled. We recommend disabling this." : "Das alte serverseitige Verschlüsselungsformat ist aktiviert. Wir empfehlen, es zu deaktivieren.", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "MariaDB Version \"%s\" wird verwendet. Nextcloud 21 und neuer unterstützen diese Version nicht und benötigen MariaDB 10.2 oder neuer.", "Profile information" : "Profilinformation", - "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profilbild, vollständiger Name, E-Mail-Adresse, Telefonnummer, Adresse, Webseite, Twitter, Organisation, Rolle, Überschrift, Biografie und ob Dein Profil aktiviert ist", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profilbild, vollständiger Name, E-Mail-Adresse, Telefonnummer, Adresse, Webseite, Twitter, Organisation, Rolle, Überschrift, Biografie und ob dein Profil aktiviert ist", "Nextcloud settings" : "Nextcloud-Einstellungen", "Administration privileges" : "Administratorrechte", - "Here you can decide which group can access certain sections of the administration settings." : "Hier kannst Du festlegen, welche Gruppe auf bestimmte Bereiche der Administrationseinstellungen zugreifen kann.", + "Here you can decide which group can access certain sections of the administration settings." : "Hier kannst du festlegen, welche Gruppe auf bestimmte Bereiche der Administrationseinstellungen zugreifen kann.", "None" : "Keine", "Unable to modify setting" : "Einstellung konnte nicht geändert werden", "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung", @@ -171,14 +173,14 @@ OC.L10N.register( "User documentation" : "Dokumentation für Benutzer", "Admin documentation" : "Dokumentation für Administratoren", "Developer documentation" : "Dokumentation für Entwickler", - "This app is supported via your current Nextcloud subscription." : "Diese App wird von Deinem aktuellen Nextcloud-Abonnement unterstützt.", + "This app is supported via your current Nextcloud subscription." : "Diese App wird von deinem aktuellen Nextcloud-Abonnement unterstützt.", "Supported" : "Unterstützt", "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Vorgestellte Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.", "Featured" : "Vorgestellt", "Update to {update}" : "Aktualisieren auf {update}", "All apps are up-to-date." : "Alle Apps sind aktuell.", "Results from other categories" : "Ergebnisse aus anderen Kategorien", - "No apps found for your version" : "Es wurden keine Apps für Deine Version gefunden", + "No apps found for your version" : "Es wurden keine Apps für deine Version gefunden", "Disable all" : "Alle deaktivieren", "Enable all" : "Alle aktivieren", "_%n app has an update available_::_%n apps have an update available_" : ["Für %n App ist eine Aktualisierung verfügbar","Für %n Apps sind Aktualisierungen verfügbar"], @@ -189,7 +191,7 @@ OC.L10N.register( "Rename" : "Umbenennen", "Revoke" : "Widerrufen", "Wipe device" : "Gerät löschen", - "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -207,8 +209,8 @@ OC.L10N.register( "Device" : "Gerät", "Last activity" : "Letzte Aktivität", "Devices & sessions" : "Geräte & Sitzungen", - "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Deinem Konto angemeldete Web-, Desktop- und Mobil-Clients:", - "Do you really want to wipe your data from this device?" : "Möchtest Du wirklich alle Daten von diesem Gerät löschen?", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in deinem Konto angemeldete Web-, Desktop- und Mobil-Clients:", + "Do you really want to wipe your data from this device?" : "Möchtest du wirklich alle Daten von diesem Gerät löschen?", "Confirm wipe" : "Löschen bestätigen", "Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens", "Error while updating device token scope" : "Fehler bei der Aktualisierung des Geräte-Token-Scope", @@ -217,7 +219,7 @@ OC.L10N.register( "Error while wiping the device with the token" : "Fehler während des Löschens des Geräts mit dem Token", "App name" : "App-Name", "Create new app password" : "Neues App-Passwort erstellen", - "Use the credentials below to configure your app or device." : "Nutze die unten angebenen Anmeldeinformationen, um Deine App oder Dein Gerät zu konfigurieren.", + "Use the credentials below to configure your app or device." : "Nutze die unten angebenen Anmeldeinformationen, um deine App oder dein Gerät zu konfigurieren.", "For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.", "Username" : "Benutzername", "Password" : "Passwort", @@ -249,21 +251,21 @@ OC.L10N.register( "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Wird die Verschlüsselung einmal aktiviert, so werden alle ab diesem Zeitpunkt hochgeladene Dateien verschlüsselt. Sie kann nur wieder deaktiviert werden, wenn das Verschlüsselungsmodul dies unterstützt und alle Voraussetzungen (wie das Setzen eines Wiederherstellungsschlüssels) im Vorhinein erfüllt wurden.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Verschlüsselung alleine garantiert nicht die Systemsicherheit. Bitte lese in der Dokumentation nach, wie die Verschlüsselungs-app funktioniert und welche Anwendungsfälle unterstützt werden.", "Be aware that encryption always increases the file size." : "Bedenke, dass durch die Verschlüsselung die Dateigröße zunimmt. ", - "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungen von Deinen Daten zu erstellen. Falls Du die Verschlüsselung nutzt, sollte auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit Deinen Daten durchgeführt werden.", - "This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Möchtest Du die Verschlüsselung wirklich aktivieren?", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungen von deinen Daten zu erstellen. Falls du die Verschlüsselung nutzt, sollte auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit deinen Daten durchgeführt werden.", + "This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Möchtest du die Verschlüsselung wirklich aktivieren?", "No encryption module loaded, please enable an encryption module in the app menu." : "Es wurde kein Verschlüsselungs-Modul geladen, bitte ein Verschlüsselungs-Modul im Anwendungs-Menü aktivieren.", "Select default encryption module:" : "Standard-Verschlüsselungs-Modul auswählen:", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Du musst Deine Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) auf die neue migrieren. Bitte aktiviere das \"Standardverschlüsselungsmodul\" und führe {command} aus.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Du musst deine Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) auf die neue migrieren. Bitte aktiviere das \"Standardverschlüsselungsmodul\" und führe {command} aus.", "Unable to update server side encryption config" : "Die Serverseitige Verschlüsselungskonfiguration kann nicht aktualisiert werden.", "Rename group" : "Gruppe umbenennen", "Remove group" : "Gruppe entfernen", "You are about to remove the group {group}. The users will NOT be deleted." : "Du bist dabei die Gruppe {group} zu löschen. Die Benutzer werden NICHT gelöscht.", "Please confirm the group removal " : "Bitte die Löschung der Gruppe bestätigen", + "Current password" : "Aktuelles Passwort", + "New password" : "Neues Passwort", + "Change password" : "Passwort ändern", "Your biography" : "Deine Biografie", - "Unable to update biography" : "Biografie konnte nicht aktualisiert werden", "Your full name" : "Dein vollständiger Name", - "Unable to update full name" : "Der vollständige Name konnte nicht aktualisiert werden", - "No full name set" : "Kein vollständiger Name festgelegt", "Email options" : "E-Mail-Optionen", "Primary email for password reset and notifications" : "Primäre E-Mail-Adresse für Benachrichtigungen und zum Zurücksetzen des Passworts", "Remove primary email" : "Primäre E-Mail-Adresse entfernen", @@ -281,24 +283,25 @@ OC.L10N.register( "No email address set" : "Keine E-Mail-Adresse angegeben", "Additional emails" : "Zusätzliche E-Mail-Adressen ", "Your headline" : "Deine Überschrift", - "Unable to update headline" : "Überschrift konnte nicht aktualisiert werden", "Language" : "Sprache", "Help translate" : "Hilf bei der Übersetzung mit", "Unable to update language" : "Sprache konnte nicht aktualisiert werden", "No language set" : "Keine Sprache eingestellt.", + "Your location" : "Dein Ort", "Your organisation" : "Deine Organisation", - "Unable to update organisation" : "Organisation konnte nicht aktualisiert werden", + "Your phone number" : "Deine Telefonnummer", "Edit your Profile visibility" : "Sichtbarkeit des Profils anpassen", "Enable Profile" : "Profil aktivieren", "Unable to update profile enabled state" : "Der Status für aktiviertes Profil konnte nicht aktualisiert werden", - "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Die restriktivere Einstellung von Sichtbarkeit oder Bereich wird in Deinem Profil berücksichtigt. Wenn beispielsweise die Sichtbarkeit auf \"Für jeden sichtbar\" und der Bereich auf \"Privat\" festgelegt ist, wird \"Privat\" respektiert.", + "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Die restriktivere Einstellung von Sichtbarkeit oder Bereich wird in deinem Profil berücksichtigt. Wenn beispielsweise die Sichtbarkeit auf \"Für jeden sichtbar\" und der Bereich auf \"Privat\" festgelegt ist, wird \"Privat\" respektiert.", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Sichtbarkeit von {displayId} kann nicht aktualisiert werden", "Your role" : "Deine Funktion", - "Unable to update role" : "Rolle konnte nicht aktualisiert werden", - "Change scope level of {accountProperty}, current scope is {scope}" : "Ändern des Geltungsbereich von {accountProperty}, aktueller Bereich ist {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Der Federation-Bereich des primären {accountProperty} konnte nicht aktualisiert werden", - "Unable to update federation scope of additional {accountProperty}" : "Der Federation-Bereich des zusätzlichen {accountProperty} konnte nicht aktualisiert werden", + "Your Twitter handle" : "Dein Twitter-Handle", + "Your website" : "Deine Internetseite", + "No {property} set" : "Keine {property} eingestellt", + "Unable to update {property}" : "{property} konnte nicht aktualisiert werden.", + "Change scope level of {property}, current scope is {scope}" : "Ändern des Geltungsbereich von {property}, aktueller Bereich ist {scope}", "Add additional email" : "Zusätzliche E-Mail-Adresse hinzufügen", "Add" : "Hinzufügen", "You do not have permissions to see the details of this user" : "Du hast keine Berechtigung, um auf die Details dieses Benutzers zu sehen", @@ -341,16 +344,16 @@ OC.L10N.register( "Password change is disabled because the master key is disabled" : "Das Ändern des Passwortes ist deaktiviert, da der Master-Schlüssel deaktiviert ist", "Passwordless authentication requires a secure connection." : "Die Anmeldung ohne Passwort erfordert eine sichere Verbindung.", "Add WebAuthn device" : "WebAuthn-Gerät hinzufügen", - "Please authorize your WebAuthn device." : "Bitte autorisiere Dein WebAuthn-Gerät.", + "Please authorize your WebAuthn device." : "Bitte autorisiere dein WebAuthn-Gerät.", "Name your device" : "Gerät benennen", - "Adding your device …" : "Füge Dein Gerät hinzu…", + "Adding your device …" : "Füge dein Gerät hinzu…", "Server error while trying to add WebAuthn device" : "Server-Fehler beim Versuch ein WebAuthn-Gerät hinzuzufügen", "Server error while trying to complete WebAuthn device registration" : "Server-Fehler beim Versuch die WebAuthn-Geräte-Registrierung abzuschließen", "Unnamed device" : "Unbenanntes Gerät", "Passwordless Authentication" : "Authentifizierung ohne Passwort", - "Set up your account for passwordless authentication following the FIDO2 standard." : "Richte Dein Konto für die Authentifizierung ohne Passwort nach dem FIDO2-Standard ein.", + "Set up your account for passwordless authentication following the FIDO2 standard." : "Richte dein Konto für die Authentifizierung ohne Passwort nach dem FIDO2-Standard ein.", "No devices configured." : "Keine Geräte eingerichtet.", - "The following devices are configured for your account:" : "Die folgenden Geräte sind für Dein Konto eingerichtet:", + "The following devices are configured for your account:" : "Die folgenden Geräte sind für dein Konto eingerichtet:", "Your browser does not support WebAuthn." : "Dein Browser unterstützt kein WebAuthn.", "Your apps" : "Deine Apps", "Active apps" : "Aktive Apps", @@ -377,7 +380,7 @@ OC.L10N.register( "Not saved" : "Nicht gespeichert", "Sending…" : "Senden…", "Email sent" : "E-Mail gesendet", - "Address" : "Adresse", + "Location" : "Ort", "Avatar" : "Avatar", "About" : "Über", "Full name" : "Vollständiger Name", @@ -388,20 +391,22 @@ OC.L10N.register( "Role" : "Funktion", "Twitter" : "Twitter", "Website" : "Webseite", - "Profile visibility" : "Sichtbarkeit Deines Profils", + "Profile visibility" : "Sichtbarkeit deines Profils", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Nicht verfügbar, da diese Eigenschaft für Kernfunktionen wie Dateifreigabe und Kalendereinladungen erforderlich ist.", - "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Nicht verfügbar, da die Veröffentlichung benutzerspezifischer Daten auf dem Lookup-Server nicht zulässig ist. Wende Dich bei Fragen an Deinen Systemadministrator", + "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Nicht verfügbar, da die Veröffentlichung benutzerspezifischer Daten auf dem Lookup-Server nicht zulässig ist. Wende dich bei Fragen an deinen Systemadministrator", "Show to everyone" : "Für jeden sichtbar", "Show to logged in users only" : "Nur für angemeldete Benutzer sichtbar", "Hide" : "Ausblenden", "Download and enable" : "Herunterladen und aktivieren", "Enable untested app" : "Ungetestete App aktivieren", "The app will be downloaded from the App Store" : "Die App wird aus dem App-Store heruntergeladen", - "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Diese App ist als nicht-kompatibel mit Deiner Nextcloud-Version markiert. Wenn Du fortfährst, so kannst Du die App installieren. Bitte beachte, dass die App nicht wie erwartet funktionieren könnte.", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Diese App ist als nicht-kompatibel mit deiner Nextcloud-Version markiert. Wenn du fortfährst, so kannst du die App installieren. Bitte beachte, dass die App nicht wie erwartet funktionieren könnte.", "Never" : "Niemals", "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zur Aktualisierungsseite weitergeleitet.", "Error: This app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ", + "An error occurred during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", + "User already exists." : "Benutzer existiert bereits.", "Administrator documentation" : "Dokumentation für Administratoren", "Documentation" : "Dokumentation", "Forum" : "Forum", @@ -426,16 +431,16 @@ OC.L10N.register( "Save" : "Speichern", "Test and verify email settings" : "Testen und Überprüfen der E-Mail-Einstellungen", "Send email" : "E-Mail senden", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Performance Deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um Dir dabei zu helfen, führen wir einige automatische Prüfungen durch. Weitere Informationen kannst Du der verlinkten Dokumentation entnehmen.", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Performance deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um dir dabei zu helfen, führen wir einige automatische Prüfungen durch. Weitere Informationen kannst du der verlinkten Dokumentation entnehmen.", "All checks passed." : "Alle Überprüfungen bestanden.", - "There are some errors regarding your setup." : "Es gibt einige Fehler bei Deiner Systemkonfiguration.", - "There are some warnings regarding your setup." : "Es gibt einige Warnungen bei Deiner Systemkonfiguration.", + "There are some errors regarding your setup." : "Es gibt einige Fehler bei deiner Systemkonfiguration.", + "There are some warnings regarding your setup." : "Es gibt einige Warnungen bei deiner Systemkonfiguration.", "Checking for system and security issues." : "Prüfung auf System- und Sicherheitsprobleme.", "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfe noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrolliere das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.", - "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfe die Sicherheit Deiner Nextcloud über den <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Sicherheitsscanner der Nextcloud GmbH ↗</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfe die Sicherheit deiner Nextcloud über den <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Sicherheitsscanner der Nextcloud GmbH ↗</a>.", "Version" : "Version", "You need to enable the File sharing App." : "Du musst die File sharing App aktivieren.", - "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als Administrator kannst Du das Teilen-Verhalten feinabstimmen. Weitere Informationen findest Du in der Dokumentation.", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als Administrator kannst du das Teilen-Verhalten feinabstimmen. Weitere Informationen findest du in der Dokumentation.", "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", "Set default expiration date for shares" : "Lege das Standardablaufdatum für Freigaben fest", "Expire after" : "Ablauf nach", @@ -462,12 +467,12 @@ OC.L10N.register( "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite (Wird nur gezeigt wenn die Dateiliste nicht angezeigt wird.) ", "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", "Default share permissions" : "Standardberechtigungen für das Teilen", - "Reasons to use Nextcloud in your organization" : "Gründe für die Verwendung von Nextcloud in Deiner Organisation", + "Reasons to use Nextcloud in your organization" : "Gründe für die Verwendung von Nextcloud in deiner Organisation", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Entwickelt von der {communityopen}Nextcloud Community{linkclose}, der {githubopen}Quellcode{linkclose} ist lizensiert unter {licenseopen}AGPL{linkclose}-Lizenz.", "Like our Facebook page" : "Like uns auf unserer Facebook-Seite", "Follow us on Twitter" : "Folge uns auf Twitter", "Follow us on Mastodon" : " Folge uns auf Mastodon", - "Check out our blog" : "Sieh Dir unseren Blog an", + "Check out our blog" : "Sieh dir unseren Blog an", "Subscribe to our newsletter" : "Abonniere unseren Newsletter", "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Diese Community-Version von Nextcloud wird nicht unterstützt und sofortige Benachrichtigungen sind nicht verfügbar.", "Profile picture" : "Profilbild", @@ -482,29 +487,17 @@ OC.L10N.register( "You are a member of the following groups:" : "Du bist Mitglied folgender Gruppen:", "You are using <strong>%s</strong>" : "Du benutzt <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du verwendest <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Datenschutzstufe der Telefonnummer ändern", - "Your phone number" : "Deine Telefonnummer", - "Change privacy level of address" : "Datenschutzstufe der Adresse ändern", - "Your postal address" : "Deine Postadresse", - "Change privacy level of website" : "Datenschutzstufe der Webseite ändern", - "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Datenschutzstufe des Twitter-Profils ändern", - "Twitter handle @…" : "Twitter-Handle @…", "Locale" : "Gebietsschema", - "Current password" : "Aktuelles Passwort", - "New password" : "Neues Passwort", - "Change password" : "Passwort ändern", - "Use a second factor besides your password to increase security for your account." : "Verwende neben Deinem Passwort einen zweiten Faktor, um die Sicherheit für Dein Konto zu erhöhen.", - "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Wenn Du Anwendungen von Drittanbietern verwendest, um sich mit Nextcloud zu verbinden, stelle bitte sicher, dass Du für jede Anwendung ein Anwendungspasswort erstellest und einrichtest, bevor Du die Zwei-Faktor-Authentifizierung aktivierst.", + "Use a second factor besides your password to increase security for your account." : "Verwende neben deinem Passwort einen zweiten Faktor, um die Sicherheit für Dein Konto zu erhöhen.", + "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Wenn du Anwendungen von Drittanbietern verwendest, um dich mit Nextcloud zu verbinden, stelle bitte sicher, dass du für jede Anwendung ein Anwendungspasswort erstellest und einrichtest, bevor du die Zwei-Faktor-Authentifizierung aktivierst.", "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", "Migration started …" : "Migration begonnen…", "Couldn't remove app." : "Die App konnte nicht entfernt werden.", "Couldn't update app." : "Die App konnte nicht aktualisiert werden.", "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.", "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Es konnte nicht festgestellt werden, ob die TLS-Version von cURL veraltet ist oder nicht, da während der HTTPS-Anforderung an https://nextcloud.com ein Fehler aufgetreten ist. Bitte überprüfe die Nextcloud-Protokolldatei für weitere Einzelheiten.", - "You need to set your user email before being able to send test emails." : "Du musst Deine Benutzer-E-Mail-Adresse angeben, bevor Du Test-E-Mails versenden kannst.", - "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", + "You need to set your user email before being able to send test emails." : "Du musst deine Benutzer-E-Mail-Adresse angeben, bevor du Test-E-Mails versenden kannst.", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", "Set as primary mail" : "Als primäre E-Mail-Adresse festlegen", "Change privacy level of email" : "Datenschutzstufe der E-Mail-Adresse ändern", "All languages" : "Alle Sprachen", @@ -513,14 +506,14 @@ OC.L10N.register( "Please read carefully before activating server-side encryption: " : "Bitte sorgfältig lesen, bevor die serverseitige Verschlüsselung aktiviert wird:", "Enable encryption" : "Verschlüsselung aktivieren", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Die Kodierungsschlüssel der alten Verschlüsselung müssen zur neuen Version migriert werden (ownCloud <= 8.0). Bitte »Default Encryption Module« aktivieren und »occ encryption:migrate« aufrufen.", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", "Start migration" : "Migration beginnen", "Last job execution ran %s. Something seems wrong." : "Letzte Aufgaben-Ausführung lief %s. Etwas scheint falsch zu sein.", "Some jobs haven’t been executed since %s. Please consider increasing the execution frequency." : "Einige Aufträge wurden seit %s nicht mehr ausgeführt. Bitte erwäge, die Ausführungsfrequenz zu erhöhen.", "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Einige Aufträge wurden seit %s nicht mehr ausgeführt. Bitte erwäge die Umstellung auf System-Cron.", "Last job ran %s." : "Letzte Aufgabe ausgeführt %s", "Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!", - "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrundjobs richtig zu konfigurieren. \"Cron\" ist die empfohlene Einstellung. Weitere Informationen findest Du in der Dokumentation.", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrundjobs richtig zu konfigurieren. \"Cron\" ist die empfohlene Einstellung. Weitere Informationen findest du in der Dokumentation.", "Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus", "Recommended" : "Empfohlen", "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", @@ -528,7 +521,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung des Benutzernamens, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit). ", "Change privacy level of full name" : "Datenschutzstufe des vollständigen Namens ändern", "No display name set" : "Kein Anzeigename angegeben", - "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast überschritten. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in Deiner PHP-Konfiguration anzuwenden.", - "Change scope level of {accountProperty}" : "Geltungsbereich von {accountProperty} ändern" + "Change privacy level of phone number" : "Datenschutzstufe der Telefonnummer ändern", + "Address" : "Adresse", + "Change privacy level of address" : "Datenschutzstufe der Adresse ändern", + "Your postal address" : "Deine Postadresse", + "Change privacy level of website" : "Datenschutzstufe der Webseite ändern", + "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Datenschutzstufe des Twitter-Profils ändern", + "Twitter handle @…" : "Twitter-Handle @…", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast überschritten. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", + "Unable to update biography" : "Biografie konnte nicht aktualisiert werden", + "Unable to update full name" : "Der vollständige Name konnte nicht aktualisiert werden", + "No full name set" : "Kein vollständiger Name festgelegt", + "Unable to update headline" : "Überschrift konnte nicht aktualisiert werden", + "Unable to update organisation" : "Organisation konnte nicht aktualisiert werden", + "Unable to update role" : "Rolle konnte nicht aktualisiert werden", + "Change scope level of {accountProperty}" : "Geltungsbereich von {accountProperty} ändern", + "Unable to update federation scope of the primary {accountProperty}" : "Der Federation-Bereich des primären {accountProperty} konnte nicht aktualisiert werden", + "Unable to update federation scope of additional {accountProperty}" : "Der Federation-Bereich des zusätzlichen {accountProperty} konnte nicht aktualisiert werden" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json index dceb923ccef..35ed8c2b4c6 100644 --- a/apps/settings/l10n/de.json +++ b/apps/settings/l10n/de.json @@ -22,23 +22,23 @@ "Groups" : "Gruppen", "Group list is empty" : "Gruppenliste ist leer", "Unable to retrieve the group list" : "Gruppenliste konnte nicht abgerufen werden", - "{actor} added you to group {group}" : "{actor} hat Dich zur Gruppe {group} hinzugefügt", + "{actor} added you to group {group}" : "{actor} hat dich zur Gruppe {group} hinzugefügt", "You added {user} to group {group}" : "Du hast {user} zur Gruppe {group} hinzugefügt", "{actor} added {user} to group {group}" : "{actor} hat {user} zur Gruppe {group} hinzugefügt", - "An administrator added you to group {group}" : "Ein Administrator hat Dich zur Gruppe {group} hinzugefügt", + "An administrator added you to group {group}" : "Ein Administrator hat dich zur Gruppe {group} hinzugefügt", "An administrator added {user} to group {group}" : "Ein Administrator hat {user} zur Gruppe {group} hinzugefügt", - "{actor} removed you from group {group}" : "{actor} hat Dich von der Gruppe {group} entfernt", + "{actor} removed you from group {group}" : "{actor} hat dich von der Gruppe {group} entfernt", "You removed {user} from group {group}" : "Du hast {user} von der Gruppe {group} entfernt", "{actor} removed {user} from group {group}" : "{actor} hat {user} von der Gruppe {group} entfernt", - "An administrator removed you from group {group}" : "Ein Administrator hat Dich von der Gruppe {group} entfernt", + "An administrator removed you from group {group}" : "Ein Administrator hat dich von der Gruppe {group} entfernt", "An administrator removed {user} from group {group}" : "Ein Administrator hat {user} von der Gruppe {group} entfernt", "Your <strong>group memberships</strong> were modified" : "Deine <strong>Gruppenmitgliedschaft</strong> wurde geändert", - "{actor} changed your password" : "{actor} hat Dein Passwort geändert", - "You changed your password" : "Du hast Dein Passwort geändert", + "{actor} changed your password" : "{actor} hat dein Passwort geändert", + "You changed your password" : "Du hast dein Passwort geändert", "Your password was reset by an administrator" : "Dein Passwort wurde vom Administrator zurückgesetzt", "Your password was reset" : "Dein Passwort wurde zurückgesetzt", - "{actor} changed your email address" : "{actor} hat Deine E-Mail-Adresse geändert", - "You changed your email address" : "Du hast Deine E-Mail-Adresse geändert", + "{actor} changed your email address" : "{actor} hat deine E-Mail-Adresse geändert", + "You changed your email address" : "Du hast deine E-Mail-Adresse geändert", "Your email address was changed by an administrator" : "Deine E-Mail-Adresse wurde von einem Administrator geändert", "You created app password \"{token}\"" : "Du hast das App-Passwort \"{token}\" erstellt", "An administrator created app password \"{token}\"" : "Ein vom Administrator erstelltes App-Passwort \"{token}\"", @@ -47,11 +47,11 @@ "You granted filesystem access to app password \"{token}\"" : "Du hast Dateisystemzugriff für App-Passwort \"{token}\" erlaubt", "You revoked filesystem access from app password \"{token}\"" : "Du hast Dateisystemzugriff für App-Passwort \"{token}\" widerrufen", "Security" : "Sicherheit", - "You successfully logged in using two-factor authentication (%1$s)" : "Du hast Dich erfolgreich mittels Zwei-Faktor-Authentifizierung angemeldet (%1$s)", + "You successfully logged in using two-factor authentication (%1$s)" : "Du hast dich erfolgreich mittels Zwei-Faktor-Authentifizierung angemeldet (%1$s)", "A login attempt using two-factor authentication failed (%1$s)" : "Ein Anmeldeversuch mittels Zwei-Faktor-Authentifizierung schlug fehl (%1$s)", "Remote wipe was started on %1$s" : "Fernlöschung wurde am %1$s gestartet", "Remote wipe has finished on %1$s" : "Fernlöschung wurde am %1$s abgeschlossen", - "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder Deine <strong>E-Mail-Adresse</strong> wurde geändert", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder deine <strong>E-Mail-Adresse</strong> wurde geändert", "Could not remove app." : "App konnte nicht entfernt werden", "Could not update app." : "App konnte nicht aktualisiert werden", "Wrong password" : "Falsches Passwort", @@ -65,20 +65,22 @@ "Backend does not support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert", "installing and updating apps via the App Store or Federated Cloud Sharing" : "Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated-Cloud-Sharing", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", - "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisiere Dein Betriebssystem, da ansonsten Funktionen, wie z. B. %3$s, nicht zuverlässig funktionieren.", - "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Das PHP-OPcache-Modul ist nicht geladen. Für eine bessere Leistung empfiehlt es sich, das Modul in Deiner PHP-Installation zu laden.", - "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache ist deaktiviert. Für eine bessere Leistung wird empfohlen, <code>opcache.enable=1</code> in Deiner PHP-Konfiguration anzuwenden.", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL verwendet eine veraltete %1$s Version (%2$s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z. B. %3$s, nicht zuverlässig funktionieren.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Das PHP-OPcache-Modul ist nicht geladen. Für eine bessere Leistung empfiehlt es sich, das Modul in deiner PHP-Installation zu laden.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache ist deaktiviert. Für eine bessere Leistung wird empfohlen, <code>opcache.enable=1</code> in deiner PHP-Konfiguration anzuwenden.", "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache ist so konfiguriert, dass Codekommentare entfernt werden. Wenn OPcache aktiviert ist, muss <code>opcache.save_comments=1</code> gesetzt werden, damit Nextcloud funktioniert.", - "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast erreicht. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in Deiner PHP-Konfiguration anzuwenden.", - "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Puffer ist fast voll. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.memory_consumption</code> in Deiner PHP-Konfiguration mit einem höheren Wert als <code>%s</code> anzuwenden.", - "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Zwischenspeicher für interne Zeichenfolgen ist fast voll. Um sicherzustellen, dass sich wiederholende Zeichenfolgen effektiv zwischengespeichert werden können, wird empfohlen, <code>opcache.interned_strings_buffer</code> mit einem Wert größer als <code>%s</code> in Deiner PHP-Konfiguration anzuwenden.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud darf die OPcache-API nicht verwenden. Wenn OPcache aktiviert ist, wird dringend empfohlen, alle Nextcloud-Verzeichnisse mit <code>opcache.restrict_api</code> einzuschließen oder diese Einstellung zu deaktivieren, um OPcache-API-Einschränkungen zu deaktivieren und Fehler während Nextcloud-Core- oder App-Aktualisierungen zu vermeiden.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud darf die OPcache-API nicht verwenden. Es wird dringend empfohlen, alle Nextcloud-Verzeichnisse mit <code>opcache.restrict_api</code> einzuschließen oder diese Einstellung zu deaktivieren, um OPcache-API-Einschränkungen zu deaktivieren und Fehler während Nextcloud-Core- oder App-Aktualisierungen zu vermeiden.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast erreicht. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Puffer ist fast voll. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.memory_consumption</code> in deiner PHP-Konfiguration mit einem höheren Wert als <code>%s</code> anzuwenden.", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "Der OPcache-Zwischenspeicher für interne Zeichenfolgen ist fast voll. Um sicherzustellen, dass sich wiederholende Zeichenfolgen effektiv zwischengespeichert werden können, wird empfohlen, <code>opcache.interned_strings_buffer</code> mit einem Wert größer als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", "Invalid SMTP password." : "Ungültiges SMTP-Passwort", "Email setting test" : "Test der E-Mail-Einstellungen", "Well done, %s!" : "Gut gemacht, %s!", - "If you received this email, the email configuration seems to be correct." : "Wenn Du diese E-Mail empfangen hast, sind die E-Mail-Einstellungen korrekt.", - "Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfe Dein E-Mail-Server-Protokoll", - "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe Deine Einstellungen. (Fehler: %s)", - "You need to set your user email before being able to send test emails. Go to %s for that." : "Du musst Deine Benutzer-E-Mail-Adresse festlegen, bevor Du Test-E-Mails senden kannst. Gehe dazu zu %s.", + "If you received this email, the email configuration seems to be correct." : "Wenn du diese E-Mail empfangen hast, sind die E-Mail-Einstellungen korrekt.", + "Email could not be sent. Check your mail server log" : "E-Mail konnte nicht versandt werden. Prüfe dein E-Mail-Server-Protokoll", + "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe deine Einstellungen. (Fehler: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "Du musst deine Benutzer-E-Mail-Adresse festlegen, bevor du Test-E-Mails senden kannst. Gehe dazu zu %s.", "Invalid user" : "Ungültiger Benutzer", "Invalid mail address" : "Ungültige E-Mail-Adresse", "Settings saved" : "Einstellungen gespeichert", @@ -87,15 +89,15 @@ "Unable to set invalid phone number" : "Ungültige Telefonnummer konnte nicht festgelegt werden", "Unable to set invalid website" : "Ungültige Webseite konnte nicht eingestellt werden", "Some account data was invalid" : "Einige Kontodaten waren ungültig", - "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Um Dein Twitter-Konto zu überprüfen, veröffentliche bitte den folgenden Tweet auf Twitter (Bitte stelle sicher, dass der Tweet keinen Zeilenumbruch enthält):", - "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Um Deine Webseite zu überprüfen, speichere bitte den folgenden Inhalt im Web-Wurzelverzeichnist in der Datei '.well-known/CloudIdVerificationCode.txt' (bitte stelle sicher, das sich der gesamte Text in einer Zeile befindet):", - "%1$s changed your password on %2$s." : "%1$s hat Dein Passwort auf %2$s geändert.", + "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Um dein Twitter-Konto zu überprüfen, veröffentliche bitte den folgenden Tweet auf Twitter (Bitte stelle sicher, dass der Tweet keinen Zeilenumbruch enthält):", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Um deine Webseite zu überprüfen, speichere bitte den folgenden Inhalt im Web-Wurzelverzeichnist in der Datei '.well-known/CloudIdVerificationCode.txt' (bitte stelle sicher, das sich der gesamte Text in einer Zeile befindet):", + "%1$s changed your password on %2$s." : "%1$s hat dein Passwort auf %2$s geändert.", "Your password on %s was changed." : "Dein Passwort auf %s wurde geändert.", "Your password on %s was reset by an administrator." : "Dein Passwort auf %s wurde vom Administrator zurückgesetzt.", "Your password on %s was reset." : "Dein Passwort auf %s wurde zurückgesetzt", "Password for %1$s changed on %2$s" : "Passwort für %1$s geändert auf %2$s", "Password changed for %s" : "Passwort geändert für %s", - "If you did not request this, please contact an administrator." : "Wenn Du das nicht angefordert haben solltest, wende Dich bitte an den Administrator.", + "If you did not request this, please contact an administrator." : "Wenn du das nicht angefordert haben solltest, wende dich bitte an den Administrator.", "Your email address on %s was changed." : "Deine E-Mail-Adresse auf %s wurde geändert.", "Your email address on %s was changed by an administrator." : "Deine E-Mail-Adresse auf %s wurde von einem Administrator geändert.", "Email address for %1$s changed on %2$s" : "E-Mail-Adresse für %1$s geändert auf %2$s", @@ -104,9 +106,9 @@ "Your %s account was created" : "Dein %s-Konto wurde erstellt", "Welcome aboard" : "Willkommen an Bord", "Welcome aboard %s" : "Willkommen an Bord %s", - "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu Deinem %s-Konto. Du kannst Deine Daten hinzufügen, schützen und teilen.", + "Welcome to your %s account, you can add, protect, and share your data." : "Willkommen zu deinem %s-Konto. Du kannst deine Daten hinzufügen, schützen und teilen.", "Your username is: %s" : "Dein Benutzername lautet: %s", - "Set your password" : "Setze Dein Passwort", + "Set your password" : "Setze dein Passwort", "Go to %s" : "%s aufrufen", "Install Client" : "Installiere den Client", "Logged in user must be a subadmin" : "Der angemeldete Benutzer muss ein Administrator sein", @@ -133,14 +135,14 @@ "Verifying" : "Überprüfe", "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Eine Hintergrundaufgabe, die nach vom Benutzer importierten SSL-Zertifikaten sucht, läuft noch. Bitte später erneut versuchen.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Es sind einige vom Benutzer importierte SSL-Zertifikate vorhanden, die von Nextcloud 21 nicht mehr verwendet werden. Du kannst über den Befehl \"occ security:certificates:import\" in der Befehlszeile importiert werden. Ihre Pfade innerhalb des Datenverzeichnisses werden unten angezeigt.", - "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Benutzern oder -Gruppen gefunden. Bitte überprüfe Deine „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwende „occ ldap:update-uuid“, um sie zu aktualisieren.", + "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Benutzern oder -Gruppen gefunden. Bitte überprüfe deine „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwende „occ ldap:update-uuid“, um sie zu aktualisieren.", "The old server-side-encryption format is enabled. We recommend disabling this." : "Das alte serverseitige Verschlüsselungsformat ist aktiviert. Wir empfehlen, es zu deaktivieren.", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "MariaDB Version \"%s\" wird verwendet. Nextcloud 21 und neuer unterstützen diese Version nicht und benötigen MariaDB 10.2 oder neuer.", "Profile information" : "Profilinformation", - "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profilbild, vollständiger Name, E-Mail-Adresse, Telefonnummer, Adresse, Webseite, Twitter, Organisation, Rolle, Überschrift, Biografie und ob Dein Profil aktiviert ist", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profilbild, vollständiger Name, E-Mail-Adresse, Telefonnummer, Adresse, Webseite, Twitter, Organisation, Rolle, Überschrift, Biografie und ob dein Profil aktiviert ist", "Nextcloud settings" : "Nextcloud-Einstellungen", "Administration privileges" : "Administratorrechte", - "Here you can decide which group can access certain sections of the administration settings." : "Hier kannst Du festlegen, welche Gruppe auf bestimmte Bereiche der Administrationseinstellungen zugreifen kann.", + "Here you can decide which group can access certain sections of the administration settings." : "Hier kannst du festlegen, welche Gruppe auf bestimmte Bereiche der Administrationseinstellungen zugreifen kann.", "None" : "Keine", "Unable to modify setting" : "Einstellung konnte nicht geändert werden", "Two-Factor Authentication" : "Zwei-Faktor-Authentifizierung", @@ -169,14 +171,14 @@ "User documentation" : "Dokumentation für Benutzer", "Admin documentation" : "Dokumentation für Administratoren", "Developer documentation" : "Dokumentation für Entwickler", - "This app is supported via your current Nextcloud subscription." : "Diese App wird von Deinem aktuellen Nextcloud-Abonnement unterstützt.", + "This app is supported via your current Nextcloud subscription." : "Diese App wird von deinem aktuellen Nextcloud-Abonnement unterstützt.", "Supported" : "Unterstützt", "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Vorgestellte Apps werden von und innerhalb der Nextcloud-Community entwickelt. Sie stellen zentrale Funktionen bereit und sind für den produktiven Einsatz geeignet.", "Featured" : "Vorgestellt", "Update to {update}" : "Aktualisieren auf {update}", "All apps are up-to-date." : "Alle Apps sind aktuell.", "Results from other categories" : "Ergebnisse aus anderen Kategorien", - "No apps found for your version" : "Es wurden keine Apps für Deine Version gefunden", + "No apps found for your version" : "Es wurden keine Apps für deine Version gefunden", "Disable all" : "Alle deaktivieren", "Enable all" : "Alle aktivieren", "_%n app has an update available_::_%n apps have an update available_" : ["Für %n App ist eine Aktualisierung verfügbar","Für %n Apps sind Aktualisierungen verfügbar"], @@ -187,7 +189,7 @@ "Rename" : "Umbenennen", "Revoke" : "Widerrufen", "Wipe device" : "Gerät löschen", - "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -205,8 +207,8 @@ "Device" : "Gerät", "Last activity" : "Letzte Aktivität", "Devices & sessions" : "Geräte & Sitzungen", - "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in Deinem Konto angemeldete Web-, Desktop- und Mobil-Clients:", - "Do you really want to wipe your data from this device?" : "Möchtest Du wirklich alle Daten von diesem Gerät löschen?", + "Web, desktop and mobile clients currently logged in to your account." : "Aktuell in deinem Konto angemeldete Web-, Desktop- und Mobil-Clients:", + "Do you really want to wipe your data from this device?" : "Möchtest du wirklich alle Daten von diesem Gerät löschen?", "Confirm wipe" : "Löschen bestätigen", "Error while creating device token" : "Fehler beim Erstellen des Geräte-Tokens", "Error while updating device token scope" : "Fehler bei der Aktualisierung des Geräte-Token-Scope", @@ -215,7 +217,7 @@ "Error while wiping the device with the token" : "Fehler während des Löschens des Geräts mit dem Token", "App name" : "App-Name", "Create new app password" : "Neues App-Passwort erstellen", - "Use the credentials below to configure your app or device." : "Nutze die unten angebenen Anmeldeinformationen, um Deine App oder Dein Gerät zu konfigurieren.", + "Use the credentials below to configure your app or device." : "Nutze die unten angebenen Anmeldeinformationen, um deine App oder dein Gerät zu konfigurieren.", "For security reasons this password will only be shown once." : "Aus Sicherheitsgründen wird das Passwort nur einmal angezeigt.", "Username" : "Benutzername", "Password" : "Passwort", @@ -247,21 +249,21 @@ "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Wird die Verschlüsselung einmal aktiviert, so werden alle ab diesem Zeitpunkt hochgeladene Dateien verschlüsselt. Sie kann nur wieder deaktiviert werden, wenn das Verschlüsselungsmodul dies unterstützt und alle Voraussetzungen (wie das Setzen eines Wiederherstellungsschlüssels) im Vorhinein erfüllt wurden.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Verschlüsselung alleine garantiert nicht die Systemsicherheit. Bitte lese in der Dokumentation nach, wie die Verschlüsselungs-app funktioniert und welche Anwendungsfälle unterstützt werden.", "Be aware that encryption always increases the file size." : "Bedenke, dass durch die Verschlüsselung die Dateigröße zunimmt. ", - "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungen von Deinen Daten zu erstellen. Falls Du die Verschlüsselung nutzt, sollte auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit Deinen Daten durchgeführt werden.", - "This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Möchtest Du die Verschlüsselung wirklich aktivieren?", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Es ist immer gut, regelmäßig Sicherungen von deinen Daten zu erstellen. Falls du die Verschlüsselung nutzt, sollte auch eine Sicherung der Verschlüsselungsschlüssel zusammen mit deinen Daten durchgeführt werden.", + "This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Möchtest du die Verschlüsselung wirklich aktivieren?", "No encryption module loaded, please enable an encryption module in the app menu." : "Es wurde kein Verschlüsselungs-Modul geladen, bitte ein Verschlüsselungs-Modul im Anwendungs-Menü aktivieren.", "Select default encryption module:" : "Standard-Verschlüsselungs-Modul auswählen:", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Du musst Deine Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) auf die neue migrieren. Bitte aktiviere das \"Standardverschlüsselungsmodul\" und führe {command} aus.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Du musst deine Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) auf die neue migrieren. Bitte aktiviere das \"Standardverschlüsselungsmodul\" und führe {command} aus.", "Unable to update server side encryption config" : "Die Serverseitige Verschlüsselungskonfiguration kann nicht aktualisiert werden.", "Rename group" : "Gruppe umbenennen", "Remove group" : "Gruppe entfernen", "You are about to remove the group {group}. The users will NOT be deleted." : "Du bist dabei die Gruppe {group} zu löschen. Die Benutzer werden NICHT gelöscht.", "Please confirm the group removal " : "Bitte die Löschung der Gruppe bestätigen", + "Current password" : "Aktuelles Passwort", + "New password" : "Neues Passwort", + "Change password" : "Passwort ändern", "Your biography" : "Deine Biografie", - "Unable to update biography" : "Biografie konnte nicht aktualisiert werden", "Your full name" : "Dein vollständiger Name", - "Unable to update full name" : "Der vollständige Name konnte nicht aktualisiert werden", - "No full name set" : "Kein vollständiger Name festgelegt", "Email options" : "E-Mail-Optionen", "Primary email for password reset and notifications" : "Primäre E-Mail-Adresse für Benachrichtigungen und zum Zurücksetzen des Passworts", "Remove primary email" : "Primäre E-Mail-Adresse entfernen", @@ -279,24 +281,25 @@ "No email address set" : "Keine E-Mail-Adresse angegeben", "Additional emails" : "Zusätzliche E-Mail-Adressen ", "Your headline" : "Deine Überschrift", - "Unable to update headline" : "Überschrift konnte nicht aktualisiert werden", "Language" : "Sprache", "Help translate" : "Hilf bei der Übersetzung mit", "Unable to update language" : "Sprache konnte nicht aktualisiert werden", "No language set" : "Keine Sprache eingestellt.", + "Your location" : "Dein Ort", "Your organisation" : "Deine Organisation", - "Unable to update organisation" : "Organisation konnte nicht aktualisiert werden", + "Your phone number" : "Deine Telefonnummer", "Edit your Profile visibility" : "Sichtbarkeit des Profils anpassen", "Enable Profile" : "Profil aktivieren", "Unable to update profile enabled state" : "Der Status für aktiviertes Profil konnte nicht aktualisiert werden", - "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Die restriktivere Einstellung von Sichtbarkeit oder Bereich wird in Deinem Profil berücksichtigt. Wenn beispielsweise die Sichtbarkeit auf \"Für jeden sichtbar\" und der Bereich auf \"Privat\" festgelegt ist, wird \"Privat\" respektiert.", + "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Die restriktivere Einstellung von Sichtbarkeit oder Bereich wird in deinem Profil berücksichtigt. Wenn beispielsweise die Sichtbarkeit auf \"Für jeden sichtbar\" und der Bereich auf \"Privat\" festgelegt ist, wird \"Privat\" respektiert.", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Sichtbarkeit von {displayId} kann nicht aktualisiert werden", "Your role" : "Deine Funktion", - "Unable to update role" : "Rolle konnte nicht aktualisiert werden", - "Change scope level of {accountProperty}, current scope is {scope}" : "Ändern des Geltungsbereich von {accountProperty}, aktueller Bereich ist {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Der Federation-Bereich des primären {accountProperty} konnte nicht aktualisiert werden", - "Unable to update federation scope of additional {accountProperty}" : "Der Federation-Bereich des zusätzlichen {accountProperty} konnte nicht aktualisiert werden", + "Your Twitter handle" : "Dein Twitter-Handle", + "Your website" : "Deine Internetseite", + "No {property} set" : "Keine {property} eingestellt", + "Unable to update {property}" : "{property} konnte nicht aktualisiert werden.", + "Change scope level of {property}, current scope is {scope}" : "Ändern des Geltungsbereich von {property}, aktueller Bereich ist {scope}", "Add additional email" : "Zusätzliche E-Mail-Adresse hinzufügen", "Add" : "Hinzufügen", "You do not have permissions to see the details of this user" : "Du hast keine Berechtigung, um auf die Details dieses Benutzers zu sehen", @@ -339,16 +342,16 @@ "Password change is disabled because the master key is disabled" : "Das Ändern des Passwortes ist deaktiviert, da der Master-Schlüssel deaktiviert ist", "Passwordless authentication requires a secure connection." : "Die Anmeldung ohne Passwort erfordert eine sichere Verbindung.", "Add WebAuthn device" : "WebAuthn-Gerät hinzufügen", - "Please authorize your WebAuthn device." : "Bitte autorisiere Dein WebAuthn-Gerät.", + "Please authorize your WebAuthn device." : "Bitte autorisiere dein WebAuthn-Gerät.", "Name your device" : "Gerät benennen", - "Adding your device …" : "Füge Dein Gerät hinzu…", + "Adding your device …" : "Füge dein Gerät hinzu…", "Server error while trying to add WebAuthn device" : "Server-Fehler beim Versuch ein WebAuthn-Gerät hinzuzufügen", "Server error while trying to complete WebAuthn device registration" : "Server-Fehler beim Versuch die WebAuthn-Geräte-Registrierung abzuschließen", "Unnamed device" : "Unbenanntes Gerät", "Passwordless Authentication" : "Authentifizierung ohne Passwort", - "Set up your account for passwordless authentication following the FIDO2 standard." : "Richte Dein Konto für die Authentifizierung ohne Passwort nach dem FIDO2-Standard ein.", + "Set up your account for passwordless authentication following the FIDO2 standard." : "Richte dein Konto für die Authentifizierung ohne Passwort nach dem FIDO2-Standard ein.", "No devices configured." : "Keine Geräte eingerichtet.", - "The following devices are configured for your account:" : "Die folgenden Geräte sind für Dein Konto eingerichtet:", + "The following devices are configured for your account:" : "Die folgenden Geräte sind für dein Konto eingerichtet:", "Your browser does not support WebAuthn." : "Dein Browser unterstützt kein WebAuthn.", "Your apps" : "Deine Apps", "Active apps" : "Aktive Apps", @@ -375,7 +378,7 @@ "Not saved" : "Nicht gespeichert", "Sending…" : "Senden…", "Email sent" : "E-Mail gesendet", - "Address" : "Adresse", + "Location" : "Ort", "Avatar" : "Avatar", "About" : "Über", "Full name" : "Vollständiger Name", @@ -386,20 +389,22 @@ "Role" : "Funktion", "Twitter" : "Twitter", "Website" : "Webseite", - "Profile visibility" : "Sichtbarkeit Deines Profils", + "Profile visibility" : "Sichtbarkeit deines Profils", "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Nicht verfügbar, da diese Eigenschaft für Kernfunktionen wie Dateifreigabe und Kalendereinladungen erforderlich ist.", - "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Nicht verfügbar, da die Veröffentlichung benutzerspezifischer Daten auf dem Lookup-Server nicht zulässig ist. Wende Dich bei Fragen an Deinen Systemadministrator", + "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Nicht verfügbar, da die Veröffentlichung benutzerspezifischer Daten auf dem Lookup-Server nicht zulässig ist. Wende dich bei Fragen an deinen Systemadministrator", "Show to everyone" : "Für jeden sichtbar", "Show to logged in users only" : "Nur für angemeldete Benutzer sichtbar", "Hide" : "Ausblenden", "Download and enable" : "Herunterladen und aktivieren", "Enable untested app" : "Ungetestete App aktivieren", "The app will be downloaded from the App Store" : "Die App wird aus dem App-Store heruntergeladen", - "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Diese App ist als nicht-kompatibel mit Deiner Nextcloud-Version markiert. Wenn Du fortfährst, so kannst Du die App installieren. Bitte beachte, dass die App nicht wie erwartet funktionieren könnte.", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Diese App ist als nicht-kompatibel mit deiner Nextcloud-Version markiert. Wenn du fortfährst, so kannst du die App installieren. Bitte beachte, dass die App nicht wie erwartet funktionieren könnte.", "Never" : "Niemals", "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zur Aktualisierungsseite weitergeleitet.", "Error: This app cannot be enabled because it makes the server unstable" : "Fehler: Diese App kann nicht aktiviert werden, da sie den Server instabil macht. ", + "An error occurred during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", + "User already exists." : "Benutzer existiert bereits.", "Administrator documentation" : "Dokumentation für Administratoren", "Documentation" : "Dokumentation", "Forum" : "Forum", @@ -424,16 +429,16 @@ "Save" : "Speichern", "Test and verify email settings" : "Testen und Überprüfen der E-Mail-Einstellungen", "Send email" : "E-Mail senden", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Performance Deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um Dir dabei zu helfen, führen wir einige automatische Prüfungen durch. Weitere Informationen kannst Du der verlinkten Dokumentation entnehmen.", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Für die Sicherheit und Performance deiner Instanz ist es wichtig, dass alles richtig konfiguriert ist. Um dir dabei zu helfen, führen wir einige automatische Prüfungen durch. Weitere Informationen kannst du der verlinkten Dokumentation entnehmen.", "All checks passed." : "Alle Überprüfungen bestanden.", - "There are some errors regarding your setup." : "Es gibt einige Fehler bei Deiner Systemkonfiguration.", - "There are some warnings regarding your setup." : "Es gibt einige Warnungen bei Deiner Systemkonfiguration.", + "There are some errors regarding your setup." : "Es gibt einige Fehler bei deiner Systemkonfiguration.", + "There are some warnings regarding your setup." : "Es gibt einige Warnungen bei deiner Systemkonfiguration.", "Checking for system and security issues." : "Prüfung auf System- und Sicherheitsprobleme.", "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Bitte überprüfe noch einmal die <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">Installationsanleitungen ↗</a> und kontrolliere das <a href=\"%2$s\">Protokoll</a> auf mögliche Fehler oder Warnungen.", - "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfe die Sicherheit Deiner Nextcloud über den <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Sicherheitsscanner der Nextcloud GmbH ↗</a>.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Überprüfe die Sicherheit deiner Nextcloud über den <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">Sicherheitsscanner der Nextcloud GmbH ↗</a>.", "Version" : "Version", "You need to enable the File sharing App." : "Du musst die File sharing App aktivieren.", - "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als Administrator kannst Du das Teilen-Verhalten feinabstimmen. Weitere Informationen findest Du in der Dokumentation.", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Als Administrator kannst du das Teilen-Verhalten feinabstimmen. Weitere Informationen findest du in der Dokumentation.", "Allow apps to use the Share API" : "Apps die Benutzung der Share-API erlauben", "Set default expiration date for shares" : "Lege das Standardablaufdatum für Freigaben fest", "Expire after" : "Ablauf nach", @@ -460,12 +465,12 @@ "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Zeige Haftungsausschluss auf der öffentlichen Upload-Seite (Wird nur gezeigt wenn die Dateiliste nicht angezeigt wird.) ", "This text will be shown on the public link upload page when the file list is hidden." : "Dieser Text wird auf der öffentlichen Upload-Seite angezeigt wenn die Dateiliste nicht angezeigt wird.", "Default share permissions" : "Standardberechtigungen für das Teilen", - "Reasons to use Nextcloud in your organization" : "Gründe für die Verwendung von Nextcloud in Deiner Organisation", + "Reasons to use Nextcloud in your organization" : "Gründe für die Verwendung von Nextcloud in deiner Organisation", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Entwickelt von der {communityopen}Nextcloud Community{linkclose}, der {githubopen}Quellcode{linkclose} ist lizensiert unter {licenseopen}AGPL{linkclose}-Lizenz.", "Like our Facebook page" : "Like uns auf unserer Facebook-Seite", "Follow us on Twitter" : "Folge uns auf Twitter", "Follow us on Mastodon" : " Folge uns auf Mastodon", - "Check out our blog" : "Sieh Dir unseren Blog an", + "Check out our blog" : "Sieh dir unseren Blog an", "Subscribe to our newsletter" : "Abonniere unseren Newsletter", "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Diese Community-Version von Nextcloud wird nicht unterstützt und sofortige Benachrichtigungen sind nicht verfügbar.", "Profile picture" : "Profilbild", @@ -480,29 +485,17 @@ "You are a member of the following groups:" : "Du bist Mitglied folgender Gruppen:", "You are using <strong>%s</strong>" : "Du benutzt <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du verwendest <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Datenschutzstufe der Telefonnummer ändern", - "Your phone number" : "Deine Telefonnummer", - "Change privacy level of address" : "Datenschutzstufe der Adresse ändern", - "Your postal address" : "Deine Postadresse", - "Change privacy level of website" : "Datenschutzstufe der Webseite ändern", - "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Datenschutzstufe des Twitter-Profils ändern", - "Twitter handle @…" : "Twitter-Handle @…", "Locale" : "Gebietsschema", - "Current password" : "Aktuelles Passwort", - "New password" : "Neues Passwort", - "Change password" : "Passwort ändern", - "Use a second factor besides your password to increase security for your account." : "Verwende neben Deinem Passwort einen zweiten Faktor, um die Sicherheit für Dein Konto zu erhöhen.", - "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Wenn Du Anwendungen von Drittanbietern verwendest, um sich mit Nextcloud zu verbinden, stelle bitte sicher, dass Du für jede Anwendung ein Anwendungspasswort erstellest und einrichtest, bevor Du die Zwei-Faktor-Authentifizierung aktivierst.", + "Use a second factor besides your password to increase security for your account." : "Verwende neben deinem Passwort einen zweiten Faktor, um die Sicherheit für Dein Konto zu erhöhen.", + "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Wenn du Anwendungen von Drittanbietern verwendest, um dich mit Nextcloud zu verbinden, stelle bitte sicher, dass du für jede Anwendung ein Anwendungspasswort erstellest und einrichtest, bevor du die Zwei-Faktor-Authentifizierung aktivierst.", "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", "Migration started …" : "Migration begonnen…", "Couldn't remove app." : "Die App konnte nicht entfernt werden.", "Couldn't update app." : "Die App konnte nicht aktualisiert werden.", "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.", "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Es konnte nicht festgestellt werden, ob die TLS-Version von cURL veraltet ist oder nicht, da während der HTTPS-Anforderung an https://nextcloud.com ein Fehler aufgetreten ist. Bitte überprüfe die Nextcloud-Protokolldatei für weitere Einzelheiten.", - "You need to set your user email before being able to send test emails." : "Du musst Deine Benutzer-E-Mail-Adresse angeben, bevor Du Test-E-Mails versenden kannst.", - "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von Deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", + "You need to set your user email before being able to send test emails." : "Du musst deine Benutzer-E-Mail-Adresse angeben, bevor du Test-E-Mails versenden kannst.", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Zurückziehen dieses Tokens könnte das Löschen von deinem Gerät verhindern, wenn die Löschung noch nicht gestartet wurde.", "Set as primary mail" : "Als primäre E-Mail-Adresse festlegen", "Change privacy level of email" : "Datenschutzstufe der E-Mail-Adresse ändern", "All languages" : "Alle Sprachen", @@ -511,14 +504,14 @@ "Please read carefully before activating server-side encryption: " : "Bitte sorgfältig lesen, bevor die serverseitige Verschlüsselung aktiviert wird:", "Enable encryption" : "Verschlüsselung aktivieren", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Die Kodierungsschlüssel der alten Verschlüsselung müssen zur neuen Version migriert werden (ownCloud <= 8.0). Bitte »Default Encryption Module« aktivieren und »occ encryption:migrate« aufrufen.", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst Deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Du musst deinen Verschlüsselungsschlüssel von der alten Verschlüsselung (ownCloud <= 8.0) zur Neuen migrieren.", "Start migration" : "Migration beginnen", "Last job execution ran %s. Something seems wrong." : "Letzte Aufgaben-Ausführung lief %s. Etwas scheint falsch zu sein.", "Some jobs haven’t been executed since %s. Please consider increasing the execution frequency." : "Einige Aufträge wurden seit %s nicht mehr ausgeführt. Bitte erwäge, die Ausführungsfrequenz zu erhöhen.", "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Einige Aufträge wurden seit %s nicht mehr ausgeführt. Bitte erwäge die Umstellung auf System-Cron.", "Last job ran %s." : "Letzte Aufgabe ausgeführt %s", "Background job didn’t run yet!" : "Hintergrund-Aufgabe wurde bislang nicht ausgeführt!", - "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrundjobs richtig zu konfigurieren. \"Cron\" ist die empfohlene Einstellung. Weitere Informationen findest Du in der Dokumentation.", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Damit der Server ordnungsgemäß funktioniert, ist es wichtig, Hintergrundjobs richtig zu konfigurieren. \"Cron\" ist die empfohlene Einstellung. Weitere Informationen findest du in der Dokumentation.", "Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus", "Recommended" : "Empfohlen", "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", @@ -526,7 +519,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung des Benutzernamens, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit). ", "Change privacy level of full name" : "Datenschutzstufe des vollständigen Namens ändern", "No display name set" : "Kein Anzeigename angegeben", - "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast überschritten. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in Deiner PHP-Konfiguration anzuwenden.", - "Change scope level of {accountProperty}" : "Geltungsbereich von {accountProperty} ändern" + "Change privacy level of phone number" : "Datenschutzstufe der Telefonnummer ändern", + "Address" : "Adresse", + "Change privacy level of address" : "Datenschutzstufe der Adresse ändern", + "Your postal address" : "Deine Postadresse", + "Change privacy level of website" : "Datenschutzstufe der Webseite ändern", + "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Datenschutzstufe des Twitter-Profils ändern", + "Twitter handle @…" : "Twitter-Handle @…", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast überschritten. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> in deiner PHP-Konfiguration anzuwenden.", + "Unable to update biography" : "Biografie konnte nicht aktualisiert werden", + "Unable to update full name" : "Der vollständige Name konnte nicht aktualisiert werden", + "No full name set" : "Kein vollständiger Name festgelegt", + "Unable to update headline" : "Überschrift konnte nicht aktualisiert werden", + "Unable to update organisation" : "Organisation konnte nicht aktualisiert werden", + "Unable to update role" : "Rolle konnte nicht aktualisiert werden", + "Change scope level of {accountProperty}" : "Geltungsbereich von {accountProperty} ändern", + "Unable to update federation scope of the primary {accountProperty}" : "Der Federation-Bereich des primären {accountProperty} konnte nicht aktualisiert werden", + "Unable to update federation scope of additional {accountProperty}" : "Der Federation-Bereich des zusätzlichen {accountProperty} konnte nicht aktualisiert werden" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js index 37cd5334cc6..81fd248a864 100644 --- a/apps/settings/l10n/de_DE.js +++ b/apps/settings/l10n/de_DE.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Gruppe entfernen", "You are about to remove the group {group}. The users will NOT be deleted." : "Sie sind im Begriff, die Gruppe {group} zu löschen. Die Benutzer werden NICHT gelöscht.", "Please confirm the group removal " : "Bitte die Löschung der Gruppe bestätigen", + "Current password" : "Aktuelles Passwort", + "New password" : "Neues Passwort", + "Change password" : "Passwort ändern", "Your biography" : "Ihre Biografie", - "Unable to update biography" : "Biografie konnte nicht aktualisiert werden", "Your full name" : "Ihr vollständiger Name", - "Unable to update full name" : "Der vollständige Name konnte nicht aktualisiert werden", - "No full name set" : "Kein vollständiger Name festgelegt", "Email options" : "E-Mail-Optionen", "Primary email for password reset and notifications" : "Primäre E-Mail-Adresse für Benachrichtigungen und Passwort-Zurücksetzen", "Remove primary email" : "Primäre E-Mail-Adresse entfernen", @@ -287,13 +287,13 @@ OC.L10N.register( "No email address set" : "Keine E-Mail-Adresse angegeben", "Additional emails" : "Zusätzliche E-Mail-Adressen", "Your headline" : "Ihre Überschrift", - "Unable to update headline" : "Überschrift konnte nicht aktualisiert werden", "Language" : "Sprache", "Help translate" : "Helfen Sie bei der Übersetzung", "Unable to update language" : "Sprache konnte nicht aktualisiert werden", "No language set" : "Keine Sprache eingestellt", + "Your location" : "Ihr Ort", "Your organisation" : "Ihre Organisation", - "Unable to update organisation" : "Organisation konnte nicht aktualisiert werden", + "Your phone number" : "Ihre Telefonnummer", "Edit your Profile visibility" : "Bearbeiten Sie die Sichtbarkeit Ihres Profils", "Enable Profile" : "Profil aktivieren", "Unable to update profile enabled state" : "Der Status für aktiviertes Profil konnte nicht aktualisiert werden", @@ -301,10 +301,13 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Sichtbarkeit von {displayId} kann nicht aktualisiert werden", "Your role" : "Ihre Funktion", - "Unable to update role" : "Rolle konnte nicht aktualisiert werden", - "Change scope level of {accountProperty}, current scope is {scope}" : "Ändern des Geltungsbereich von {accountProperty}, aktueller Bereich ist {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Der Federation-Bereich des primären {accountProperty} kann nicht aktualisiert werden", - "Unable to update federation scope of additional {accountProperty}" : "Der Federation-Bereich des zusätzlichen {accountProperty} kann nicht aktualisiert werden", + "Your Twitter handle" : "Ihr Twitter-Handle", + "Your website" : "Ihre Internetseite", + "No {property} set" : "Keine {property} gesetzt", + "Unable to update {property}" : "{property} konnte nicht aktualisiert werden", + "Change scope level of {property}, current scope is {scope}" : "Ändern des Geltungsbereich von {property}, aktueller Bereich ist {scope}", + "Unable to update federation scope of the primary {property}" : "Der Federation-Bereich des primären {property} kann nicht aktualisiert werden", + "Unable to update federation scope of additional {property}" : "Der Federation-Bereich des zusätzlichen {property} kann nicht aktualisiert werden", "Add additional email" : "Zusätzliche E-Mail-Adresse hinzufügen", "Add" : "Hinzufügen", "You do not have permissions to see the details of this user" : "Sie haben keine Berechtigung, um auf die Details dieses Benutzers zu sehen", @@ -383,7 +386,7 @@ OC.L10N.register( "Not saved" : "Nicht gespeichert", "Sending…" : "Senden…", "Email sent" : "E-Mail gesendet", - "Address" : "Adresse", + "Location" : "Ort", "Avatar" : "Avatar", "About" : "Über", "Full name" : "Vollständiger Name", @@ -490,19 +493,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Sie sind Mitglied folgender Gruppen:", "You are using <strong>%s</strong>" : "Sie benutzen <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Sie verwenden <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Datenschutzstufe der Telefonnummer ändern", - "Your phone number" : "Ihre Telefonnummer", - "Change privacy level of address" : "Datenschutzstufe der Adresse ändern", - "Your postal address" : "Ihre Postadresse", - "Change privacy level of website" : "Datenschutzstufe der Webseite ändern", - "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Datenschutzstufe des Twitter-Profils ändern", - "Twitter handle @…" : "Twitter-Handle @…", "Locale" : "Gebietsschema", - "Current password" : "Aktuelles Passwort", - "New password" : "Neues Passwort", - "Change password" : "Passwort ändern", "Use a second factor besides your password to increase security for your account." : "Verwenden Sie neben Ihrem Passwort einen zweiten Faktor, um die Sicherheit für Ihr Konto zu erhöhen.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Wenn Sie Anwendungen von Drittanbietern verwenden, um sich mit Nextcloud zu verbinden, stellen Sie bitte sicher, dass Sie für jede Anwendung ein Anwendungspasswort erstellen und konfigurieren, bevor Sie die Zwei-Faktor-Authentifizierung aktivieren.", "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", @@ -536,7 +527,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung des Benutzernamens, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeiten).", "Change privacy level of full name" : "Datenschutzstufe des vollen Namens ändern", "No display name set" : "Kein Anzeigename angegeben", + "Change privacy level of phone number" : "Datenschutzstufe der Telefonnummer ändern", + "Address" : "Adresse", + "Change privacy level of address" : "Datenschutzstufe der Adresse ändern", + "Your postal address" : "Ihre Postadresse", + "Change privacy level of website" : "Datenschutzstufe der Webseite ändern", + "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Datenschutzstufe des Twitter-Profils ändern", + "Twitter handle @…" : "Twitter-Handle @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast überschritten. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> auf Ihre PHP-Konfiguration anzuwenden.", - "Change scope level of {accountProperty}" : "Geltungsbereich von {accountProperty} ändern" + "Unable to update biography" : "Biografie konnte nicht aktualisiert werden", + "Unable to update full name" : "Der vollständige Name konnte nicht aktualisiert werden", + "No full name set" : "Kein vollständiger Name festgelegt", + "Unable to update headline" : "Überschrift konnte nicht aktualisiert werden", + "Unable to update organisation" : "Organisation konnte nicht aktualisiert werden", + "Unable to update role" : "Rolle konnte nicht aktualisiert werden", + "Change scope level of {accountProperty}" : "Geltungsbereich von {accountProperty} ändern", + "Unable to update federation scope of the primary {accountProperty}" : "Der Federation-Bereich des primären {accountProperty} kann nicht aktualisiert werden", + "Unable to update federation scope of additional {accountProperty}" : "Der Federation-Bereich des zusätzlichen {accountProperty} kann nicht aktualisiert werden" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json index 5c590335605..600e9e11e42 100644 --- a/apps/settings/l10n/de_DE.json +++ b/apps/settings/l10n/de_DE.json @@ -263,11 +263,11 @@ "Remove group" : "Gruppe entfernen", "You are about to remove the group {group}. The users will NOT be deleted." : "Sie sind im Begriff, die Gruppe {group} zu löschen. Die Benutzer werden NICHT gelöscht.", "Please confirm the group removal " : "Bitte die Löschung der Gruppe bestätigen", + "Current password" : "Aktuelles Passwort", + "New password" : "Neues Passwort", + "Change password" : "Passwort ändern", "Your biography" : "Ihre Biografie", - "Unable to update biography" : "Biografie konnte nicht aktualisiert werden", "Your full name" : "Ihr vollständiger Name", - "Unable to update full name" : "Der vollständige Name konnte nicht aktualisiert werden", - "No full name set" : "Kein vollständiger Name festgelegt", "Email options" : "E-Mail-Optionen", "Primary email for password reset and notifications" : "Primäre E-Mail-Adresse für Benachrichtigungen und Passwort-Zurücksetzen", "Remove primary email" : "Primäre E-Mail-Adresse entfernen", @@ -285,13 +285,13 @@ "No email address set" : "Keine E-Mail-Adresse angegeben", "Additional emails" : "Zusätzliche E-Mail-Adressen", "Your headline" : "Ihre Überschrift", - "Unable to update headline" : "Überschrift konnte nicht aktualisiert werden", "Language" : "Sprache", "Help translate" : "Helfen Sie bei der Übersetzung", "Unable to update language" : "Sprache konnte nicht aktualisiert werden", "No language set" : "Keine Sprache eingestellt", + "Your location" : "Ihr Ort", "Your organisation" : "Ihre Organisation", - "Unable to update organisation" : "Organisation konnte nicht aktualisiert werden", + "Your phone number" : "Ihre Telefonnummer", "Edit your Profile visibility" : "Bearbeiten Sie die Sichtbarkeit Ihres Profils", "Enable Profile" : "Profil aktivieren", "Unable to update profile enabled state" : "Der Status für aktiviertes Profil konnte nicht aktualisiert werden", @@ -299,10 +299,13 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Sichtbarkeit von {displayId} kann nicht aktualisiert werden", "Your role" : "Ihre Funktion", - "Unable to update role" : "Rolle konnte nicht aktualisiert werden", - "Change scope level of {accountProperty}, current scope is {scope}" : "Ändern des Geltungsbereich von {accountProperty}, aktueller Bereich ist {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Der Federation-Bereich des primären {accountProperty} kann nicht aktualisiert werden", - "Unable to update federation scope of additional {accountProperty}" : "Der Federation-Bereich des zusätzlichen {accountProperty} kann nicht aktualisiert werden", + "Your Twitter handle" : "Ihr Twitter-Handle", + "Your website" : "Ihre Internetseite", + "No {property} set" : "Keine {property} gesetzt", + "Unable to update {property}" : "{property} konnte nicht aktualisiert werden", + "Change scope level of {property}, current scope is {scope}" : "Ändern des Geltungsbereich von {property}, aktueller Bereich ist {scope}", + "Unable to update federation scope of the primary {property}" : "Der Federation-Bereich des primären {property} kann nicht aktualisiert werden", + "Unable to update federation scope of additional {property}" : "Der Federation-Bereich des zusätzlichen {property} kann nicht aktualisiert werden", "Add additional email" : "Zusätzliche E-Mail-Adresse hinzufügen", "Add" : "Hinzufügen", "You do not have permissions to see the details of this user" : "Sie haben keine Berechtigung, um auf die Details dieses Benutzers zu sehen", @@ -381,7 +384,7 @@ "Not saved" : "Nicht gespeichert", "Sending…" : "Senden…", "Email sent" : "E-Mail gesendet", - "Address" : "Adresse", + "Location" : "Ort", "Avatar" : "Avatar", "About" : "Über", "Full name" : "Vollständiger Name", @@ -488,19 +491,7 @@ "You are a member of the following groups:" : "Sie sind Mitglied folgender Gruppen:", "You are using <strong>%s</strong>" : "Sie benutzen <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Sie verwenden <strong>%1$s</strong> von <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Datenschutzstufe der Telefonnummer ändern", - "Your phone number" : "Ihre Telefonnummer", - "Change privacy level of address" : "Datenschutzstufe der Adresse ändern", - "Your postal address" : "Ihre Postadresse", - "Change privacy level of website" : "Datenschutzstufe der Webseite ändern", - "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Datenschutzstufe des Twitter-Profils ändern", - "Twitter handle @…" : "Twitter-Handle @…", "Locale" : "Gebietsschema", - "Current password" : "Aktuelles Passwort", - "New password" : "Neues Passwort", - "Change password" : "Passwort ändern", "Use a second factor besides your password to increase security for your account." : "Verwenden Sie neben Ihrem Passwort einen zweiten Faktor, um die Sicherheit für Ihr Konto zu erhöhen.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Wenn Sie Anwendungen von Drittanbietern verwenden, um sich mit Nextcloud zu verbinden, stellen Sie bitte sicher, dass Sie für jede Anwendung ein Anwendungspasswort erstellen und konfigurieren, bevor Sie die Zwei-Faktor-Authentifizierung aktivieren.", "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", @@ -534,7 +525,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung des Benutzernamens, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeiten).", "Change privacy level of full name" : "Datenschutzstufe des vollen Namens ändern", "No display name set" : "Kein Anzeigename angegeben", + "Change privacy level of phone number" : "Datenschutzstufe der Telefonnummer ändern", + "Address" : "Adresse", + "Change privacy level of address" : "Datenschutzstufe der Adresse ändern", + "Your postal address" : "Ihre Postadresse", + "Change privacy level of website" : "Datenschutzstufe der Webseite ändern", + "It can take up to 24 hours before the account is displayed as verified." : "Es kann bis zu 24 Stunden dauern, bis das Konto als überprüt angezeigt wird.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Datenschutzstufe des Twitter-Profils ändern", + "Twitter handle @…" : "Twitter-Handle @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Die maximale Anzahl von OPcache-Schlüsseln ist fast überschritten. Um sicherzustellen, dass alle Skripte im Cache gehalten werden können, wird empfohlen, <code>opcache.max_accelerated_files</code> mit einem höheren Wert als <code>%s</code> auf Ihre PHP-Konfiguration anzuwenden.", - "Change scope level of {accountProperty}" : "Geltungsbereich von {accountProperty} ändern" + "Unable to update biography" : "Biografie konnte nicht aktualisiert werden", + "Unable to update full name" : "Der vollständige Name konnte nicht aktualisiert werden", + "No full name set" : "Kein vollständiger Name festgelegt", + "Unable to update headline" : "Überschrift konnte nicht aktualisiert werden", + "Unable to update organisation" : "Organisation konnte nicht aktualisiert werden", + "Unable to update role" : "Rolle konnte nicht aktualisiert werden", + "Change scope level of {accountProperty}" : "Geltungsbereich von {accountProperty} ändern", + "Unable to update federation scope of the primary {accountProperty}" : "Der Federation-Bereich des primären {accountProperty} kann nicht aktualisiert werden", + "Unable to update federation scope of additional {accountProperty}" : "Der Federation-Bereich des zusätzlichen {accountProperty} kann nicht aktualisiert werden" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js index 0718cf34cf3..c6bdf77724a 100644 --- a/apps/settings/l10n/el.js +++ b/apps/settings/l10n/el.js @@ -228,11 +228,11 @@ OC.L10N.register( "Remove group" : "Αφαίρεση ομάδας", "You are about to remove the group {group}. The users will NOT be deleted." : "Πρόκειται να καταργήσετε την ομάδα {group}. Οι χρήστες ΔΕΝ θα διαγραφούν.", "Please confirm the group removal " : "Παρακαλώ επιβεβαιώστε την κατάργηση της ομάδας", + "Current password" : "Τρέχον συνθηματικό", + "New password" : "Νέο συνθηματικό", + "Change password" : "Αλλαγή συνθηματικού", "Your biography" : "Το βιογραφικό σας", - "Unable to update biography" : "Δεν είναι δυνατή η ενημέρωση του βιογραφικού", "Your full name" : "Το ονοματεπώνυμο σας", - "Unable to update full name" : "Δεν είναι δυνατή η ενημέρωση του ονοματεπώνυμο σας", - "No full name set" : "Δεν ορίστηκε ονοματεπώνυμο", "Email options" : "Επιλογές email", "Primary email for password reset and notifications" : "Κύριο email για επαναφορά συνθηματικού και ειδοποιήσεις", "Remove primary email" : "Κατάργηση κύριου email", @@ -250,13 +250,12 @@ OC.L10N.register( "No email address set" : "Δεν ορίστηκε διεύθυνση email", "Additional emails" : "Πρόσθετες διευθύνσεις email", "Your headline" : "Ο τίτλος σας", - "Unable to update headline" : "Δεν είναι δυνατή η ενημέρωση του τίτλου", "Language" : "Γλώσσα", "Help translate" : "Βοηθήστε στη μετάφραση", "Unable to update language" : "Δεν είναι δυνατή η ενημέρωση της γλώσσας", "No language set" : "Δεν ορίστηκε γλώσσα", "Your organisation" : "Ο οργανισμός σας", - "Unable to update organisation" : "Δεν είναι δυνατή η ενημέρωση του οργανισμού", + "Your phone number" : "Ο αριθμός τηλεφώνου σας", "Edit your Profile visibility" : "Επεξεργασία της ορατότητας του Προφίλ σας", "Enable Profile" : "Ενεργοποίηση προφίλ", "Unable to update profile enabled state" : "Δεν είναι δυνατή η ενημέρωση της κατάστασης του προφίλ", @@ -264,7 +263,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Δεν είναι δυνατή η ενημέρωση της ορατότητας του {displayId}", "Your role" : "Ο ρόλος σας", - "Unable to update role" : "Δεν είναι δυνατή η ενημέρωση του ρόλου", + "Your Twitter handle" : "Το Twitter σας", + "Your website" : "Η ιστοσελίδα σας", "Add additional email" : "Προσθέστε επιπλέον email", "Add" : "Προσθήκη", "You do not have permissions to see the details of this user" : "Δεν έχετε δικαιώματα να δείτε λεπτομέρειες του χρήστη", @@ -343,7 +343,7 @@ OC.L10N.register( "Not saved" : "Δεν αποθηκεύτηκε", "Sending…" : "Γινεται αποστολή...", "Email sent" : "Το Email απεστάλη ", - "Address" : "Διεύθυνση", + "Location" : "Τοποθεσία", "Avatar" : "Εικόνα προφίλ", "About" : "Σχετικά με", "Full name" : "Πλήρες όνομα", @@ -445,19 +445,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Είστε μέλος των ακόλουθων ομάδων:", "You are using <strong>%s</strong>" : "Χρησιμοποιείτε <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Χρησιμοποιείτε <strong>%1$s</strong> του <strong>%2$s</strong>(<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Αλλαγή επιπέδου απορρήτου του αριθμού τηλεφώνου", - "Your phone number" : "Ο αριθμός τηλεφώνου σας", - "Change privacy level of address" : "Αλλαγή επιπέδου απορρήτου της διεύθυνσης", - "Your postal address" : "Ο ταχυδρομικός σας κώδικας", - "Change privacy level of website" : "Αλλαγή επιπέδου απορρήτου του ιστότοπου", - "It can take up to 24 hours before the account is displayed as verified." : "Η επαλήθευση του λογαριασμού μπορεί να διαρκέσει έως και 24 ώρες.", - "Link https://…" : "Σύνδεσμος https://…", - "Change privacy level of Twitter profile" : "Αλλαγή επιπέδου απορρήτου του προφίλ Twitter", - "Twitter handle @…" : "Twitter handle @…", "Locale" : "Ρυθμίσεις τοποθεσίας", - "Current password" : "Τρέχον συνθηματικό", - "New password" : "Νέο συνθηματικό", - "Change password" : "Αλλαγή συνθηματικού", "Use a second factor besides your password to increase security for your account." : "Χρησιμοποιείστε έναν δεύτερο παράγοντα εκτός του κωδικού πρόσβασης για να αυξήσετε την ασφάλεια του λογαριασμού σας.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Εάν χρησιμοποιείτε εφαρμογές τρίτων για σύνδεση στο Nextcloud, βεβαιωθείτε ότι έχετε δημιουργήσει και διαμορφώσει έναν κωδικό πρόσβασης εφαρμογής για κάθε έναν προτού ενεργοποιήσετε τον έλεγχο ταυτότητας δεύτερου παράγοντα.", "Migration in progress. Please wait until the migration is finished" : "Μετάβαση σε εξέλιξη. Παρακαλούμε περιμένετε μέχρι να ολοκληρωθεί η μετάβαση", @@ -489,6 +477,21 @@ OC.L10N.register( "days" : "ημέρες", "Change privacy level of full name" : "Αλλαγή επιπέδου απορρήτου του ονοματεπώνυμου", "No display name set" : "Δεν ορίστηκε όνομα", + "Change privacy level of phone number" : "Αλλαγή επιπέδου απορρήτου του αριθμού τηλεφώνου", + "Address" : "Διεύθυνση", + "Change privacy level of address" : "Αλλαγή επιπέδου απορρήτου της διεύθυνσης", + "Your postal address" : "Ο ταχυδρομικός σας κώδικας", + "Change privacy level of website" : "Αλλαγή επιπέδου απορρήτου του ιστότοπου", + "It can take up to 24 hours before the account is displayed as verified." : "Η επαλήθευση του λογαριασμού μπορεί να διαρκέσει έως και 24 ώρες.", + "Link https://…" : "Σύνδεσμος https://…", + "Change privacy level of Twitter profile" : "Αλλαγή επιπέδου απορρήτου του προφίλ Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Unable to update biography" : "Δεν είναι δυνατή η ενημέρωση του βιογραφικού", + "Unable to update full name" : "Δεν είναι δυνατή η ενημέρωση του ονοματεπώνυμο σας", + "No full name set" : "Δεν ορίστηκε ονοματεπώνυμο", + "Unable to update headline" : "Δεν είναι δυνατή η ενημέρωση του τίτλου", + "Unable to update organisation" : "Δεν είναι δυνατή η ενημέρωση του οργανισμού", + "Unable to update role" : "Δεν είναι δυνατή η ενημέρωση του ρόλου", "Change scope level of {accountProperty}" : "Αλλαγή επιπέδου εύρους του {accountProperty}" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json index 4149a53f21f..7e4ad1f46d8 100644 --- a/apps/settings/l10n/el.json +++ b/apps/settings/l10n/el.json @@ -226,11 +226,11 @@ "Remove group" : "Αφαίρεση ομάδας", "You are about to remove the group {group}. The users will NOT be deleted." : "Πρόκειται να καταργήσετε την ομάδα {group}. Οι χρήστες ΔΕΝ θα διαγραφούν.", "Please confirm the group removal " : "Παρακαλώ επιβεβαιώστε την κατάργηση της ομάδας", + "Current password" : "Τρέχον συνθηματικό", + "New password" : "Νέο συνθηματικό", + "Change password" : "Αλλαγή συνθηματικού", "Your biography" : "Το βιογραφικό σας", - "Unable to update biography" : "Δεν είναι δυνατή η ενημέρωση του βιογραφικού", "Your full name" : "Το ονοματεπώνυμο σας", - "Unable to update full name" : "Δεν είναι δυνατή η ενημέρωση του ονοματεπώνυμο σας", - "No full name set" : "Δεν ορίστηκε ονοματεπώνυμο", "Email options" : "Επιλογές email", "Primary email for password reset and notifications" : "Κύριο email για επαναφορά συνθηματικού και ειδοποιήσεις", "Remove primary email" : "Κατάργηση κύριου email", @@ -248,13 +248,12 @@ "No email address set" : "Δεν ορίστηκε διεύθυνση email", "Additional emails" : "Πρόσθετες διευθύνσεις email", "Your headline" : "Ο τίτλος σας", - "Unable to update headline" : "Δεν είναι δυνατή η ενημέρωση του τίτλου", "Language" : "Γλώσσα", "Help translate" : "Βοηθήστε στη μετάφραση", "Unable to update language" : "Δεν είναι δυνατή η ενημέρωση της γλώσσας", "No language set" : "Δεν ορίστηκε γλώσσα", "Your organisation" : "Ο οργανισμός σας", - "Unable to update organisation" : "Δεν είναι δυνατή η ενημέρωση του οργανισμού", + "Your phone number" : "Ο αριθμός τηλεφώνου σας", "Edit your Profile visibility" : "Επεξεργασία της ορατότητας του Προφίλ σας", "Enable Profile" : "Ενεργοποίηση προφίλ", "Unable to update profile enabled state" : "Δεν είναι δυνατή η ενημέρωση της κατάστασης του προφίλ", @@ -262,7 +261,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Δεν είναι δυνατή η ενημέρωση της ορατότητας του {displayId}", "Your role" : "Ο ρόλος σας", - "Unable to update role" : "Δεν είναι δυνατή η ενημέρωση του ρόλου", + "Your Twitter handle" : "Το Twitter σας", + "Your website" : "Η ιστοσελίδα σας", "Add additional email" : "Προσθέστε επιπλέον email", "Add" : "Προσθήκη", "You do not have permissions to see the details of this user" : "Δεν έχετε δικαιώματα να δείτε λεπτομέρειες του χρήστη", @@ -341,7 +341,7 @@ "Not saved" : "Δεν αποθηκεύτηκε", "Sending…" : "Γινεται αποστολή...", "Email sent" : "Το Email απεστάλη ", - "Address" : "Διεύθυνση", + "Location" : "Τοποθεσία", "Avatar" : "Εικόνα προφίλ", "About" : "Σχετικά με", "Full name" : "Πλήρες όνομα", @@ -443,19 +443,7 @@ "You are a member of the following groups:" : "Είστε μέλος των ακόλουθων ομάδων:", "You are using <strong>%s</strong>" : "Χρησιμοποιείτε <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Χρησιμοποιείτε <strong>%1$s</strong> του <strong>%2$s</strong>(<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Αλλαγή επιπέδου απορρήτου του αριθμού τηλεφώνου", - "Your phone number" : "Ο αριθμός τηλεφώνου σας", - "Change privacy level of address" : "Αλλαγή επιπέδου απορρήτου της διεύθυνσης", - "Your postal address" : "Ο ταχυδρομικός σας κώδικας", - "Change privacy level of website" : "Αλλαγή επιπέδου απορρήτου του ιστότοπου", - "It can take up to 24 hours before the account is displayed as verified." : "Η επαλήθευση του λογαριασμού μπορεί να διαρκέσει έως και 24 ώρες.", - "Link https://…" : "Σύνδεσμος https://…", - "Change privacy level of Twitter profile" : "Αλλαγή επιπέδου απορρήτου του προφίλ Twitter", - "Twitter handle @…" : "Twitter handle @…", "Locale" : "Ρυθμίσεις τοποθεσίας", - "Current password" : "Τρέχον συνθηματικό", - "New password" : "Νέο συνθηματικό", - "Change password" : "Αλλαγή συνθηματικού", "Use a second factor besides your password to increase security for your account." : "Χρησιμοποιείστε έναν δεύτερο παράγοντα εκτός του κωδικού πρόσβασης για να αυξήσετε την ασφάλεια του λογαριασμού σας.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Εάν χρησιμοποιείτε εφαρμογές τρίτων για σύνδεση στο Nextcloud, βεβαιωθείτε ότι έχετε δημιουργήσει και διαμορφώσει έναν κωδικό πρόσβασης εφαρμογής για κάθε έναν προτού ενεργοποιήσετε τον έλεγχο ταυτότητας δεύτερου παράγοντα.", "Migration in progress. Please wait until the migration is finished" : "Μετάβαση σε εξέλιξη. Παρακαλούμε περιμένετε μέχρι να ολοκληρωθεί η μετάβαση", @@ -487,6 +475,21 @@ "days" : "ημέρες", "Change privacy level of full name" : "Αλλαγή επιπέδου απορρήτου του ονοματεπώνυμου", "No display name set" : "Δεν ορίστηκε όνομα", + "Change privacy level of phone number" : "Αλλαγή επιπέδου απορρήτου του αριθμού τηλεφώνου", + "Address" : "Διεύθυνση", + "Change privacy level of address" : "Αλλαγή επιπέδου απορρήτου της διεύθυνσης", + "Your postal address" : "Ο ταχυδρομικός σας κώδικας", + "Change privacy level of website" : "Αλλαγή επιπέδου απορρήτου του ιστότοπου", + "It can take up to 24 hours before the account is displayed as verified." : "Η επαλήθευση του λογαριασμού μπορεί να διαρκέσει έως και 24 ώρες.", + "Link https://…" : "Σύνδεσμος https://…", + "Change privacy level of Twitter profile" : "Αλλαγή επιπέδου απορρήτου του προφίλ Twitter", + "Twitter handle @…" : "Twitter handle @…", + "Unable to update biography" : "Δεν είναι δυνατή η ενημέρωση του βιογραφικού", + "Unable to update full name" : "Δεν είναι δυνατή η ενημέρωση του ονοματεπώνυμο σας", + "No full name set" : "Δεν ορίστηκε ονοματεπώνυμο", + "Unable to update headline" : "Δεν είναι δυνατή η ενημέρωση του τίτλου", + "Unable to update organisation" : "Δεν είναι δυνατή η ενημέρωση του οργανισμού", + "Unable to update role" : "Δεν είναι δυνατή η ενημέρωση του ρόλου", "Change scope level of {accountProperty}" : "Αλλαγή επιπέδου εύρους του {accountProperty}" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js index 0afa624bf3a..51e047cd7dd 100644 --- a/apps/settings/l10n/en_GB.js +++ b/apps/settings/l10n/en_GB.js @@ -146,10 +146,16 @@ OC.L10N.register( "Remove group" : "Remove group", "You are about to remove the group {group}. The users will NOT be deleted." : "You are about to remove the group {group}. The users will NOT be deleted.", "Please confirm the group removal " : "Please confirm the group removal ", + "Current password" : "Current password", + "New password" : "New password", + "Change password" : "Change password", "Your email address" : "Your email address", "No email address set" : "No email address set", "Language" : "Language", "Help translate" : "Help translate", + "Your phone number" : "Your phone number", + "Your Twitter handle" : "Your Twitter handle", + "Your website" : "Your website", "Add" : "Add", "You do not have permissions to see the details of this user" : "You do not have permissions to see the details of this user", "Delete user" : "Delete user", @@ -189,7 +195,7 @@ OC.L10N.register( "Not saved" : "Not saved", "Sending…" : "Sending…", "Email sent" : "Email sent", - "Address" : "Address", + "Location" : "Location", "Avatar" : "Avatar", "About" : "About", "Full name" : "Full name", @@ -247,6 +253,7 @@ OC.L10N.register( "Follow us on Twitter" : "Follow us on Twitter", "Check out our blog" : "Check out our blog", "Subscribe to our newsletter" : "Subscribe to our newsletter", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "This community release of Nextcloud is unsupported and instant notifications are unavailable.", "Profile picture" : "Profile picture", "Upload new" : "Upload new", "Select from Files" : "Select from Files", @@ -255,14 +262,6 @@ OC.L10N.register( "Picture provided by original account" : "Picture provided by original account", "Choose as profile picture" : "Choose as profile picture", "You are using <strong>%s</strong>" : "You are using <strong>%s</strong>", - "Your phone number" : "Your phone number", - "Your postal address" : "Your postal address", - "It can take up to 24 hours before the account is displayed as verified." : "It can take up to 24 hours before the account is displayed as verified.", - "Link https://…" : "Link https://…", - "Twitter handle @…" : "Twitter handle @…", - "Current password" : "Current password", - "New password" : "New password", - "Change password" : "Change password", "Migration in progress. Please wait until the migration is finished" : "Migration in progress. Please wait until the migration is finished", "Migration started …" : "Migration started …", "Couldn't remove app." : "Couldn't remove app.", @@ -283,6 +282,11 @@ OC.L10N.register( "Recommended" : "Recommended", "The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".", "days" : "days", - "No display name set" : "No display name set" + "No display name set" : "No display name set", + "Address" : "Address", + "Your postal address" : "Your postal address", + "It can take up to 24 hours before the account is displayed as verified." : "It can take up to 24 hours before the account is displayed as verified.", + "Link https://…" : "Link https://…", + "Twitter handle @…" : "Twitter handle @…" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json index 77b9b8ebcfc..860def5d3be 100644 --- a/apps/settings/l10n/en_GB.json +++ b/apps/settings/l10n/en_GB.json @@ -144,10 +144,16 @@ "Remove group" : "Remove group", "You are about to remove the group {group}. The users will NOT be deleted." : "You are about to remove the group {group}. The users will NOT be deleted.", "Please confirm the group removal " : "Please confirm the group removal ", + "Current password" : "Current password", + "New password" : "New password", + "Change password" : "Change password", "Your email address" : "Your email address", "No email address set" : "No email address set", "Language" : "Language", "Help translate" : "Help translate", + "Your phone number" : "Your phone number", + "Your Twitter handle" : "Your Twitter handle", + "Your website" : "Your website", "Add" : "Add", "You do not have permissions to see the details of this user" : "You do not have permissions to see the details of this user", "Delete user" : "Delete user", @@ -187,7 +193,7 @@ "Not saved" : "Not saved", "Sending…" : "Sending…", "Email sent" : "Email sent", - "Address" : "Address", + "Location" : "Location", "Avatar" : "Avatar", "About" : "About", "Full name" : "Full name", @@ -245,6 +251,7 @@ "Follow us on Twitter" : "Follow us on Twitter", "Check out our blog" : "Check out our blog", "Subscribe to our newsletter" : "Subscribe to our newsletter", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "This community release of Nextcloud is unsupported and instant notifications are unavailable.", "Profile picture" : "Profile picture", "Upload new" : "Upload new", "Select from Files" : "Select from Files", @@ -253,14 +260,6 @@ "Picture provided by original account" : "Picture provided by original account", "Choose as profile picture" : "Choose as profile picture", "You are using <strong>%s</strong>" : "You are using <strong>%s</strong>", - "Your phone number" : "Your phone number", - "Your postal address" : "Your postal address", - "It can take up to 24 hours before the account is displayed as verified." : "It can take up to 24 hours before the account is displayed as verified.", - "Link https://…" : "Link https://…", - "Twitter handle @…" : "Twitter handle @…", - "Current password" : "Current password", - "New password" : "New password", - "Change password" : "Change password", "Migration in progress. Please wait until the migration is finished" : "Migration in progress. Please wait until the migration is finished", "Migration started …" : "Migration started …", "Couldn't remove app." : "Couldn't remove app.", @@ -281,6 +280,11 @@ "Recommended" : "Recommended", "The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".", "days" : "days", - "No display name set" : "No display name set" + "No display name set" : "No display name set", + "Address" : "Address", + "Your postal address" : "Your postal address", + "It can take up to 24 hours before the account is displayed as verified." : "It can take up to 24 hours before the account is displayed as verified.", + "Link https://…" : "Link https://…", + "Twitter handle @…" : "Twitter handle @…" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js index c2d41ad8044..dd050ab2966 100644 --- a/apps/settings/l10n/eo.js +++ b/apps/settings/l10n/eo.js @@ -194,11 +194,15 @@ OC.L10N.register( "Remove group" : "Forigi grupon", "You are about to remove the group {group}. The users will NOT be deleted." : "Vi tuj forigos grupon {group}. La uzantoj NE estos forigitaj.", "Please confirm the group removal " : "Bv. konfirmi forigadon de la grupo", + "Current password" : "Nuna pasvorto", + "New password" : "Nova pasvorto", + "Change password" : "Ŝanĝi la pasvorton", "Your email address" : "Via retpoŝta adreso", "No email address set" : "Neniu retpoŝta adreso agordita", "Language" : "Lingvo", "Help translate" : "Helpu traduki", "No language set" : "Neniu lingvo agordita", + "Your phone number" : "Via telefonnumero", "Add" : "Aldoni", "You do not have permissions to see the details of this user" : "Vi ne rajtas vidi detalojn pri tiu ĉu uzanto", "Set user as admin for" : "Agordi uzanton kiel administranto por", @@ -254,7 +258,7 @@ OC.L10N.register( "Not saved" : "Ne konservita", "Sending…" : "Sendado...", "Email sent" : "La retpoŝtaĵo sendiĝis", - "Address" : "Adreso", + "Location" : "Loko", "Avatar" : "Avataro", "About" : "Pri", "Full name" : "Plena nomo", @@ -330,15 +334,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Vi estas membro el la jenaj grupoj:", "You are using <strong>%s</strong>" : "Vi uzas <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vi uzas <strong>%1$s</strong> el <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Via telefonnumero", - "Your postal address" : "Via poŝta adreso", - "It can take up to 24 hours before the account is displayed as verified." : "Ĝis 24 horoj estas kelkfoje bezonataj, antaŭ ol la konto estas markita kiel kontrolita.", - "Link https://…" : "Ligilo https://…", - "Twitter handle @…" : "Twitter-kontonomo @…", "Locale" : "Lokaĵaro", - "Current password" : "Nuna pasvorto", - "New password" : "Nova pasvorto", - "Change password" : "Ŝanĝi la pasvorton", "Use a second factor besides your password to increase security for your account." : "Uzu duan fazon krom via pasvorto por plisekurigi vian konton.", "Migration in progress. Please wait until the migration is finished" : "Transmeto faranta. Bv. atendi ĝis la fino de la transmeto.", "Migration started …" : "Ektransmetado...", @@ -362,6 +358,11 @@ OC.L10N.register( "Recommended" : "Rekomendata", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php bezonas esti rulita de la sistema uzanto „%s“.", "days" : "tagoj", - "No display name set" : "Neniui vidiga nomo agordita" + "No display name set" : "Neniui vidiga nomo agordita", + "Address" : "Adreso", + "Your postal address" : "Via poŝta adreso", + "It can take up to 24 hours before the account is displayed as verified." : "Ĝis 24 horoj estas kelkfoje bezonataj, antaŭ ol la konto estas markita kiel kontrolita.", + "Link https://…" : "Ligilo https://…", + "Twitter handle @…" : "Twitter-kontonomo @…" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json index 3c1224c9f3e..762276bcf4f 100644 --- a/apps/settings/l10n/eo.json +++ b/apps/settings/l10n/eo.json @@ -192,11 +192,15 @@ "Remove group" : "Forigi grupon", "You are about to remove the group {group}. The users will NOT be deleted." : "Vi tuj forigos grupon {group}. La uzantoj NE estos forigitaj.", "Please confirm the group removal " : "Bv. konfirmi forigadon de la grupo", + "Current password" : "Nuna pasvorto", + "New password" : "Nova pasvorto", + "Change password" : "Ŝanĝi la pasvorton", "Your email address" : "Via retpoŝta adreso", "No email address set" : "Neniu retpoŝta adreso agordita", "Language" : "Lingvo", "Help translate" : "Helpu traduki", "No language set" : "Neniu lingvo agordita", + "Your phone number" : "Via telefonnumero", "Add" : "Aldoni", "You do not have permissions to see the details of this user" : "Vi ne rajtas vidi detalojn pri tiu ĉu uzanto", "Set user as admin for" : "Agordi uzanton kiel administranto por", @@ -252,7 +256,7 @@ "Not saved" : "Ne konservita", "Sending…" : "Sendado...", "Email sent" : "La retpoŝtaĵo sendiĝis", - "Address" : "Adreso", + "Location" : "Loko", "Avatar" : "Avataro", "About" : "Pri", "Full name" : "Plena nomo", @@ -328,15 +332,7 @@ "You are a member of the following groups:" : "Vi estas membro el la jenaj grupoj:", "You are using <strong>%s</strong>" : "Vi uzas <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vi uzas <strong>%1$s</strong> el <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Via telefonnumero", - "Your postal address" : "Via poŝta adreso", - "It can take up to 24 hours before the account is displayed as verified." : "Ĝis 24 horoj estas kelkfoje bezonataj, antaŭ ol la konto estas markita kiel kontrolita.", - "Link https://…" : "Ligilo https://…", - "Twitter handle @…" : "Twitter-kontonomo @…", "Locale" : "Lokaĵaro", - "Current password" : "Nuna pasvorto", - "New password" : "Nova pasvorto", - "Change password" : "Ŝanĝi la pasvorton", "Use a second factor besides your password to increase security for your account." : "Uzu duan fazon krom via pasvorto por plisekurigi vian konton.", "Migration in progress. Please wait until the migration is finished" : "Transmeto faranta. Bv. atendi ĝis la fino de la transmeto.", "Migration started …" : "Ektransmetado...", @@ -360,6 +356,11 @@ "Recommended" : "Rekomendata", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php bezonas esti rulita de la sistema uzanto „%s“.", "days" : "tagoj", - "No display name set" : "Neniui vidiga nomo agordita" + "No display name set" : "Neniui vidiga nomo agordita", + "Address" : "Adreso", + "Your postal address" : "Via poŝta adreso", + "It can take up to 24 hours before the account is displayed as verified." : "Ĝis 24 horoj estas kelkfoje bezonataj, antaŭ ol la konto estas markita kiel kontrolita.", + "Link https://…" : "Ligilo https://…", + "Twitter handle @…" : "Twitter-kontonomo @…" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js index 225e4a811d2..c214e6e32d9 100644 --- a/apps/settings/l10n/es.js +++ b/apps/settings/l10n/es.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Eliminar grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Vas a eliminar el grupo {group}. Los usuarios NO serán eliminados.", "Please confirm the group removal " : "Por favor, confirma la eliminación del grupo", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your biography" : "Tu biografía", - "Unable to update biography" : "No se pudo actualizar la biografía", "Your full name" : "Tu nombre completo", - "Unable to update full name" : "No se pudo actualizar tu nombre completo", - "No full name set" : "No se ha completado el nombre completo", "Email options" : "Opciones de email", "Primary email for password reset and notifications" : "Dirección email principal para restablecer contraseña y notificaciones", "Remove primary email" : "Borrar email principal", @@ -287,13 +287,12 @@ OC.L10N.register( "No email address set" : "No hay establecida ninguna dirección de correo", "Additional emails" : "Direcciones de email adicionales", "Your headline" : "Tu titular", - "Unable to update headline" : "No se pudo actualizar tu titular", "Language" : "Idioma", "Help translate" : "Ayúdanos a traducir", "Unable to update language" : "No se pudo actualizar tu idioma", "No language set" : "No se ha marcado idioma", "Your organisation" : "Tu organización", - "Unable to update organisation" : "No se pudo actualizar tu organización", + "Your phone number" : "Su número de teléfono", "Edit your Profile visibility" : "Editar la visibilidad de tu perfil", "Enable Profile" : "Activar Perfil", "Unable to update profile enabled state" : "No se pudo actualizar el estado habilitado del perfil", @@ -301,10 +300,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "No se pudo actualizar la visibilidad de {displayId}", "Your role" : "Tu rol", - "Unable to update role" : "No se pudo actualizar el cargo", - "Change scope level of {accountProperty}, current scope is {scope}" : "Cambiar el nivel de privacidad de {accountProperty}, el valor actual es {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "No se puede actualizar el perímetro de la federación del principal {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "No se puede actualizar el perímetro de la federación de la adicional {accountProperty}", + "Your Twitter handle" : "Su usuario de Twitter", + "Your website" : "La dirección de su sitio web", "Add additional email" : "Añadir un email adicional", "Add" : "Añadir", "You do not have permissions to see the details of this user" : "No tienes permisos para ver los detalles de este usuario", @@ -383,7 +380,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -490,19 +487,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Eres miembro de los siguientes grupos:", "You are using <strong>%s</strong>" : "Estás usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estás usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Cambiar nivel de privacidad del número de teléfono", - "Your phone number" : "Su número de teléfono", - "Change privacy level of address" : "Cambiar nivel de privacidad de la dirección", - "Your postal address" : "Su dirección física", - "Change privacy level of website" : "Cambiar nivel de privacidad de la página web", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tardar hasta 24 horas que la cuenta aparezca como verificada.", - "Link https://…" : "Enlace https://...", - "Change privacy level of Twitter profile" : "Cambiar nivel de privacidad del perfí en Twitter", - "Twitter handle @…" : "Usuario de Twitter @...", "Locale" : "Región", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Use a second factor besides your password to increase security for your account." : "Usa un segundo paso además de tu contraseña para incrementar la seguridad de tu cuenta. ", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si utiliza aplicaciones de terceras partes para conectarse a Nextcloud, por favor compruebe que crea y configura una contraseña de app para cada una antes de activar el factor de autentificación de dos pasos.", "Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.", @@ -536,7 +521,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletado del nombre de usuario cuando se introduzca el nombre completo o la dirección del email (ignorando la falta de coincidencia en la agenda de teléfonos y ser del mismo grupo)", "Change privacy level of full name" : "Cambiar nivel de privacidad del nombre completo", "No display name set" : "No se ha establecido ningún nombre para mostrar", + "Change privacy level of phone number" : "Cambiar nivel de privacidad del número de teléfono", + "Address" : "Dirección", + "Change privacy level of address" : "Cambiar nivel de privacidad de la dirección", + "Your postal address" : "Su dirección física", + "Change privacy level of website" : "Cambiar nivel de privacidad de la página web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tardar hasta 24 horas que la cuenta aparezca como verificada.", + "Link https://…" : "Enlace https://...", + "Change privacy level of Twitter profile" : "Cambiar nivel de privacidad del perfí en Twitter", + "Twitter handle @…" : "Usuario de Twitter @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "El número máximo de claves de OPcache está casi superado. Para asegurar que todos los scripts puedan mantenerse en la caché, se recomienda aplicar <code>opcache.max_accelerated_files</code> a su configuración de PHP con un valor superior a <code>%s</code>.", - "Change scope level of {accountProperty}" : "Cambiar el nivel de privacidad de {accountProperty}" + "Unable to update biography" : "No se pudo actualizar la biografía", + "Unable to update full name" : "No se pudo actualizar tu nombre completo", + "No full name set" : "No se ha completado el nombre completo", + "Unable to update headline" : "No se pudo actualizar tu titular", + "Unable to update organisation" : "No se pudo actualizar tu organización", + "Unable to update role" : "No se pudo actualizar el cargo", + "Change scope level of {accountProperty}" : "Cambiar el nivel de privacidad de {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "No se puede actualizar el perímetro de la federación del principal {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "No se puede actualizar el perímetro de la federación de la adicional {accountProperty}" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json index a49b9630ca9..9737322de64 100644 --- a/apps/settings/l10n/es.json +++ b/apps/settings/l10n/es.json @@ -263,11 +263,11 @@ "Remove group" : "Eliminar grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Vas a eliminar el grupo {group}. Los usuarios NO serán eliminados.", "Please confirm the group removal " : "Por favor, confirma la eliminación del grupo", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your biography" : "Tu biografía", - "Unable to update biography" : "No se pudo actualizar la biografía", "Your full name" : "Tu nombre completo", - "Unable to update full name" : "No se pudo actualizar tu nombre completo", - "No full name set" : "No se ha completado el nombre completo", "Email options" : "Opciones de email", "Primary email for password reset and notifications" : "Dirección email principal para restablecer contraseña y notificaciones", "Remove primary email" : "Borrar email principal", @@ -285,13 +285,12 @@ "No email address set" : "No hay establecida ninguna dirección de correo", "Additional emails" : "Direcciones de email adicionales", "Your headline" : "Tu titular", - "Unable to update headline" : "No se pudo actualizar tu titular", "Language" : "Idioma", "Help translate" : "Ayúdanos a traducir", "Unable to update language" : "No se pudo actualizar tu idioma", "No language set" : "No se ha marcado idioma", "Your organisation" : "Tu organización", - "Unable to update organisation" : "No se pudo actualizar tu organización", + "Your phone number" : "Su número de teléfono", "Edit your Profile visibility" : "Editar la visibilidad de tu perfil", "Enable Profile" : "Activar Perfil", "Unable to update profile enabled state" : "No se pudo actualizar el estado habilitado del perfil", @@ -299,10 +298,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "No se pudo actualizar la visibilidad de {displayId}", "Your role" : "Tu rol", - "Unable to update role" : "No se pudo actualizar el cargo", - "Change scope level of {accountProperty}, current scope is {scope}" : "Cambiar el nivel de privacidad de {accountProperty}, el valor actual es {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "No se puede actualizar el perímetro de la federación del principal {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "No se puede actualizar el perímetro de la federación de la adicional {accountProperty}", + "Your Twitter handle" : "Su usuario de Twitter", + "Your website" : "La dirección de su sitio web", "Add additional email" : "Añadir un email adicional", "Add" : "Añadir", "You do not have permissions to see the details of this user" : "No tienes permisos para ver los detalles de este usuario", @@ -381,7 +378,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -488,19 +485,7 @@ "You are a member of the following groups:" : "Eres miembro de los siguientes grupos:", "You are using <strong>%s</strong>" : "Estás usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estás usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Cambiar nivel de privacidad del número de teléfono", - "Your phone number" : "Su número de teléfono", - "Change privacy level of address" : "Cambiar nivel de privacidad de la dirección", - "Your postal address" : "Su dirección física", - "Change privacy level of website" : "Cambiar nivel de privacidad de la página web", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tardar hasta 24 horas que la cuenta aparezca como verificada.", - "Link https://…" : "Enlace https://...", - "Change privacy level of Twitter profile" : "Cambiar nivel de privacidad del perfí en Twitter", - "Twitter handle @…" : "Usuario de Twitter @...", "Locale" : "Región", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Use a second factor besides your password to increase security for your account." : "Usa un segundo paso además de tu contraseña para incrementar la seguridad de tu cuenta. ", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si utiliza aplicaciones de terceras partes para conectarse a Nextcloud, por favor compruebe que crea y configura una contraseña de app para cada una antes de activar el factor de autentificación de dos pasos.", "Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.", @@ -534,7 +519,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletado del nombre de usuario cuando se introduzca el nombre completo o la dirección del email (ignorando la falta de coincidencia en la agenda de teléfonos y ser del mismo grupo)", "Change privacy level of full name" : "Cambiar nivel de privacidad del nombre completo", "No display name set" : "No se ha establecido ningún nombre para mostrar", + "Change privacy level of phone number" : "Cambiar nivel de privacidad del número de teléfono", + "Address" : "Dirección", + "Change privacy level of address" : "Cambiar nivel de privacidad de la dirección", + "Your postal address" : "Su dirección física", + "Change privacy level of website" : "Cambiar nivel de privacidad de la página web", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tardar hasta 24 horas que la cuenta aparezca como verificada.", + "Link https://…" : "Enlace https://...", + "Change privacy level of Twitter profile" : "Cambiar nivel de privacidad del perfí en Twitter", + "Twitter handle @…" : "Usuario de Twitter @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "El número máximo de claves de OPcache está casi superado. Para asegurar que todos los scripts puedan mantenerse en la caché, se recomienda aplicar <code>opcache.max_accelerated_files</code> a su configuración de PHP con un valor superior a <code>%s</code>.", - "Change scope level of {accountProperty}" : "Cambiar el nivel de privacidad de {accountProperty}" + "Unable to update biography" : "No se pudo actualizar la biografía", + "Unable to update full name" : "No se pudo actualizar tu nombre completo", + "No full name set" : "No se ha completado el nombre completo", + "Unable to update headline" : "No se pudo actualizar tu titular", + "Unable to update organisation" : "No se pudo actualizar tu organización", + "Unable to update role" : "No se pudo actualizar el cargo", + "Change scope level of {accountProperty}" : "Cambiar el nivel de privacidad de {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "No se puede actualizar el perímetro de la federación del principal {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "No se puede actualizar el perímetro de la federación de la adicional {accountProperty}" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js index 5319c2ae3d4..182a385a718 100644 --- a/apps/settings/l10n/es_419.js +++ b/apps/settings/l10n/es_419.js @@ -141,10 +141,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -236,15 +242,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Eres miembro de los siguientes grupos:", "You are using <strong>%s</strong>" : "Estas usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estas usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Enlace https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", "Locale" : "Región", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -264,6 +262,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Enlace https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json index bae43da630d..9a3a2af429f 100644 --- a/apps/settings/l10n/es_419.json +++ b/apps/settings/l10n/es_419.json @@ -139,10 +139,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -170,7 +176,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -234,15 +240,7 @@ "You are a member of the following groups:" : "Eres miembro de los siguientes grupos:", "You are using <strong>%s</strong>" : "Estas usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Estas usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Enlace https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", "Locale" : "Región", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -262,6 +260,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Enlace https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js index 02dfe1133f1..ecbef6ccde4 100644 --- a/apps/settings/l10n/es_AR.js +++ b/apps/settings/l10n/es_AR.js @@ -134,10 +134,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente desea habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, favor de habilitar un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Seleccionar modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Su dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayude a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Su cuenta de Twitter", + "Your website" : "Su sitio web", "Add" : "Añadir", "Cancel" : "Cancelar", "Display name" : "Nombre para mostrar", @@ -164,7 +170,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -223,14 +229,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionadoa por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Su dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Link https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -250,6 +248,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario del sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Su dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Link https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json index e03247980d1..73097d3975b 100644 --- a/apps/settings/l10n/es_AR.json +++ b/apps/settings/l10n/es_AR.json @@ -132,10 +132,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente desea habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, favor de habilitar un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Seleccionar modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Su dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayude a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Su cuenta de Twitter", + "Your website" : "Su sitio web", "Add" : "Añadir", "Cancel" : "Cancelar", "Display name" : "Nombre para mostrar", @@ -162,7 +168,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -221,14 +227,6 @@ "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionadoa por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Su dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Link https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -248,6 +246,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario del sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Su dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Link https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js index 858a5941272..b26918992ef 100644 --- a/apps/settings/l10n/es_CL.js +++ b/apps/settings/l10n/es_CL.js @@ -141,10 +141,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -233,14 +239,6 @@ OC.L10N.register( "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -260,6 +258,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json index a3047300896..b9408708fc3 100644 --- a/apps/settings/l10n/es_CL.json +++ b/apps/settings/l10n/es_CL.json @@ -139,10 +139,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -170,7 +176,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -231,14 +237,6 @@ "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -258,6 +256,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js index 858a5941272..b26918992ef 100644 --- a/apps/settings/l10n/es_CO.js +++ b/apps/settings/l10n/es_CO.js @@ -141,10 +141,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -233,14 +239,6 @@ OC.L10N.register( "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -260,6 +258,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json index a3047300896..b9408708fc3 100644 --- a/apps/settings/l10n/es_CO.json +++ b/apps/settings/l10n/es_CO.json @@ -139,10 +139,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -170,7 +176,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -231,14 +237,6 @@ "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -258,6 +256,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js index 858a5941272..b26918992ef 100644 --- a/apps/settings/l10n/es_CR.js +++ b/apps/settings/l10n/es_CR.js @@ -141,10 +141,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -233,14 +239,6 @@ OC.L10N.register( "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -260,6 +258,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json index a3047300896..b9408708fc3 100644 --- a/apps/settings/l10n/es_CR.json +++ b/apps/settings/l10n/es_CR.json @@ -139,10 +139,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -170,7 +176,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -231,14 +237,6 @@ "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -258,6 +256,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js index 858a5941272..b26918992ef 100644 --- a/apps/settings/l10n/es_DO.js +++ b/apps/settings/l10n/es_DO.js @@ -141,10 +141,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -233,14 +239,6 @@ OC.L10N.register( "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -260,6 +258,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json index a3047300896..b9408708fc3 100644 --- a/apps/settings/l10n/es_DO.json +++ b/apps/settings/l10n/es_DO.json @@ -139,10 +139,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -170,7 +176,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -231,14 +237,6 @@ "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -258,6 +256,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js index 858a5941272..b26918992ef 100644 --- a/apps/settings/l10n/es_EC.js +++ b/apps/settings/l10n/es_EC.js @@ -141,10 +141,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -233,14 +239,6 @@ OC.L10N.register( "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -260,6 +258,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json index a3047300896..b9408708fc3 100644 --- a/apps/settings/l10n/es_EC.json +++ b/apps/settings/l10n/es_EC.json @@ -139,10 +139,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -170,7 +176,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -231,14 +237,6 @@ "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -258,6 +256,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js index 858a5941272..b26918992ef 100644 --- a/apps/settings/l10n/es_GT.js +++ b/apps/settings/l10n/es_GT.js @@ -141,10 +141,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -233,14 +239,6 @@ OC.L10N.register( "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -260,6 +258,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json index a3047300896..b9408708fc3 100644 --- a/apps/settings/l10n/es_GT.json +++ b/apps/settings/l10n/es_GT.json @@ -139,10 +139,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -170,7 +176,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -231,14 +237,6 @@ "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -258,6 +256,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js index 66f0f4ac051..9003c1c1e8b 100644 --- a/apps/settings/l10n/es_HN.js +++ b/apps/settings/l10n/es_HN.js @@ -136,10 +136,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -167,7 +173,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -226,14 +232,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -253,6 +251,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json index b48f4e32b16..21e267849c4 100644 --- a/apps/settings/l10n/es_HN.json +++ b/apps/settings/l10n/es_HN.json @@ -134,10 +134,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -165,7 +171,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -224,14 +230,6 @@ "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -251,6 +249,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js index fd7a483af3a..6269ff84504 100644 --- a/apps/settings/l10n/es_MX.js +++ b/apps/settings/l10n/es_MX.js @@ -155,10 +155,16 @@ OC.L10N.register( "Remove group" : "Eliminar grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Estás a punto de eliminar el grupo {group}. Los usuarios NO serán borrados.", "Please confirm the group removal " : "Por favor confirma la eliminación del grupo", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "You do not have permissions to see the details of this user" : "No tienes los permisos para ver los detalles de este usuario", "Delete user" : "Borrar usuario", @@ -195,7 +201,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -249,6 +255,7 @@ OC.L10N.register( "Follow us on Twitter" : "Síguenos en Twitter", "Check out our blog" : "Visita nuestro blog", "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "El lanzamiento de esta versión para la comunidad de Nextcloud no cuenta con soporte y las notificaciones instantáneas no están disponibles.", "Profile picture" : "Foto de perfil", "Upload new" : "Cargar nuevo", "Select from Files" : "Seleccionar desde Archivos", @@ -257,14 +264,6 @@ OC.L10N.register( "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -284,6 +283,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json index 7b64487afb5..155b0d89b23 100644 --- a/apps/settings/l10n/es_MX.json +++ b/apps/settings/l10n/es_MX.json @@ -153,10 +153,16 @@ "Remove group" : "Eliminar grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Estás a punto de eliminar el grupo {group}. Los usuarios NO serán borrados.", "Please confirm the group removal " : "Por favor confirma la eliminación del grupo", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "You do not have permissions to see the details of this user" : "No tienes los permisos para ver los detalles de este usuario", "Delete user" : "Borrar usuario", @@ -193,7 +199,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -247,6 +253,7 @@ "Follow us on Twitter" : "Síguenos en Twitter", "Check out our blog" : "Visita nuestro blog", "Subscribe to our newsletter" : "Suscribete a nuestro boletín", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "El lanzamiento de esta versión para la comunidad de Nextcloud no cuenta con soporte y las notificaciones instantáneas no están disponibles.", "Profile picture" : "Foto de perfil", "Upload new" : "Cargar nuevo", "Select from Files" : "Seleccionar desde Archivos", @@ -255,14 +262,6 @@ "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -282,6 +281,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js index 66f0f4ac051..9003c1c1e8b 100644 --- a/apps/settings/l10n/es_NI.js +++ b/apps/settings/l10n/es_NI.js @@ -136,10 +136,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -167,7 +173,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -226,14 +232,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -253,6 +251,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json index b48f4e32b16..21e267849c4 100644 --- a/apps/settings/l10n/es_NI.json +++ b/apps/settings/l10n/es_NI.json @@ -134,10 +134,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -165,7 +171,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -224,14 +230,6 @@ "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -251,6 +249,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js index 66f0f4ac051..9003c1c1e8b 100644 --- a/apps/settings/l10n/es_PA.js +++ b/apps/settings/l10n/es_PA.js @@ -136,10 +136,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -167,7 +173,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -226,14 +232,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -253,6 +251,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json index b48f4e32b16..21e267849c4 100644 --- a/apps/settings/l10n/es_PA.json +++ b/apps/settings/l10n/es_PA.json @@ -134,10 +134,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -165,7 +171,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -224,14 +230,6 @@ "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -251,6 +249,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js index 66f0f4ac051..9003c1c1e8b 100644 --- a/apps/settings/l10n/es_PE.js +++ b/apps/settings/l10n/es_PE.js @@ -136,10 +136,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -167,7 +173,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -226,14 +232,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -253,6 +251,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json index b48f4e32b16..21e267849c4 100644 --- a/apps/settings/l10n/es_PE.json +++ b/apps/settings/l10n/es_PE.json @@ -134,10 +134,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -165,7 +171,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -224,14 +230,6 @@ "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -251,6 +249,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js index 66f0f4ac051..9003c1c1e8b 100644 --- a/apps/settings/l10n/es_PR.js +++ b/apps/settings/l10n/es_PR.js @@ -136,10 +136,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -167,7 +173,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -226,14 +232,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -253,6 +251,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json index b48f4e32b16..21e267849c4 100644 --- a/apps/settings/l10n/es_PR.json +++ b/apps/settings/l10n/es_PR.json @@ -134,10 +134,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -165,7 +171,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -224,14 +230,6 @@ "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -251,6 +249,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js index 66f0f4ac051..9003c1c1e8b 100644 --- a/apps/settings/l10n/es_PY.js +++ b/apps/settings/l10n/es_PY.js @@ -136,10 +136,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -167,7 +173,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -226,14 +232,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -253,6 +251,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json index b48f4e32b16..21e267849c4 100644 --- a/apps/settings/l10n/es_PY.json +++ b/apps/settings/l10n/es_PY.json @@ -134,10 +134,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -165,7 +171,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -224,14 +230,6 @@ "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -251,6 +249,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js index 6bce4d788a7..b26918992ef 100644 --- a/apps/settings/l10n/es_SV.js +++ b/apps/settings/l10n/es_SV.js @@ -141,10 +141,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -233,14 +239,6 @@ OC.L10N.register( "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -260,6 +258,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json index daa053e041e..b9408708fc3 100644 --- a/apps/settings/l10n/es_SV.json +++ b/apps/settings/l10n/es_SV.json @@ -139,10 +139,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -170,7 +176,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca de", "Full name" : "Nombre completo", @@ -231,14 +237,6 @@ "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", "You are using <strong>%s</strong>" : "Estás usando<strong>%s</strong>", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -258,6 +256,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js index 66f0f4ac051..9003c1c1e8b 100644 --- a/apps/settings/l10n/es_UY.js +++ b/apps/settings/l10n/es_UY.js @@ -136,10 +136,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -167,7 +173,7 @@ OC.L10N.register( "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -226,14 +232,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -253,6 +251,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json index b48f4e32b16..21e267849c4 100644 --- a/apps/settings/l10n/es_UY.json +++ b/apps/settings/l10n/es_UY.json @@ -134,10 +134,16 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta es la advertencia final: ¿Realmente deseas habilitar la encripción?", "No encryption module loaded, please enable an encryption module in the app menu." : "No se ha cargado un módulo de encripción, por favor habilita un módulo de encripción en el menú de la aplicación. ", "Select default encryption module:" : "Selecciona el modulo de encripción predeterminado:", + "Current password" : "Contraseña actual", + "New password" : "Nueva contraseña", + "Change password" : "Cambiar contraseña", "Your email address" : "Tu dirección de correo electrónico", "No email address set" : "No se ha establecido la dirección de correo electrónico", "Language" : "Idioma", "Help translate" : "Ayuda a traducir", + "Your phone number" : "Su número telefónico", + "Your Twitter handle" : "Tu cuenta de Twitter", + "Your website" : "Tu sitio web", "Add" : "Agregar", "Cancel" : "Cancelar", "{size} used" : "{size} usado", @@ -165,7 +171,7 @@ "Not saved" : "No guardado", "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", - "Address" : "Dirección", + "Location" : "Ubicación", "Avatar" : "Avatar", "About" : "Acerca", "Full name" : "Nombre completo", @@ -224,14 +230,6 @@ "png or jpg, max. 20 MB" : "png o jpg max. 20 MB", "Picture provided by original account" : "Imagen proporcionada por la cuenta original ", "Choose as profile picture" : "Seleccionar como foto del perfil", - "Your phone number" : "Su número telefónico", - "Your postal address" : "Tu dirección postal", - "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", - "Link https://…" : "Liga https:// ...", - "Twitter handle @…" : "Cuenta de twitter @...", - "Current password" : "Contraseña actual", - "New password" : "Nueva contraseña", - "Change password" : "Cambiar contraseña", "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Couldn't remove app." : "No fue posible eliminar la aplicación. ", @@ -251,6 +249,11 @@ "Background job didn’t run yet!" : "¡El trabajo de segundo plano aún no ha corrido!", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php necesita ser ejecutado por el usuario de sistema \"%s\".", "days" : "días", - "No display name set" : "No se ha establecido el nombre a desplegar" + "No display name set" : "No se ha establecido el nombre a desplegar", + "Address" : "Dirección", + "Your postal address" : "Tu dirección postal", + "It can take up to 24 hours before the account is displayed as verified." : "Puede tomar hasta 24 horas antes de que la cuenta se muestre como verificada. ", + "Link https://…" : "Liga https:// ...", + "Twitter handle @…" : "Cuenta de twitter @..." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js index 723ec7c8eb5..2f0a0134f1a 100644 --- a/apps/settings/l10n/et_EE.js +++ b/apps/settings/l10n/et_EE.js @@ -131,10 +131,15 @@ OC.L10N.register( "Remove group" : "Eemalda grupp", "You are about to remove the group {group}. The users will NOT be deleted." : "Sa oled eemaldamas gruppi {group}. Selles grupis olevaid kasutajaid EI kustutata.", "Please confirm the group removal " : "Palun kinnita grupi eemaldamine", + "Current password" : "Praegune parool", + "New password" : "Uus parool", + "Change password" : "Muuda parooli", "Your email address" : "Sinu e-posti aadress", "No email address set" : "E-posti aadressi pole veel määratud", "Language" : "Keel", "Help translate" : "Aita tõlkida", + "Your phone number" : "Sinu telefoninumber", + "Your website" : "Sinu veebileht", "Add" : "Lisa", "You do not have permissions to see the details of this user" : "Sul puuduvad õigused selle kasutaja üksikasjade vaatamiseks", "Delete user" : "Kustuta kasutaja", @@ -174,7 +179,7 @@ OC.L10N.register( "Not saved" : "Ei ole salvestatud", "Sending…" : "Saadan...", "Email sent" : "E-kiri on saadetud", - "Address" : "Aadress", + "Location" : "Asukoht", "Avatar" : "Avatar", "About" : "Info", "Full name" : "Täielik nimi", @@ -229,13 +234,7 @@ OC.L10N.register( "Choose as profile picture" : "Vali kui profiili pilt", "You are a member of the following groups:" : "Sa oled nende gruppide liige:", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Kasutusel on <strong>%1$s</strong>/ <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "Sinu telefoninumber", - "Your postal address" : "Sinu postiaadress", - "It can take up to 24 hours before the account is displayed as verified." : "Võib võtta kuni 24 tundi enne kui konto kuvatakse kui kinnitatud.", "Locale" : "Kasutuskoht", - "Current password" : "Praegune parool", - "New password" : "Uus parool", - "Change password" : "Muuda parooli", "Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud", "Migration started …" : "Kolimist on alustatud ...", "Couldn't remove app." : "Ei suutnud rakendit eemaldada.", @@ -250,6 +249,9 @@ OC.L10N.register( "Recommended" : "Soovitatud", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php tuleb käivitada süsteemikasutaja \"%s\" poolt.", "days" : "päeva", - "No display name set" : "Näidatavat nime pole veel määratud" + "No display name set" : "Näidatavat nime pole veel määratud", + "Address" : "Aadress", + "Your postal address" : "Sinu postiaadress", + "It can take up to 24 hours before the account is displayed as verified." : "Võib võtta kuni 24 tundi enne kui konto kuvatakse kui kinnitatud." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json index a14c01727e3..d15f419e0a3 100644 --- a/apps/settings/l10n/et_EE.json +++ b/apps/settings/l10n/et_EE.json @@ -129,10 +129,15 @@ "Remove group" : "Eemalda grupp", "You are about to remove the group {group}. The users will NOT be deleted." : "Sa oled eemaldamas gruppi {group}. Selles grupis olevaid kasutajaid EI kustutata.", "Please confirm the group removal " : "Palun kinnita grupi eemaldamine", + "Current password" : "Praegune parool", + "New password" : "Uus parool", + "Change password" : "Muuda parooli", "Your email address" : "Sinu e-posti aadress", "No email address set" : "E-posti aadressi pole veel määratud", "Language" : "Keel", "Help translate" : "Aita tõlkida", + "Your phone number" : "Sinu telefoninumber", + "Your website" : "Sinu veebileht", "Add" : "Lisa", "You do not have permissions to see the details of this user" : "Sul puuduvad õigused selle kasutaja üksikasjade vaatamiseks", "Delete user" : "Kustuta kasutaja", @@ -172,7 +177,7 @@ "Not saved" : "Ei ole salvestatud", "Sending…" : "Saadan...", "Email sent" : "E-kiri on saadetud", - "Address" : "Aadress", + "Location" : "Asukoht", "Avatar" : "Avatar", "About" : "Info", "Full name" : "Täielik nimi", @@ -227,13 +232,7 @@ "Choose as profile picture" : "Vali kui profiili pilt", "You are a member of the following groups:" : "Sa oled nende gruppide liige:", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Kasutusel on <strong>%1$s</strong>/ <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "Sinu telefoninumber", - "Your postal address" : "Sinu postiaadress", - "It can take up to 24 hours before the account is displayed as verified." : "Võib võtta kuni 24 tundi enne kui konto kuvatakse kui kinnitatud.", "Locale" : "Kasutuskoht", - "Current password" : "Praegune parool", - "New password" : "Uus parool", - "Change password" : "Muuda parooli", "Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud", "Migration started …" : "Kolimist on alustatud ...", "Couldn't remove app." : "Ei suutnud rakendit eemaldada.", @@ -248,6 +247,9 @@ "Recommended" : "Soovitatud", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php tuleb käivitada süsteemikasutaja \"%s\" poolt.", "days" : "päeva", - "No display name set" : "Näidatavat nime pole veel määratud" + "No display name set" : "Näidatavat nime pole veel määratud", + "Address" : "Aadress", + "Your postal address" : "Sinu postiaadress", + "It can take up to 24 hours before the account is displayed as verified." : "Võib võtta kuni 24 tundi enne kui konto kuvatakse kui kinnitatud." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js index 30887e82e71..cc7ff8d93df 100644 --- a/apps/settings/l10n/eu.js +++ b/apps/settings/l10n/eu.js @@ -249,10 +249,10 @@ OC.L10N.register( "Enable" : "Gaitu", "Unable to update profile default setting" : "Ezin izan da eguneratu profilaren ezarpen lehenetsia", "Server-side encryption" : "Zerbitzariaren aldeko zifratzea", - "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Zerbitzari-aldeko enkriptazioak zerbitzarira igotzen diren fitxategiak enkriptatzeabaimentzen du. Honek eraginkortasuna jaitsi dezake, beraz gaitu beharrezkoa bada soilik. ", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Zerbitzari-aldeko enkriptatzeak zerbitzarira kargatzen diren fitxategiak enkriptatzea baimentzen du. Honek eraginkortasuna jaitsi dezake, beraz gaitu beharrezkoa bada soilik. ", "Enable server-side encryption" : "Gaitu zerbitzariaren aldeko zifratzea", "Please read carefully before activating server-side encryption:" : "Irakurri arretaz zerbitzariaren aldeko zifratzea gaitu aurretik mesedez:", - "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Zifratzea gaitu ondoren zerbitzarira igotako fitxategi guztiak zifratu egingo dira . Zifratzea geroago desgaitu daiteke zifratze-modulu aktiboak funtzio hori onartzen badu eta aurrebaldintza guztiak (adibidez, berreskuratze-gako bat ezartzea) betetzen badira.", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Zifratzea gaitu ondoren zerbitzarira kargatutako fitxategi guztiak zifratu egingo dira . Zifratzea geroago desgaitu daiteke zifratze-modulu aktiboak funtzio hori onartzen badu eta aurrebaldintza guztiak (adibidez, berreskuratze-gako bat ezartzea) betetzen badira.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Zifratze hutsak ez du sistemaren segurtasuna bermatzen. Begiratu dokumentazioa zifratze-aplikazioak nola funtzionatzen duen jakiteko eta zein erabiltzaile-kasu onartzen den ezagutzeko.", "Be aware that encryption always increases the file size." : "Kontuan izan zifratzeak beti fitxategiaren tamaina handitzen duela.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zure datuen babeskopiak sortu beharko zenituzke aldizka, eta zifratuta badaude, ziurtatu zifratze-gakoen babeskopia ere egiten dela datuekin batera.", @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Ezabatu taldea", "You are about to remove the group {group}. The users will NOT be deleted." : "{group} taldea ezabatzera zoaz. Erabiltzaileak EZ dira ezabatuko.", "Please confirm the group removal " : "Mesedez, baieztatu taldearen ezabaketa", + "Current password" : "Uneko pasahitza", + "New password" : "Pasahitz berria", + "Change password" : "Aldatu pasahitza", "Your biography" : "Zure biografia", - "Unable to update biography" : "Ezin izan da biografia eguneratu", "Your full name" : "Zure izen osoa", - "Unable to update full name" : "Ezin izan da izen osoa eguneratu", - "No full name set" : "Ez da izen osoa ezarri", "Email options" : "Posta elektronikoaren aukerak", "Primary email for password reset and notifications" : "Pasahitz berrezartzeko eta jakinarazpenetarako posta elektroniko nagusia", "Remove primary email" : "Kendu posta elektroniko nagusia", @@ -287,13 +287,12 @@ OC.L10N.register( "No email address set" : "Ez da eposta helbidea ezarri", "Additional emails" : "Helbide elektroniko gehigarriak", "Your headline" : "Zure izenburua", - "Unable to update headline" : "Ezin izan da izenburua eguneratu", "Language" : "Hizkuntza", "Help translate" : "Lagundu itzultzen", "Unable to update language" : "Ezin izan da hizkuntza eguneratu", "No language set" : "Ez da hizkuntzarik ezarri", "Your organisation" : "Zure erakundea", - "Unable to update organisation" : "Ezin izan da erakundea eguneratu", + "Your phone number" : "Zure telefono zenbakia", "Edit your Profile visibility" : "Editatu profilaren ikusgarritasuna", "Enable Profile" : "Gaitu profila", "Unable to update profile enabled state" : "Ezin izan da profila gaitutako egoerara eguneratu", @@ -301,10 +300,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Ezin izan da {displayId}(r)en ikusgarritasuna eguneratu", "Your role" : "Zure rola", - "Unable to update role" : "Ezin izan da rola eguneratu", - "Change scope level of {accountProperty}, current scope is {scope}" : "Aldatu {accountProperty}-(r)en esparru-maila, unekoa {scope} esparru-maila da", - "Unable to update federation scope of the primary {accountProperty}" : "Ezin da eguneratu lehen mailako {accountProperty}-ren federazio-esparrua", - "Unable to update federation scope of additional {accountProperty}" : "Ezin da eguneratu {accountProperty} gehigarriaren federazio-esparrua", + "Your Twitter handle" : "Zure Twitter erabiltzailea", + "Your website" : "Zure web orria", "Add additional email" : "Gehitu e-posta gehigarria", "Add" : "Gehitu", "You do not have permissions to see the details of this user" : "Ez duzu baimenik erabiltzaile honen xehetasunak ikusteko", @@ -331,7 +328,7 @@ OC.L10N.register( "{size} used" : "{size} erabilita", "New user" : "Erabiltzaile berria", "Will be autogenerated" : "Automatikoki sortuko da", - "Display name" : "Erakutsi izena", + "Display name" : "Erakusteko izena", "Email" : "E-posta", "Default language" : "Hizkuntza lehenetsia", "Add a new user" : "Gehitu erabiltze berria", @@ -383,7 +380,7 @@ OC.L10N.register( "Not saved" : "Ez da gorde", "Sending…" : "Bidaltzen...", "Email sent" : "Eposta bidalia", - "Address" : "Helbidea", + "Location" : "Kokapena", "Avatar" : "Avatarra", "About" : "Honi buruz", "Full name" : "Izen osoa", @@ -443,15 +440,15 @@ OC.L10N.register( "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Egiaztatu zure Nextcloud instantziaren segurtasuna <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">gure segurtasun eskaneoa eginez ↗</a>.", "Version" : "Bertsioa", "You need to enable the File sharing App." : "Fitxategi partekatze aplikazioa gaitu behar duzu.", - "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Admin bezala partekatze portaerak zehazki konfigura daitezke. Dokumentazioaikusi informazio gehiagorako. ", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Admin bezala partekatze portaerak zehaztasunez konfigura daitezke. Ikusi dokumentazioa informazio gehiagorako. ", "Allow apps to use the Share API" : "Baimendu aplikazioak partekatzeko APIa erabiltzeko", - "Set default expiration date for shares" : "Partekatzeei defektuzko iraungitze data ezarri", + "Set default expiration date for shares" : "Partekatzeei iraungitze data lehenetsia ezarri", "Expire after" : "Iraungi honen ondoren", "day(s)" : "egun", "Enforce expiration date" : "Betearazi iraungitze-data", "Set default expiration date for shares to other servers" : "Ezarri beste zerbitzari batzuetarako partekatzeen iraungitze data lehenetsia", "Allow users to share via link and emails" : "Baimendu erabiltzaileak esteka eta e-postaren bidez partekatzea", - "Allow public uploads" : "Baimendu igoera publikoak", + "Allow public uploads" : "Baimendu karga publikoak", "Always ask for a password" : "Beti eskatu pasahitza", "Enforce password protection" : "Betearazi pasahitzaren babesa", "Exclude groups from password requirements:" : "Baztertu taldeak pasahitz eskakizunetatik:", @@ -469,7 +466,7 @@ OC.L10N.register( "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Baimendu automatikoki osatzea izen osoa edo helbide elektronikoa sartzerakoan (alde batera utziz falta den telefono-liburuarekin bat etortzea eta talde berean egotea)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Ohar mezua kargatzeko orriaren esteka publikoan erakutsi (fitxategi zerrenda ezkutatuta dagoenen bakarrik ikusten da.)", "This text will be shown on the public link upload page when the file list is hidden." : "Testu hau kargatzeko orriaren esteka publikoan erakutsiko da fitxategi zerrenda ezkutatuta dagoenean.", - "Default share permissions" : "Defektuzko partekatze baimenak", + "Default share permissions" : "Partekatze baimen lehenetsiak", "Reasons to use Nextcloud in your organization" : "Nextcloud zure erakundean erabiltzeko arrazoiak", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen}Nextcloud komunitateak{linkclose} garatuta, {githubopen}iturburu kodea{linkclose} {licenseopen}AGPL{linkclose} lizentziapean banatzen da.", "Like our Facebook page" : "Gure Facebook orrian Like egin", @@ -480,7 +477,7 @@ OC.L10N.register( "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Nextcloud komunitate bertsio honek ez du laguntza-zerbitzurik eta berehalako jakinarazpenak ez daude eskuragarri.", "Profile picture" : "Zure irudia", "Change privacy level of profile picture" : "Aldatu profileko irudiaren pribatutasun maila", - "Upload new" : "Igo berria", + "Upload new" : "Kargatu berria", "Select from Files" : "Aukeratu fitxategien artean", "Remove image" : "Kendu irudia", "png or jpg, max. 20 MB" : "png edo jpg, gehienez 20MB", @@ -490,19 +487,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Honako taldeetako kide zara:", "You are using <strong>%s</strong>" : "<strong>%s</strong> erabiltzen ari zara", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "<strong>%2$s</strong>tik <strong>%1$s</strong> erabiltzen ari zara (<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Aldatu telefono zenbakiaren pribatutasun maila", - "Your phone number" : "Zure telefono zenbakia", - "Change privacy level of address" : "Aldatu pribatutasun helbide maila", - "Your postal address" : "Zure helbidea", - "Change privacy level of website" : "Aldatu webgunearen pribatutasun maila", - "It can take up to 24 hours before the account is displayed as verified." : "24 ordu pasa daitezke kontua ziurtatua bezala agertu baino lehen", - "Link https://…" : "https://... esteka", - "Change privacy level of Twitter profile" : "Aldatu Twitter profilaren pribatutasun maila", - "Twitter handle @…" : "Twitter heldulekua @...", "Locale" : "Eskualdeko ezarpenak", - "Current password" : "Uneko pasahitza", - "New password" : "Pasahitz berria", - "Change password" : "Aldatu pasahitza", "Use a second factor besides your password to increase security for your account." : "Zure pasahitzaz gain bigarren faktore bat erabiltzeak zure kontua seguruago egingo du.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Hirugarrenen aplikazioak erabiltzen badituzu Nextcloud-era konektatzeko, ziurtatu bakoitzarentzako aplikazioaren pasahitza sortu eta konfiguratzen duzula bigarren faktorearen autentifikazioa gaitu aurretik.", "Migration in progress. Please wait until the migration is finished" : "Migratzen ari da. Itxaron migrazioa osatu arte.", @@ -536,7 +521,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Baimendu erabiltzaile-izena automatikoki osatzea izen osoa edo helbide elektronikoa idazterakoan (falta den telefono-agendaren bat-etortzea eta talde berean egotea alde batera utziz)", "Change privacy level of full name" : "Aldatu izen osoaren pribatutasun maila", "No display name set" : "Ez da bistaratze izena ezarri", + "Change privacy level of phone number" : "Aldatu telefono zenbakiaren pribatutasun maila", + "Address" : "Helbidea", + "Change privacy level of address" : "Aldatu pribatutasun helbide maila", + "Your postal address" : "Zure helbidea", + "Change privacy level of website" : "Aldatu webgunearen pribatutasun maila", + "It can take up to 24 hours before the account is displayed as verified." : "24 ordu pasa daitezke kontua ziurtatua bezala agertu baino lehen", + "Link https://…" : "https://... esteka", + "Change privacy level of Twitter profile" : "Aldatu Twitter profilaren pribatutasun maila", + "Twitter handle @…" : "Twitter heldulekua @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "OPcache gakoen gehienezko kopurua ia gainditzen da. Script guztiak cachean gorde daitezkeela ziurtatzeko, gomendatzen da <code>opcache.max_accelerated_files </code> aplikatzea zure PHP konfigurazioan <code> %s</code> baino balio handiagoarekin.", - "Change scope level of {accountProperty}" : "Aldatu {accountProperty}-(r)en esparru-maila" + "Unable to update biography" : "Ezin izan da biografia eguneratu", + "Unable to update full name" : "Ezin izan da izen osoa eguneratu", + "No full name set" : "Ez da izen osoa ezarri", + "Unable to update headline" : "Ezin izan da izenburua eguneratu", + "Unable to update organisation" : "Ezin izan da erakundea eguneratu", + "Unable to update role" : "Ezin izan da rola eguneratu", + "Change scope level of {accountProperty}" : "Aldatu {accountProperty}-(r)en esparru-maila", + "Unable to update federation scope of the primary {accountProperty}" : "Ezin da eguneratu lehen mailako {accountProperty}-ren federazio-esparrua", + "Unable to update federation scope of additional {accountProperty}" : "Ezin da eguneratu {accountProperty} gehigarriaren federazio-esparrua" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json index 5bfbb419ed0..c29490450a4 100644 --- a/apps/settings/l10n/eu.json +++ b/apps/settings/l10n/eu.json @@ -247,10 +247,10 @@ "Enable" : "Gaitu", "Unable to update profile default setting" : "Ezin izan da eguneratu profilaren ezarpen lehenetsia", "Server-side encryption" : "Zerbitzariaren aldeko zifratzea", - "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Zerbitzari-aldeko enkriptazioak zerbitzarira igotzen diren fitxategiak enkriptatzeabaimentzen du. Honek eraginkortasuna jaitsi dezake, beraz gaitu beharrezkoa bada soilik. ", + "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Zerbitzari-aldeko enkriptatzeak zerbitzarira kargatzen diren fitxategiak enkriptatzea baimentzen du. Honek eraginkortasuna jaitsi dezake, beraz gaitu beharrezkoa bada soilik. ", "Enable server-side encryption" : "Gaitu zerbitzariaren aldeko zifratzea", "Please read carefully before activating server-side encryption:" : "Irakurri arretaz zerbitzariaren aldeko zifratzea gaitu aurretik mesedez:", - "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Zifratzea gaitu ondoren zerbitzarira igotako fitxategi guztiak zifratu egingo dira . Zifratzea geroago desgaitu daiteke zifratze-modulu aktiboak funtzio hori onartzen badu eta aurrebaldintza guztiak (adibidez, berreskuratze-gako bat ezartzea) betetzen badira.", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Zifratzea gaitu ondoren zerbitzarira kargatutako fitxategi guztiak zifratu egingo dira . Zifratzea geroago desgaitu daiteke zifratze-modulu aktiboak funtzio hori onartzen badu eta aurrebaldintza guztiak (adibidez, berreskuratze-gako bat ezartzea) betetzen badira.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Zifratze hutsak ez du sistemaren segurtasuna bermatzen. Begiratu dokumentazioa zifratze-aplikazioak nola funtzionatzen duen jakiteko eta zein erabiltzaile-kasu onartzen den ezagutzeko.", "Be aware that encryption always increases the file size." : "Kontuan izan zifratzeak beti fitxategiaren tamaina handitzen duela.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Zure datuen babeskopiak sortu beharko zenituzke aldizka, eta zifratuta badaude, ziurtatu zifratze-gakoen babeskopia ere egiten dela datuekin batera.", @@ -263,11 +263,11 @@ "Remove group" : "Ezabatu taldea", "You are about to remove the group {group}. The users will NOT be deleted." : "{group} taldea ezabatzera zoaz. Erabiltzaileak EZ dira ezabatuko.", "Please confirm the group removal " : "Mesedez, baieztatu taldearen ezabaketa", + "Current password" : "Uneko pasahitza", + "New password" : "Pasahitz berria", + "Change password" : "Aldatu pasahitza", "Your biography" : "Zure biografia", - "Unable to update biography" : "Ezin izan da biografia eguneratu", "Your full name" : "Zure izen osoa", - "Unable to update full name" : "Ezin izan da izen osoa eguneratu", - "No full name set" : "Ez da izen osoa ezarri", "Email options" : "Posta elektronikoaren aukerak", "Primary email for password reset and notifications" : "Pasahitz berrezartzeko eta jakinarazpenetarako posta elektroniko nagusia", "Remove primary email" : "Kendu posta elektroniko nagusia", @@ -285,13 +285,12 @@ "No email address set" : "Ez da eposta helbidea ezarri", "Additional emails" : "Helbide elektroniko gehigarriak", "Your headline" : "Zure izenburua", - "Unable to update headline" : "Ezin izan da izenburua eguneratu", "Language" : "Hizkuntza", "Help translate" : "Lagundu itzultzen", "Unable to update language" : "Ezin izan da hizkuntza eguneratu", "No language set" : "Ez da hizkuntzarik ezarri", "Your organisation" : "Zure erakundea", - "Unable to update organisation" : "Ezin izan da erakundea eguneratu", + "Your phone number" : "Zure telefono zenbakia", "Edit your Profile visibility" : "Editatu profilaren ikusgarritasuna", "Enable Profile" : "Gaitu profila", "Unable to update profile enabled state" : "Ezin izan da profila gaitutako egoerara eguneratu", @@ -299,10 +298,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Ezin izan da {displayId}(r)en ikusgarritasuna eguneratu", "Your role" : "Zure rola", - "Unable to update role" : "Ezin izan da rola eguneratu", - "Change scope level of {accountProperty}, current scope is {scope}" : "Aldatu {accountProperty}-(r)en esparru-maila, unekoa {scope} esparru-maila da", - "Unable to update federation scope of the primary {accountProperty}" : "Ezin da eguneratu lehen mailako {accountProperty}-ren federazio-esparrua", - "Unable to update federation scope of additional {accountProperty}" : "Ezin da eguneratu {accountProperty} gehigarriaren federazio-esparrua", + "Your Twitter handle" : "Zure Twitter erabiltzailea", + "Your website" : "Zure web orria", "Add additional email" : "Gehitu e-posta gehigarria", "Add" : "Gehitu", "You do not have permissions to see the details of this user" : "Ez duzu baimenik erabiltzaile honen xehetasunak ikusteko", @@ -329,7 +326,7 @@ "{size} used" : "{size} erabilita", "New user" : "Erabiltzaile berria", "Will be autogenerated" : "Automatikoki sortuko da", - "Display name" : "Erakutsi izena", + "Display name" : "Erakusteko izena", "Email" : "E-posta", "Default language" : "Hizkuntza lehenetsia", "Add a new user" : "Gehitu erabiltze berria", @@ -381,7 +378,7 @@ "Not saved" : "Ez da gorde", "Sending…" : "Bidaltzen...", "Email sent" : "Eposta bidalia", - "Address" : "Helbidea", + "Location" : "Kokapena", "Avatar" : "Avatarra", "About" : "Honi buruz", "Full name" : "Izen osoa", @@ -441,15 +438,15 @@ "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Egiaztatu zure Nextcloud instantziaren segurtasuna <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">gure segurtasun eskaneoa eginez ↗</a>.", "Version" : "Bertsioa", "You need to enable the File sharing App." : "Fitxategi partekatze aplikazioa gaitu behar duzu.", - "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Admin bezala partekatze portaerak zehazki konfigura daitezke. Dokumentazioaikusi informazio gehiagorako. ", + "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Admin bezala partekatze portaerak zehaztasunez konfigura daitezke. Ikusi dokumentazioa informazio gehiagorako. ", "Allow apps to use the Share API" : "Baimendu aplikazioak partekatzeko APIa erabiltzeko", - "Set default expiration date for shares" : "Partekatzeei defektuzko iraungitze data ezarri", + "Set default expiration date for shares" : "Partekatzeei iraungitze data lehenetsia ezarri", "Expire after" : "Iraungi honen ondoren", "day(s)" : "egun", "Enforce expiration date" : "Betearazi iraungitze-data", "Set default expiration date for shares to other servers" : "Ezarri beste zerbitzari batzuetarako partekatzeen iraungitze data lehenetsia", "Allow users to share via link and emails" : "Baimendu erabiltzaileak esteka eta e-postaren bidez partekatzea", - "Allow public uploads" : "Baimendu igoera publikoak", + "Allow public uploads" : "Baimendu karga publikoak", "Always ask for a password" : "Beti eskatu pasahitza", "Enforce password protection" : "Betearazi pasahitzaren babesa", "Exclude groups from password requirements:" : "Baztertu taldeak pasahitz eskakizunetatik:", @@ -467,7 +464,7 @@ "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Baimendu automatikoki osatzea izen osoa edo helbide elektronikoa sartzerakoan (alde batera utziz falta den telefono-liburuarekin bat etortzea eta talde berean egotea)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Ohar mezua kargatzeko orriaren esteka publikoan erakutsi (fitxategi zerrenda ezkutatuta dagoenen bakarrik ikusten da.)", "This text will be shown on the public link upload page when the file list is hidden." : "Testu hau kargatzeko orriaren esteka publikoan erakutsiko da fitxategi zerrenda ezkutatuta dagoenean.", - "Default share permissions" : "Defektuzko partekatze baimenak", + "Default share permissions" : "Partekatze baimen lehenetsiak", "Reasons to use Nextcloud in your organization" : "Nextcloud zure erakundean erabiltzeko arrazoiak", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen}Nextcloud komunitateak{linkclose} garatuta, {githubopen}iturburu kodea{linkclose} {licenseopen}AGPL{linkclose} lizentziapean banatzen da.", "Like our Facebook page" : "Gure Facebook orrian Like egin", @@ -478,7 +475,7 @@ "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Nextcloud komunitate bertsio honek ez du laguntza-zerbitzurik eta berehalako jakinarazpenak ez daude eskuragarri.", "Profile picture" : "Zure irudia", "Change privacy level of profile picture" : "Aldatu profileko irudiaren pribatutasun maila", - "Upload new" : "Igo berria", + "Upload new" : "Kargatu berria", "Select from Files" : "Aukeratu fitxategien artean", "Remove image" : "Kendu irudia", "png or jpg, max. 20 MB" : "png edo jpg, gehienez 20MB", @@ -488,19 +485,7 @@ "You are a member of the following groups:" : "Honako taldeetako kide zara:", "You are using <strong>%s</strong>" : "<strong>%s</strong> erabiltzen ari zara", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "<strong>%2$s</strong>tik <strong>%1$s</strong> erabiltzen ari zara (<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Aldatu telefono zenbakiaren pribatutasun maila", - "Your phone number" : "Zure telefono zenbakia", - "Change privacy level of address" : "Aldatu pribatutasun helbide maila", - "Your postal address" : "Zure helbidea", - "Change privacy level of website" : "Aldatu webgunearen pribatutasun maila", - "It can take up to 24 hours before the account is displayed as verified." : "24 ordu pasa daitezke kontua ziurtatua bezala agertu baino lehen", - "Link https://…" : "https://... esteka", - "Change privacy level of Twitter profile" : "Aldatu Twitter profilaren pribatutasun maila", - "Twitter handle @…" : "Twitter heldulekua @...", "Locale" : "Eskualdeko ezarpenak", - "Current password" : "Uneko pasahitza", - "New password" : "Pasahitz berria", - "Change password" : "Aldatu pasahitza", "Use a second factor besides your password to increase security for your account." : "Zure pasahitzaz gain bigarren faktore bat erabiltzeak zure kontua seguruago egingo du.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Hirugarrenen aplikazioak erabiltzen badituzu Nextcloud-era konektatzeko, ziurtatu bakoitzarentzako aplikazioaren pasahitza sortu eta konfiguratzen duzula bigarren faktorearen autentifikazioa gaitu aurretik.", "Migration in progress. Please wait until the migration is finished" : "Migratzen ari da. Itxaron migrazioa osatu arte.", @@ -534,7 +519,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Baimendu erabiltzaile-izena automatikoki osatzea izen osoa edo helbide elektronikoa idazterakoan (falta den telefono-agendaren bat-etortzea eta talde berean egotea alde batera utziz)", "Change privacy level of full name" : "Aldatu izen osoaren pribatutasun maila", "No display name set" : "Ez da bistaratze izena ezarri", + "Change privacy level of phone number" : "Aldatu telefono zenbakiaren pribatutasun maila", + "Address" : "Helbidea", + "Change privacy level of address" : "Aldatu pribatutasun helbide maila", + "Your postal address" : "Zure helbidea", + "Change privacy level of website" : "Aldatu webgunearen pribatutasun maila", + "It can take up to 24 hours before the account is displayed as verified." : "24 ordu pasa daitezke kontua ziurtatua bezala agertu baino lehen", + "Link https://…" : "https://... esteka", + "Change privacy level of Twitter profile" : "Aldatu Twitter profilaren pribatutasun maila", + "Twitter handle @…" : "Twitter heldulekua @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "OPcache gakoen gehienezko kopurua ia gainditzen da. Script guztiak cachean gorde daitezkeela ziurtatzeko, gomendatzen da <code>opcache.max_accelerated_files </code> aplikatzea zure PHP konfigurazioan <code> %s</code> baino balio handiagoarekin.", - "Change scope level of {accountProperty}" : "Aldatu {accountProperty}-(r)en esparru-maila" + "Unable to update biography" : "Ezin izan da biografia eguneratu", + "Unable to update full name" : "Ezin izan da izen osoa eguneratu", + "No full name set" : "Ez da izen osoa ezarri", + "Unable to update headline" : "Ezin izan da izenburua eguneratu", + "Unable to update organisation" : "Ezin izan da erakundea eguneratu", + "Unable to update role" : "Ezin izan da rola eguneratu", + "Change scope level of {accountProperty}" : "Aldatu {accountProperty}-(r)en esparru-maila", + "Unable to update federation scope of the primary {accountProperty}" : "Ezin da eguneratu lehen mailako {accountProperty}-ren federazio-esparrua", + "Unable to update federation scope of additional {accountProperty}" : "Ezin da eguneratu {accountProperty} gehigarriaren federazio-esparrua" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js index 0fda68cf2c9..ff3566c9e9e 100644 --- a/apps/settings/l10n/fa.js +++ b/apps/settings/l10n/fa.js @@ -208,11 +208,15 @@ OC.L10N.register( "Remove group" : "حذف گروه", "You are about to remove the group {group}. The users will NOT be deleted." : "شما در حال حذف گروه {group} هستید. کاربران حذف نخواهند شد.", "Please confirm the group removal " : "لطفاً حذف گروه را تأیید کنید", + "Current password" : "گذرواژه کنونی", + "New password" : "گذرواژه جدید", + "Change password" : "تغییر گذر واژه", "Your email address" : "پست الکترونیکی شما", "No email address set" : "آدرسایمیلی تنظیم نشده است", "Language" : "زبان", "Help translate" : "به ترجمه آن کمک کنید", "No language set" : "زبانی تنظیم نشده است.", + "Your phone number" : "شماره تلفن شما", "Add" : "افزودن", "You do not have permissions to see the details of this user" : "شما مجوز دیدن جزئیات این کاربر را ندارید", "Add new password" : "رمزعبور جدید اضافه کنید", @@ -271,7 +275,7 @@ OC.L10N.register( "Not saved" : "ناموفق در ذخیره", "Sending…" : "در حال ارسال", "Email sent" : "ایمیل ارسال شد", - "Address" : "آدرس", + "Location" : "محل", "Avatar" : "آواتار", "About" : "درباره", "Full name" : "نام کامل", @@ -350,15 +354,7 @@ OC.L10N.register( "You are a member of the following groups:" : "شما عضو گروههای زیر هستید:", "You are using <strong>%s</strong>" : "شما با استفاده از <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "شما با استفاده از <strong>%1$s</strong> از <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "شماره تلفن شما", - "Your postal address" : "آدرس پستی شما", - "It can take up to 24 hours before the account is displayed as verified." : "24 ساعت طول می کشد تا اعتبار حساب تأیید شود.", - "Link https://…" : "پیوند https://…", - "Twitter handle @…" : "دسته توییتر @…", "Locale" : "محل", - "Current password" : "گذرواژه کنونی", - "New password" : "گذرواژه جدید", - "Change password" : "تغییر گذر واژه", "Use a second factor besides your password to increase security for your account." : "برای افزایش امنیت حساب کاربری خود ، از یک عامل دوم علاوه بر رمز عبور خود استفاده کنید.", "Migration in progress. Please wait until the migration is finished" : "مهاجرت در حال اجراست. لطفا تا اتمام مهاجرت صبر کنید", "Migration started …" : "مهاجرت شروع شد...", @@ -382,6 +378,11 @@ OC.L10N.register( "Recommended" : "پیشنهاد شده", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php باید توسط کاربر سیستم \"%s\" اجرا شود.", "days" : "روز", - "No display name set" : "هیچ نام نمایشی تعیین نشده است" + "No display name set" : "هیچ نام نمایشی تعیین نشده است", + "Address" : "آدرس", + "Your postal address" : "آدرس پستی شما", + "It can take up to 24 hours before the account is displayed as verified." : "24 ساعت طول می کشد تا اعتبار حساب تأیید شود.", + "Link https://…" : "پیوند https://…", + "Twitter handle @…" : "دسته توییتر @…" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json index b0490f9bb26..d8946971118 100644 --- a/apps/settings/l10n/fa.json +++ b/apps/settings/l10n/fa.json @@ -206,11 +206,15 @@ "Remove group" : "حذف گروه", "You are about to remove the group {group}. The users will NOT be deleted." : "شما در حال حذف گروه {group} هستید. کاربران حذف نخواهند شد.", "Please confirm the group removal " : "لطفاً حذف گروه را تأیید کنید", + "Current password" : "گذرواژه کنونی", + "New password" : "گذرواژه جدید", + "Change password" : "تغییر گذر واژه", "Your email address" : "پست الکترونیکی شما", "No email address set" : "آدرسایمیلی تنظیم نشده است", "Language" : "زبان", "Help translate" : "به ترجمه آن کمک کنید", "No language set" : "زبانی تنظیم نشده است.", + "Your phone number" : "شماره تلفن شما", "Add" : "افزودن", "You do not have permissions to see the details of this user" : "شما مجوز دیدن جزئیات این کاربر را ندارید", "Add new password" : "رمزعبور جدید اضافه کنید", @@ -269,7 +273,7 @@ "Not saved" : "ناموفق در ذخیره", "Sending…" : "در حال ارسال", "Email sent" : "ایمیل ارسال شد", - "Address" : "آدرس", + "Location" : "محل", "Avatar" : "آواتار", "About" : "درباره", "Full name" : "نام کامل", @@ -348,15 +352,7 @@ "You are a member of the following groups:" : "شما عضو گروههای زیر هستید:", "You are using <strong>%s</strong>" : "شما با استفاده از <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "شما با استفاده از <strong>%1$s</strong> از <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "شماره تلفن شما", - "Your postal address" : "آدرس پستی شما", - "It can take up to 24 hours before the account is displayed as verified." : "24 ساعت طول می کشد تا اعتبار حساب تأیید شود.", - "Link https://…" : "پیوند https://…", - "Twitter handle @…" : "دسته توییتر @…", "Locale" : "محل", - "Current password" : "گذرواژه کنونی", - "New password" : "گذرواژه جدید", - "Change password" : "تغییر گذر واژه", "Use a second factor besides your password to increase security for your account." : "برای افزایش امنیت حساب کاربری خود ، از یک عامل دوم علاوه بر رمز عبور خود استفاده کنید.", "Migration in progress. Please wait until the migration is finished" : "مهاجرت در حال اجراست. لطفا تا اتمام مهاجرت صبر کنید", "Migration started …" : "مهاجرت شروع شد...", @@ -380,6 +376,11 @@ "Recommended" : "پیشنهاد شده", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php باید توسط کاربر سیستم \"%s\" اجرا شود.", "days" : "روز", - "No display name set" : "هیچ نام نمایشی تعیین نشده است" + "No display name set" : "هیچ نام نمایشی تعیین نشده است", + "Address" : "آدرس", + "Your postal address" : "آدرس پستی شما", + "It can take up to 24 hours before the account is displayed as verified." : "24 ساعت طول می کشد تا اعتبار حساب تأیید شود.", + "Link https://…" : "پیوند https://…", + "Twitter handle @…" : "دسته توییتر @…" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js index 6de23e0d397..df8d5a0972c 100644 --- a/apps/settings/l10n/fi.js +++ b/apps/settings/l10n/fi.js @@ -58,6 +58,7 @@ OC.L10N.register( "Unable to change personal password" : "Henkilökohtaista salasanaa ei voitu vaihtaa", "Saved" : "Tallennettu", "No user supplied" : "Käyttäjää ei määritetty", + "Unable to change password. Password too long." : "Salasanaa ei voitu vaihtaa. Salasana on liian pitkä.", "Authentication error" : "Tunnistautumisvirhe", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Anna ylläpitäjän palautussalasana; muuten kaikki käyttäjien data menetetään.", "Wrong admin recovery password. Please check the password and try again." : "Väärä ylläpitäjän salasana. Tarkista salasana ja yritä uudelleen.", @@ -214,6 +215,7 @@ OC.L10N.register( "Server-side encryption" : "Palvelinpään salaus", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Palvelimelle ladatut tiedostot voidaan salata. Salaus aiheuttaa muun muassa palvelimen suorituskyvyn laskua, joten ota salaus käyttöön vain tarvittaessa.", "Enable server-side encryption" : "Käytä palvelinpään salausta", + "Please read carefully before activating server-side encryption:" : "Lue tarkasti, ennen kuin otat palvelinpään salauksen käyttöön:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Kun salaus on otettu käyttöön, käyttöönoton jälkeen palvelimelle ladatut tiedostot salataan palvelimen ollessa lepotilassa. Salauksen ottaminen pois päältä myöhemmin on mahdollista vain, jos aktiivinen salausmoduuli tukee toiminta ja kaikki muut vaatimukset (kuten palautusavaimen asettaminen) täyttyvät.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Salaus sellaisenaan ei takaa järjestelmäsi turvallisuutta. Tutustu dokumentaation saadaksesi lisätietoja, miten salaussovellus toimii ja nähdäksesi tuettuja käyttötapauksia.", "Be aware that encryption always increases the file size." : "Ota huomioon, että salaus kasvattaa aina tiedostojen kokoa.", @@ -225,10 +227,11 @@ OC.L10N.register( "Remove group" : "Poista ryhmä", "You are about to remove the group {group}. The users will NOT be deleted." : "Olet aikeissa poistaa ryhmän {group}. Käyttäjiä EI poisteta!", "Please confirm the group removal " : "Vahvista ryhmän poistaminen", + "Current password" : "Nykyinen salasana", + "New password" : "Uusi salasana", + "Change password" : "Vaihda salasana", "Your biography" : "Sinun elämäkertasi", "Your full name" : "Koko nimesi", - "Unable to update full name" : "Koko nimeä ei voi päivittää", - "No full name set" : "Koko nimeä ei ole asetettu", "Email options" : "Sähköpostiasetukset", "Primary email for password reset and notifications" : "Ensisijainen sähköposti salasanan nollaamista ja ilmoituksia varten", "Remove primary email" : "Poista ensisijainen sähköpostiosoite", @@ -248,11 +251,12 @@ OC.L10N.register( "Unable to update language" : "Kieltä ei voi päivittää", "No language set" : "Kieltä ei ole asetettu", "Your organisation" : "Organisaatiosi", - "Unable to update organisation" : "Organisaatiota ei voi päivittää", + "Your phone number" : "Puhelinnumerosi", "Edit your Profile visibility" : "Muokkaa profiilisi näkyvyyttä", "Enable Profile" : "Käytä profiilia", "Your role" : "Roolisi", - "Unable to update role" : "Roolin päivittäminen ei onnistu", + "Your Twitter handle" : "Twitter-tunnuksesi", + "Your website" : "Verkkosivustosi", "Add" : "Lisää", "You do not have permissions to see the details of this user" : "Käyttöoikeutesi eivät riitä tämän käyttäjän tietojen näkemiseen", "Add new password" : "Lisää uusi salasana", @@ -328,7 +332,7 @@ OC.L10N.register( "Not saved" : "Ei tallennettu", "Sending…" : "Lähetetään…", "Email sent" : "Sähköposti lähetetty", - "Address" : "Osoite", + "Location" : "Sijainti", "Avatar" : "Profiilikuva", "About" : "Tietoja", "Full name" : "Koko nimi", @@ -350,6 +354,7 @@ OC.L10N.register( "An error occured during the request. Unable to proceed." : "Pyynnön aikana tapahtui virhe. Jatkaminen ei onnistu.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Sovellus on käytössä, mutta se tulee päivittää. Sinut ohjataan sovelluksen päivityssivulle viiden sekunnin kuluttua.", "Error: This app cannot be enabled because it makes the server unstable" : "Virhe: Sovellusta ei voida ottaa käyttöön, koska se aiheuttaa palvelimen epävakauden", + "User already exists." : "Käyttäjä on jo olemassa.", "Administrator documentation" : "Ylläpidon dokumentaatio", "Documentation" : "Dokumentaatio", "Forum" : "Keskustelupalsta", @@ -422,19 +427,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Olet seuraavien ryhmien jäsen:", "You are using <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Käytössäsi on <strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Muuta puhelinnumeron yksityisyystasoa", - "Your phone number" : "Puhelinnumerosi", - "Change privacy level of address" : "Muuta osoitteen yksityisyystasoa", - "Your postal address" : "Postiosoitteesi", - "Change privacy level of website" : "Muuta verkkosivuston yksityisyystasoa", - "It can take up to 24 hours before the account is displayed as verified." : "Saattaa kestää jopa 24 tuntia, ennen kuin tili näytetään vahvistettuna.", - "Link https://…" : "Linkki https://…", - "Change privacy level of Twitter profile" : "Muuta Twitter-tunnuksen yksityisyystasoa", - "Twitter handle @…" : "Twitter-tunnus @…", "Locale" : "Aluekohtainen asetus", - "Current password" : "Nykyinen salasana", - "New password" : "Uusi salasana", - "Change password" : "Vaihda salasana", "Use a second factor besides your password to increase security for your account." : "Käytä toista vaihetta salasanasi lisäksi parantaaksesi tilisi tietoturvaa.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Jos yhdistät kolmannen osapuolen ohjelmia Nextcloudiin, määritä niille sovellussalasanat ennen kaksiosaisen todentamismenetelmän käyttöönottoa.", "Migration in progress. Please wait until the migration is finished" : "Migraatio on kesken. Odota kunnes migraatio valmistuu", @@ -463,6 +456,19 @@ OC.L10N.register( "The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".", "days" : "päivän jälkeen", "Change privacy level of full name" : "Muuta koko nimen yksityisyystasoa", - "No display name set" : "Näyttönimeä ei ole asetettu" + "No display name set" : "Näyttönimeä ei ole asetettu", + "Change privacy level of phone number" : "Muuta puhelinnumeron yksityisyystasoa", + "Address" : "Osoite", + "Change privacy level of address" : "Muuta osoitteen yksityisyystasoa", + "Your postal address" : "Postiosoitteesi", + "Change privacy level of website" : "Muuta verkkosivuston yksityisyystasoa", + "It can take up to 24 hours before the account is displayed as verified." : "Saattaa kestää jopa 24 tuntia, ennen kuin tili näytetään vahvistettuna.", + "Link https://…" : "Linkki https://…", + "Change privacy level of Twitter profile" : "Muuta Twitter-tunnuksen yksityisyystasoa", + "Twitter handle @…" : "Twitter-tunnus @…", + "Unable to update full name" : "Koko nimeä ei voi päivittää", + "No full name set" : "Koko nimeä ei ole asetettu", + "Unable to update organisation" : "Organisaatiota ei voi päivittää", + "Unable to update role" : "Roolin päivittäminen ei onnistu" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json index 12c0a92029e..da2d65c5c98 100644 --- a/apps/settings/l10n/fi.json +++ b/apps/settings/l10n/fi.json @@ -56,6 +56,7 @@ "Unable to change personal password" : "Henkilökohtaista salasanaa ei voitu vaihtaa", "Saved" : "Tallennettu", "No user supplied" : "Käyttäjää ei määritetty", + "Unable to change password. Password too long." : "Salasanaa ei voitu vaihtaa. Salasana on liian pitkä.", "Authentication error" : "Tunnistautumisvirhe", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Anna ylläpitäjän palautussalasana; muuten kaikki käyttäjien data menetetään.", "Wrong admin recovery password. Please check the password and try again." : "Väärä ylläpitäjän salasana. Tarkista salasana ja yritä uudelleen.", @@ -212,6 +213,7 @@ "Server-side encryption" : "Palvelinpään salaus", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Palvelimelle ladatut tiedostot voidaan salata. Salaus aiheuttaa muun muassa palvelimen suorituskyvyn laskua, joten ota salaus käyttöön vain tarvittaessa.", "Enable server-side encryption" : "Käytä palvelinpään salausta", + "Please read carefully before activating server-side encryption:" : "Lue tarkasti, ennen kuin otat palvelinpään salauksen käyttöön:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Kun salaus on otettu käyttöön, käyttöönoton jälkeen palvelimelle ladatut tiedostot salataan palvelimen ollessa lepotilassa. Salauksen ottaminen pois päältä myöhemmin on mahdollista vain, jos aktiivinen salausmoduuli tukee toiminta ja kaikki muut vaatimukset (kuten palautusavaimen asettaminen) täyttyvät.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Salaus sellaisenaan ei takaa järjestelmäsi turvallisuutta. Tutustu dokumentaation saadaksesi lisätietoja, miten salaussovellus toimii ja nähdäksesi tuettuja käyttötapauksia.", "Be aware that encryption always increases the file size." : "Ota huomioon, että salaus kasvattaa aina tiedostojen kokoa.", @@ -223,10 +225,11 @@ "Remove group" : "Poista ryhmä", "You are about to remove the group {group}. The users will NOT be deleted." : "Olet aikeissa poistaa ryhmän {group}. Käyttäjiä EI poisteta!", "Please confirm the group removal " : "Vahvista ryhmän poistaminen", + "Current password" : "Nykyinen salasana", + "New password" : "Uusi salasana", + "Change password" : "Vaihda salasana", "Your biography" : "Sinun elämäkertasi", "Your full name" : "Koko nimesi", - "Unable to update full name" : "Koko nimeä ei voi päivittää", - "No full name set" : "Koko nimeä ei ole asetettu", "Email options" : "Sähköpostiasetukset", "Primary email for password reset and notifications" : "Ensisijainen sähköposti salasanan nollaamista ja ilmoituksia varten", "Remove primary email" : "Poista ensisijainen sähköpostiosoite", @@ -246,11 +249,12 @@ "Unable to update language" : "Kieltä ei voi päivittää", "No language set" : "Kieltä ei ole asetettu", "Your organisation" : "Organisaatiosi", - "Unable to update organisation" : "Organisaatiota ei voi päivittää", + "Your phone number" : "Puhelinnumerosi", "Edit your Profile visibility" : "Muokkaa profiilisi näkyvyyttä", "Enable Profile" : "Käytä profiilia", "Your role" : "Roolisi", - "Unable to update role" : "Roolin päivittäminen ei onnistu", + "Your Twitter handle" : "Twitter-tunnuksesi", + "Your website" : "Verkkosivustosi", "Add" : "Lisää", "You do not have permissions to see the details of this user" : "Käyttöoikeutesi eivät riitä tämän käyttäjän tietojen näkemiseen", "Add new password" : "Lisää uusi salasana", @@ -326,7 +330,7 @@ "Not saved" : "Ei tallennettu", "Sending…" : "Lähetetään…", "Email sent" : "Sähköposti lähetetty", - "Address" : "Osoite", + "Location" : "Sijainti", "Avatar" : "Profiilikuva", "About" : "Tietoja", "Full name" : "Koko nimi", @@ -348,6 +352,7 @@ "An error occured during the request. Unable to proceed." : "Pyynnön aikana tapahtui virhe. Jatkaminen ei onnistu.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Sovellus on käytössä, mutta se tulee päivittää. Sinut ohjataan sovelluksen päivityssivulle viiden sekunnin kuluttua.", "Error: This app cannot be enabled because it makes the server unstable" : "Virhe: Sovellusta ei voida ottaa käyttöön, koska se aiheuttaa palvelimen epävakauden", + "User already exists." : "Käyttäjä on jo olemassa.", "Administrator documentation" : "Ylläpidon dokumentaatio", "Documentation" : "Dokumentaatio", "Forum" : "Keskustelupalsta", @@ -420,19 +425,7 @@ "You are a member of the following groups:" : "Olet seuraavien ryhmien jäsen:", "You are using <strong>%s</strong>" : "Käytössäsi on <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Käytössäsi on <strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Muuta puhelinnumeron yksityisyystasoa", - "Your phone number" : "Puhelinnumerosi", - "Change privacy level of address" : "Muuta osoitteen yksityisyystasoa", - "Your postal address" : "Postiosoitteesi", - "Change privacy level of website" : "Muuta verkkosivuston yksityisyystasoa", - "It can take up to 24 hours before the account is displayed as verified." : "Saattaa kestää jopa 24 tuntia, ennen kuin tili näytetään vahvistettuna.", - "Link https://…" : "Linkki https://…", - "Change privacy level of Twitter profile" : "Muuta Twitter-tunnuksen yksityisyystasoa", - "Twitter handle @…" : "Twitter-tunnus @…", "Locale" : "Aluekohtainen asetus", - "Current password" : "Nykyinen salasana", - "New password" : "Uusi salasana", - "Change password" : "Vaihda salasana", "Use a second factor besides your password to increase security for your account." : "Käytä toista vaihetta salasanasi lisäksi parantaaksesi tilisi tietoturvaa.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Jos yhdistät kolmannen osapuolen ohjelmia Nextcloudiin, määritä niille sovellussalasanat ennen kaksiosaisen todentamismenetelmän käyttöönottoa.", "Migration in progress. Please wait until the migration is finished" : "Migraatio on kesken. Odota kunnes migraatio valmistuu", @@ -461,6 +454,19 @@ "The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".", "days" : "päivän jälkeen", "Change privacy level of full name" : "Muuta koko nimen yksityisyystasoa", - "No display name set" : "Näyttönimeä ei ole asetettu" + "No display name set" : "Näyttönimeä ei ole asetettu", + "Change privacy level of phone number" : "Muuta puhelinnumeron yksityisyystasoa", + "Address" : "Osoite", + "Change privacy level of address" : "Muuta osoitteen yksityisyystasoa", + "Your postal address" : "Postiosoitteesi", + "Change privacy level of website" : "Muuta verkkosivuston yksityisyystasoa", + "It can take up to 24 hours before the account is displayed as verified." : "Saattaa kestää jopa 24 tuntia, ennen kuin tili näytetään vahvistettuna.", + "Link https://…" : "Linkki https://…", + "Change privacy level of Twitter profile" : "Muuta Twitter-tunnuksen yksityisyystasoa", + "Twitter handle @…" : "Twitter-tunnus @…", + "Unable to update full name" : "Koko nimeä ei voi päivittää", + "No full name set" : "Koko nimeä ei ole asetettu", + "Unable to update organisation" : "Organisaatiota ei voi päivittää", + "Unable to update role" : "Roolin päivittäminen ei onnistu" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js index 962cd67ffd0..9c0586d2c70 100644 --- a/apps/settings/l10n/fr.js +++ b/apps/settings/l10n/fr.js @@ -54,9 +54,13 @@ OC.L10N.register( "Remote wipe was started on %1$s" : "Effaçage distant démarré pour%1$s", "Remote wipe has finished on %1$s" : "Effaçage distant terminé pour %1$s", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié", + "Could not remove app." : "Impossible de supprimer l'app.", + "Could not update app." : "Impossible de mettre à jour l'app.", "Wrong password" : "Mot de passe incorrect", + "Unable to change personal password" : "Impossible de changer le mot de passe personnel", "Saved" : "Sauvegardé", "No user supplied" : "Aucun utilisateur fourni", + "Unable to change password. Password too long." : "Impossible de modifier le mot de passe. Le mot de passe est trop long.", "Authentication error" : "Erreur d'authentification", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Veuillez fournir un mot de passe administrateur de récupération de données, sinon toutes les données utilisateur seront perdues.", "Wrong admin recovery password. Please check the password and try again." : "Mot de passe administrateur de récupération de données non valable. Veuillez vérifier le mot de passe et essayer à nouveau.", @@ -107,7 +111,7 @@ OC.L10N.register( "Administration" : "Administration", "Additional settings" : "Paramètres supplémentaires", "Admin privileges" : "Privilèges d'administrateur", - "Groupware" : "Travail collaboratif", + "Groupware" : "Groupware", "Overview" : "Vue d'ensemble", "Basic settings" : "Paramètres de base", "Sharing" : "Partage", @@ -125,6 +129,7 @@ OC.L10N.register( "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Une tâche en arrière-plan qui vérifie les certificats SSL importés par l’utilisateur est en attente. Veuillez vérifier plus tard.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Certains certificats SSL importés par les utilisateurs sont présents et ne sont plus utilisés avec Nextcloud 21. Ils peuvent être importés par l'interface en ligne de commande via la commande \"occ security:certificates:import\". Leurs chemins dans le dossier data sont affichés ci-dessous.", "The old server-side-encryption format is enabled. We recommend disabling this." : "L'ancien format de chiffrement côté serveur est activé. Nous recommandons de le désactiver.", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Image du profil, nom complet, courriel, numéro de téléphone, adresse, site web, Twitter, organisation, rôle, titre, biographie, et si votre profil est activé", "Nextcloud settings" : "Paramètres Nextcloud", "Administration privileges" : "Privilèges d'administration", "Here you can decide which group can access certain sections of the administration settings." : "Ici, vous pouvez décider quel groupe peut accéder à certaines sections des paramètres d'administration.", @@ -211,13 +216,22 @@ OC.L10N.register( "Copied!" : "Copié !", "Copy" : "Copier", "Could not copy app password. Please copy it manually." : "Impossible de copier le mot de passe de l'application. Merci de le copier manuellement.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Pour que le serveur fonctionne correctement, il est important de configurer correctement les tâches d'arrière-plan. Cron est le paramètre recommandé. Veuillez consulter la documentation pour plus d'informations.", + "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "Exécuter une tâche à chaque chargement de page. Cas d'utilisation : Instance avec un seul utilisateur.", + "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php est enregistré dans un service webcron pour appeler cron.php toutes les 5 minutes via HTTP. Cas d'utilisation : Très petite instance (1-5 utilisateurs selon l'utilisation).", + "Cron (Recommended)" : "Cron (Recommandé)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pour l'exécuter, vous devez avoir l'extension PHP POSIX. Regarder la {linkstart}documentation PHP{linkend} pour plus de détails.", "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Utiliser le service cron du système pour appeler le fichier 'cron.php' toutes les 5 minutes.", "Profile" : "Profil", + "Enable or disable profile by default for new users." : "Activer ou désactiver le profil par défaut pour les nouveaux utilisateurs.", "Enable" : "Activer", + "Unable to update profile default setting" : "Impossible de mettre à jour les paramètres par défaut du profil", "Server-side encryption" : "Chiffrement côté serveur", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Le chiffrement côté serveur permet de chiffrer les fichiers qui sont téléversés sur ce serveur. Cela implique des limitations comme une performance moindre, donc activez-le seulement si nécessaire.", "Enable server-side encryption" : "Activer le chiffrement côté serveur", + "Please read carefully before activating server-side encryption:" : "Veuillez lire attentivement avant d’activer le chiffrement côté serveur :", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Une fois le chiffrement activé, les fichiers téléversés sur le serveur à partir de ce moment seront stockés sous forme chiffrée. Il n'est possible de désactiver le chiffrement que si le module utilisé le permet spécifiquement, et que toutes les conditions préalables sont réunies pour ce faire (par exemple la création d'une clef de récupération).", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Le chiffrement seul ne garantit pas la sécurité du système. Veuillez consulter la documentation pour plus d'informations à propos du fonction de l'application de chiffrement, et des cas d'utilisations supportés.", "Be aware that encryption always increases the file size." : "Veuillez noter que le chiffrement augmente toujours la taille des fichiers.", @@ -225,14 +239,17 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Dernier avertissement : Voulez-vous vraiment activer le chiffrement ?", "No encryption module loaded, please enable an encryption module in the app menu." : "Aucun module de chiffrement n'est chargé. Merci d'activer un module de chiffrement dans le menu des applications.", "Select default encryption module:" : "Sélectionnez le module de chiffrement par défaut :", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Vous devez migrer vos clés de cryptage de l’ancien cryptage (ownCloud <= 8.0) vers le nouveau. Veuillez activer le \"module de cryptage par défaut\" et exécuter {command}", + "Unable to update server side encryption config" : "Impossible de mettre à jour la configuration du chiffrement côté serveur", + "Rename group" : "Renommer le groupe", "Remove group" : "Supprimer le groupe", "You are about to remove the group {group}. The users will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe {group}. Les utilisateurs ne seront PAS supprimés.", "Please confirm the group removal " : "Veuillez confirmer la suppression du groupe", + "Current password" : "Mot de passe actuel", + "New password" : "Nouveau mot de passe", + "Change password" : "Changer de mot de passe", "Your biography" : "Votre biographie", - "Unable to update biography" : "Impossible de mettre à jour la biographie", "Your full name" : "Votre nom complet", - "Unable to update full name" : "Impossible de mettre à jour le nom complet", - "No full name set" : "Aucun nom complet configuré", "Email options" : "Options de mail", "Primary email for password reset and notifications" : "Adresse e-mail principale pour la réinitialisation du mot de passe et les notifications", "Remove primary email" : "Supprimer l'adresse e-mail principale", @@ -250,23 +267,22 @@ OC.L10N.register( "No email address set" : "Aucune adresse e-mail configurée", "Additional emails" : "E-mails suplémentaires", "Your headline" : "Votre titre", - "Unable to update headline" : "Impossible de mettre à jour le titre", "Language" : "Langue", "Help translate" : "Aidez à traduire", "Unable to update language" : "Impossible de modifier la langue", "No language set" : "Aucune langue définie", "Your organisation" : "Votre organisation", - "Unable to update organisation" : "Impossible de modifier l'organisation", - "Edit your Profile visibility" : "Modifier la visibilité de votre profil", + "Your phone number" : "Votre numéro de téléphone", + "Edit your Profile visibility" : "Visibilité du profil", "Enable Profile" : "Activer le profil", "Unable to update profile enabled state" : "Impossible de mettre à jour l'état du profil", "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Le paramètre le plus restrictif entre la visibilité et la confidentialité est respecté. Par exemple, si la visibilité est définie à \"Montrer à tout le monde\" et que la confidentialité est \"Privée\", \"Privée\" est respecté.", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Impossible de mettre à jour la visibilité de {displayId}", "Your role" : "Votre rôle", - "Unable to update role" : "Impossible de modifier le rôle", - "Unable to update federation scope of the primary {accountProperty}" : "Impossible de mettre à jour la confidentialité de fédération du {accountProperty} primaire", - "Unable to update federation scope of additional {accountProperty}" : "Impossible de mettre à jour la confidentialité de fédération du {accountProperty} supplémentaire", + "Your Twitter handle" : "Votre pseudo Twitter", + "Your website" : "Votre site web", + "Add additional email" : "Ajouter un e-mail supplémentaire", "Add" : "Ajouter", "You do not have permissions to see the details of this user" : "Vous n'avez pas les autorisations pour voir le détail de cet utilisateur", "Add new password" : "Ajouter un nouveau mot de passe", @@ -289,7 +305,7 @@ OC.L10N.register( "Welcome mail sent!" : "E-mail de bienvenue envoyé !", "Edit User" : "Modifier l'utilisateur", "Toggle user actions menu" : "Basculer le menu des actions de l'utilisateur", - "{size} used" : "{size} utilisé", + "{size} used" : "{size} utilisés", "New user" : "Nouvel utilisateur", "Will be autogenerated" : "Sera généré automatiquement", "Display name" : "Nom à afficher", @@ -298,7 +314,7 @@ OC.L10N.register( "Add a new user" : "Ajouter un nouvel utilisateur", "Group admin for" : "Administrateur de groupe pour", "Quota" : "Quota", - "User backend" : "Retour utilisateur", + "User backend" : "Origine du compte", "Storage location" : "Emplacement du stockage", "Last login" : "Dernière connexion", "No users in here" : "Aucun utilisateur", @@ -336,15 +352,15 @@ OC.L10N.register( "Disabled users" : "Utilisateurs désactivés", "Default quota:" : "Quota par défaut :", "Select default quota" : "Sélectionner le quota par défaut", - "Show Languages" : "Afficher les langues", + "Show Languages" : "Afficher la langue", "Show last login" : "Afficher la dernière connexion", - "Show user backend" : "Montrer la source de l'identifiant", - "Show storage path" : "Afficher le chemin du stockage", + "Show user backend" : "Afficher l'origine du compte", + "Show storage path" : "Afficher l'emplacement du stockage", "Send email to new user" : "Envoyer un e-mail aux utilisateurs créés", "Not saved" : "Non sauvegardé", "Sending…" : "Envoi en cours...", "Email sent" : "E-mail envoyé", - "Address" : "Adresse", + "Location" : "Position", "Avatar" : "Avatar", "About" : "À propos", "Full name" : "Nom complet", @@ -369,6 +385,7 @@ OC.L10N.register( "An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.", "Error: This app cannot be enabled because it makes the server unstable" : "Erreur : cette application ne peut être activée car elle rend le serveur instable", + "User already exists." : "Cet utilisateur existe déjà.", "Administrator documentation" : "Documentation administrateur", "Documentation" : "Documentation", "Forum" : "Forum", @@ -423,8 +440,8 @@ OC.L10N.register( "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage", "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe", "Allow username autocompletion to users based on phone number integration" : "Autoriser l'autocomplétion du nom d'utilisateur aux utilisateurs selon l'intégration du numéro de téléphone", - "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si l'autocomplétion \"même groupe\" et \"intégration du numéro de téléphone\" sont activés, un seul résultat est suffisant pour afficher l'utilisateur.", - "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion quand le nom complet ou l'adresse courriel sont saisis (en ignorant la recherche du numéro de téléphone et le fait d'être dans le même groupe)", + "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si les autocomplétions \"même groupe\" et \"intégration du numéro de téléphone\" sont activées, une correspondance avec l'une ou l'autre de ces conditions est suffisante pour afficher l'utilisateur.", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion lorsque le nom d'utilisateur ou l'adresse e-mail est totalement saisi⋅e (en ignorant les correspondances manquantes dans le répertoire téléphonique et le fait d'appartenir au même groupe)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Afficher les conditions d'utilisation sur la page publique de téléversement (seulement lorsque la liste des fichiers est masquée).", "This text will be shown on the public link upload page when the file list is hidden." : "Ce texte sera affiché sur la page publique de téléversement lorsque la liste des fichiers est masquée.", "Default share permissions" : "Autorisations de partage par défaut", @@ -447,20 +464,8 @@ OC.L10N.register( "You are a member of the following groups:" : "Vous êtes un membre des groupes suivants :", "You are using <strong>%s</strong>" : "Vous utilisez <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vous utilisez <strong>%1$s</strong> sur <strong>%2$s</strong> (<strong>%3$s%% </strong>)", - "Change privacy level of phone number" : "Changer le niveau de confidentialité du numéro de téléphone", - "Your phone number" : "Votre numéro de téléphone", - "Change privacy level of address" : "Changer le niveau de confidentialité de l'adresse", - "Your postal address" : "Votre adresse postale", - "Change privacy level of website" : "Changer le niveau de confidentialité du site web", - "It can take up to 24 hours before the account is displayed as verified." : "Cela peut prendre jusqu'à 24 heures avant que le compte soit affiché comme vérifié.", - "Link https://…" : "Lien https://…", - "Change privacy level of Twitter profile" : "Changer le niveau de confidentialité du profil Twitter", - "Twitter handle @…" : "Pseudo Twitter @...", "Locale" : "Paramètres régionaux", - "Current password" : "Mot de passe actuel", - "New password" : "Nouveau mot de passe", - "Change password" : "Changer de mot de passe", - "Use a second factor besides your password to increase security for your account." : "Utiliser un second facteur d'authentification en plus de votre mot de passe pour augmenter la sécurité de votre compte.", + "Use a second factor besides your password to increase security for your account." : "Utilisez un second facteur d'authentification en plus de votre mot de passe pour augmenter la sécurité de votre compte.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si vous utilisez des applications tierces pour vous connecter à Nextcloud, assurez-vous de créer et de configurer un mot de passe d'application pour chacune avant d'activer l'authentification à deux facteurs.", "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", "Migration started …" : "Migration démarrée...", @@ -493,6 +498,23 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion quand le nom complet ou l'adresse courriel sont saisis (en ignorant la recherche du numéro de téléphone et le fait d'être dans le même groupe)", "Change privacy level of full name" : "Changer le niveau de confidentialité du nom complet", "No display name set" : "Aucun nom d'affichage configuré", - "Change scope level of {accountProperty}" : "Changer le niveau de confidentialité de {accountProperty}" + "Change privacy level of phone number" : "Changer le niveau de confidentialité du numéro de téléphone", + "Address" : "Adresse", + "Change privacy level of address" : "Changer le niveau de confidentialité de l'adresse", + "Your postal address" : "Votre adresse postale", + "Change privacy level of website" : "Changer le niveau de confidentialité du site web", + "It can take up to 24 hours before the account is displayed as verified." : "Cela peut prendre jusqu'à 24 heures avant que le compte soit affiché comme vérifié.", + "Link https://…" : "Lien https://…", + "Change privacy level of Twitter profile" : "Changer le niveau de confidentialité du profil Twitter", + "Twitter handle @…" : "Pseudo Twitter @...", + "Unable to update biography" : "Impossible de mettre à jour la biographie", + "Unable to update full name" : "Impossible de mettre à jour le nom complet", + "No full name set" : "Aucun nom complet configuré", + "Unable to update headline" : "Impossible de mettre à jour le titre", + "Unable to update organisation" : "Impossible de modifier l'organisation", + "Unable to update role" : "Impossible de modifier le rôle", + "Change scope level of {accountProperty}" : "Changer le niveau de confidentialité de {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Impossible de mettre à jour la confidentialité de fédération du {accountProperty} primaire", + "Unable to update federation scope of additional {accountProperty}" : "Impossible de mettre à jour la confidentialité de fédération du {accountProperty} supplémentaire" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json index 54136097396..0260707a85c 100644 --- a/apps/settings/l10n/fr.json +++ b/apps/settings/l10n/fr.json @@ -52,9 +52,13 @@ "Remote wipe was started on %1$s" : "Effaçage distant démarré pour%1$s", "Remote wipe has finished on %1$s" : "Effaçage distant terminé pour %1$s", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié", + "Could not remove app." : "Impossible de supprimer l'app.", + "Could not update app." : "Impossible de mettre à jour l'app.", "Wrong password" : "Mot de passe incorrect", + "Unable to change personal password" : "Impossible de changer le mot de passe personnel", "Saved" : "Sauvegardé", "No user supplied" : "Aucun utilisateur fourni", + "Unable to change password. Password too long." : "Impossible de modifier le mot de passe. Le mot de passe est trop long.", "Authentication error" : "Erreur d'authentification", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Veuillez fournir un mot de passe administrateur de récupération de données, sinon toutes les données utilisateur seront perdues.", "Wrong admin recovery password. Please check the password and try again." : "Mot de passe administrateur de récupération de données non valable. Veuillez vérifier le mot de passe et essayer à nouveau.", @@ -105,7 +109,7 @@ "Administration" : "Administration", "Additional settings" : "Paramètres supplémentaires", "Admin privileges" : "Privilèges d'administrateur", - "Groupware" : "Travail collaboratif", + "Groupware" : "Groupware", "Overview" : "Vue d'ensemble", "Basic settings" : "Paramètres de base", "Sharing" : "Partage", @@ -123,6 +127,7 @@ "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Une tâche en arrière-plan qui vérifie les certificats SSL importés par l’utilisateur est en attente. Veuillez vérifier plus tard.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Certains certificats SSL importés par les utilisateurs sont présents et ne sont plus utilisés avec Nextcloud 21. Ils peuvent être importés par l'interface en ligne de commande via la commande \"occ security:certificates:import\". Leurs chemins dans le dossier data sont affichés ci-dessous.", "The old server-side-encryption format is enabled. We recommend disabling this." : "L'ancien format de chiffrement côté serveur est activé. Nous recommandons de le désactiver.", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Image du profil, nom complet, courriel, numéro de téléphone, adresse, site web, Twitter, organisation, rôle, titre, biographie, et si votre profil est activé", "Nextcloud settings" : "Paramètres Nextcloud", "Administration privileges" : "Privilèges d'administration", "Here you can decide which group can access certain sections of the administration settings." : "Ici, vous pouvez décider quel groupe peut accéder à certaines sections des paramètres d'administration.", @@ -209,13 +214,22 @@ "Copied!" : "Copié !", "Copy" : "Copier", "Could not copy app password. Please copy it manually." : "Impossible de copier le mot de passe de l'application. Merci de le copier manuellement.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Pour que le serveur fonctionne correctement, il est important de configurer correctement les tâches d'arrière-plan. Cron est le paramètre recommandé. Veuillez consulter la documentation pour plus d'informations.", + "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "Exécuter une tâche à chaque chargement de page. Cas d'utilisation : Instance avec un seul utilisateur.", + "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php est enregistré dans un service webcron pour appeler cron.php toutes les 5 minutes via HTTP. Cas d'utilisation : Très petite instance (1-5 utilisateurs selon l'utilisation).", + "Cron (Recommended)" : "Cron (Recommandé)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pour l'exécuter, vous devez avoir l'extension PHP POSIX. Regarder la {linkstart}documentation PHP{linkend} pour plus de détails.", "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Utiliser le service cron du système pour appeler le fichier 'cron.php' toutes les 5 minutes.", "Profile" : "Profil", + "Enable or disable profile by default for new users." : "Activer ou désactiver le profil par défaut pour les nouveaux utilisateurs.", "Enable" : "Activer", + "Unable to update profile default setting" : "Impossible de mettre à jour les paramètres par défaut du profil", "Server-side encryption" : "Chiffrement côté serveur", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Le chiffrement côté serveur permet de chiffrer les fichiers qui sont téléversés sur ce serveur. Cela implique des limitations comme une performance moindre, donc activez-le seulement si nécessaire.", "Enable server-side encryption" : "Activer le chiffrement côté serveur", + "Please read carefully before activating server-side encryption:" : "Veuillez lire attentivement avant d’activer le chiffrement côté serveur :", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Une fois le chiffrement activé, les fichiers téléversés sur le serveur à partir de ce moment seront stockés sous forme chiffrée. Il n'est possible de désactiver le chiffrement que si le module utilisé le permet spécifiquement, et que toutes les conditions préalables sont réunies pour ce faire (par exemple la création d'une clef de récupération).", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Le chiffrement seul ne garantit pas la sécurité du système. Veuillez consulter la documentation pour plus d'informations à propos du fonction de l'application de chiffrement, et des cas d'utilisations supportés.", "Be aware that encryption always increases the file size." : "Veuillez noter que le chiffrement augmente toujours la taille des fichiers.", @@ -223,14 +237,17 @@ "This is the final warning: Do you really want to enable encryption?" : "Dernier avertissement : Voulez-vous vraiment activer le chiffrement ?", "No encryption module loaded, please enable an encryption module in the app menu." : "Aucun module de chiffrement n'est chargé. Merci d'activer un module de chiffrement dans le menu des applications.", "Select default encryption module:" : "Sélectionnez le module de chiffrement par défaut :", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Vous devez migrer vos clés de cryptage de l’ancien cryptage (ownCloud <= 8.0) vers le nouveau. Veuillez activer le \"module de cryptage par défaut\" et exécuter {command}", + "Unable to update server side encryption config" : "Impossible de mettre à jour la configuration du chiffrement côté serveur", + "Rename group" : "Renommer le groupe", "Remove group" : "Supprimer le groupe", "You are about to remove the group {group}. The users will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe {group}. Les utilisateurs ne seront PAS supprimés.", "Please confirm the group removal " : "Veuillez confirmer la suppression du groupe", + "Current password" : "Mot de passe actuel", + "New password" : "Nouveau mot de passe", + "Change password" : "Changer de mot de passe", "Your biography" : "Votre biographie", - "Unable to update biography" : "Impossible de mettre à jour la biographie", "Your full name" : "Votre nom complet", - "Unable to update full name" : "Impossible de mettre à jour le nom complet", - "No full name set" : "Aucun nom complet configuré", "Email options" : "Options de mail", "Primary email for password reset and notifications" : "Adresse e-mail principale pour la réinitialisation du mot de passe et les notifications", "Remove primary email" : "Supprimer l'adresse e-mail principale", @@ -248,23 +265,22 @@ "No email address set" : "Aucune adresse e-mail configurée", "Additional emails" : "E-mails suplémentaires", "Your headline" : "Votre titre", - "Unable to update headline" : "Impossible de mettre à jour le titre", "Language" : "Langue", "Help translate" : "Aidez à traduire", "Unable to update language" : "Impossible de modifier la langue", "No language set" : "Aucune langue définie", "Your organisation" : "Votre organisation", - "Unable to update organisation" : "Impossible de modifier l'organisation", - "Edit your Profile visibility" : "Modifier la visibilité de votre profil", + "Your phone number" : "Votre numéro de téléphone", + "Edit your Profile visibility" : "Visibilité du profil", "Enable Profile" : "Activer le profil", "Unable to update profile enabled state" : "Impossible de mettre à jour l'état du profil", "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "Le paramètre le plus restrictif entre la visibilité et la confidentialité est respecté. Par exemple, si la visibilité est définie à \"Montrer à tout le monde\" et que la confidentialité est \"Privée\", \"Privée\" est respecté.", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Impossible de mettre à jour la visibilité de {displayId}", "Your role" : "Votre rôle", - "Unable to update role" : "Impossible de modifier le rôle", - "Unable to update federation scope of the primary {accountProperty}" : "Impossible de mettre à jour la confidentialité de fédération du {accountProperty} primaire", - "Unable to update federation scope of additional {accountProperty}" : "Impossible de mettre à jour la confidentialité de fédération du {accountProperty} supplémentaire", + "Your Twitter handle" : "Votre pseudo Twitter", + "Your website" : "Votre site web", + "Add additional email" : "Ajouter un e-mail supplémentaire", "Add" : "Ajouter", "You do not have permissions to see the details of this user" : "Vous n'avez pas les autorisations pour voir le détail de cet utilisateur", "Add new password" : "Ajouter un nouveau mot de passe", @@ -287,7 +303,7 @@ "Welcome mail sent!" : "E-mail de bienvenue envoyé !", "Edit User" : "Modifier l'utilisateur", "Toggle user actions menu" : "Basculer le menu des actions de l'utilisateur", - "{size} used" : "{size} utilisé", + "{size} used" : "{size} utilisés", "New user" : "Nouvel utilisateur", "Will be autogenerated" : "Sera généré automatiquement", "Display name" : "Nom à afficher", @@ -296,7 +312,7 @@ "Add a new user" : "Ajouter un nouvel utilisateur", "Group admin for" : "Administrateur de groupe pour", "Quota" : "Quota", - "User backend" : "Retour utilisateur", + "User backend" : "Origine du compte", "Storage location" : "Emplacement du stockage", "Last login" : "Dernière connexion", "No users in here" : "Aucun utilisateur", @@ -334,15 +350,15 @@ "Disabled users" : "Utilisateurs désactivés", "Default quota:" : "Quota par défaut :", "Select default quota" : "Sélectionner le quota par défaut", - "Show Languages" : "Afficher les langues", + "Show Languages" : "Afficher la langue", "Show last login" : "Afficher la dernière connexion", - "Show user backend" : "Montrer la source de l'identifiant", - "Show storage path" : "Afficher le chemin du stockage", + "Show user backend" : "Afficher l'origine du compte", + "Show storage path" : "Afficher l'emplacement du stockage", "Send email to new user" : "Envoyer un e-mail aux utilisateurs créés", "Not saved" : "Non sauvegardé", "Sending…" : "Envoi en cours...", "Email sent" : "E-mail envoyé", - "Address" : "Adresse", + "Location" : "Position", "Avatar" : "Avatar", "About" : "À propos", "Full name" : "Nom complet", @@ -367,6 +383,7 @@ "An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.", "Error: This app cannot be enabled because it makes the server unstable" : "Erreur : cette application ne peut être activée car elle rend le serveur instable", + "User already exists." : "Cet utilisateur existe déjà.", "Administrator documentation" : "Documentation administrateur", "Documentation" : "Documentation", "Forum" : "Forum", @@ -421,8 +438,8 @@ "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage", "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe", "Allow username autocompletion to users based on phone number integration" : "Autoriser l'autocomplétion du nom d'utilisateur aux utilisateurs selon l'intégration du numéro de téléphone", - "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si l'autocomplétion \"même groupe\" et \"intégration du numéro de téléphone\" sont activés, un seul résultat est suffisant pour afficher l'utilisateur.", - "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion quand le nom complet ou l'adresse courriel sont saisis (en ignorant la recherche du numéro de téléphone et le fait d'être dans le même groupe)", + "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si les autocomplétions \"même groupe\" et \"intégration du numéro de téléphone\" sont activées, une correspondance avec l'une ou l'autre de ces conditions est suffisante pour afficher l'utilisateur.", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion lorsque le nom d'utilisateur ou l'adresse e-mail est totalement saisi⋅e (en ignorant les correspondances manquantes dans le répertoire téléphonique et le fait d'appartenir au même groupe)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Afficher les conditions d'utilisation sur la page publique de téléversement (seulement lorsque la liste des fichiers est masquée).", "This text will be shown on the public link upload page when the file list is hidden." : "Ce texte sera affiché sur la page publique de téléversement lorsque la liste des fichiers est masquée.", "Default share permissions" : "Autorisations de partage par défaut", @@ -445,20 +462,8 @@ "You are a member of the following groups:" : "Vous êtes un membre des groupes suivants :", "You are using <strong>%s</strong>" : "Vous utilisez <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Vous utilisez <strong>%1$s</strong> sur <strong>%2$s</strong> (<strong>%3$s%% </strong>)", - "Change privacy level of phone number" : "Changer le niveau de confidentialité du numéro de téléphone", - "Your phone number" : "Votre numéro de téléphone", - "Change privacy level of address" : "Changer le niveau de confidentialité de l'adresse", - "Your postal address" : "Votre adresse postale", - "Change privacy level of website" : "Changer le niveau de confidentialité du site web", - "It can take up to 24 hours before the account is displayed as verified." : "Cela peut prendre jusqu'à 24 heures avant que le compte soit affiché comme vérifié.", - "Link https://…" : "Lien https://…", - "Change privacy level of Twitter profile" : "Changer le niveau de confidentialité du profil Twitter", - "Twitter handle @…" : "Pseudo Twitter @...", "Locale" : "Paramètres régionaux", - "Current password" : "Mot de passe actuel", - "New password" : "Nouveau mot de passe", - "Change password" : "Changer de mot de passe", - "Use a second factor besides your password to increase security for your account." : "Utiliser un second facteur d'authentification en plus de votre mot de passe pour augmenter la sécurité de votre compte.", + "Use a second factor besides your password to increase security for your account." : "Utilisez un second facteur d'authentification en plus de votre mot de passe pour augmenter la sécurité de votre compte.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si vous utilisez des applications tierces pour vous connecter à Nextcloud, assurez-vous de créer et de configurer un mot de passe d'application pour chacune avant d'activer l'authentification à deux facteurs.", "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", "Migration started …" : "Migration démarrée...", @@ -491,6 +496,23 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion quand le nom complet ou l'adresse courriel sont saisis (en ignorant la recherche du numéro de téléphone et le fait d'être dans le même groupe)", "Change privacy level of full name" : "Changer le niveau de confidentialité du nom complet", "No display name set" : "Aucun nom d'affichage configuré", - "Change scope level of {accountProperty}" : "Changer le niveau de confidentialité de {accountProperty}" + "Change privacy level of phone number" : "Changer le niveau de confidentialité du numéro de téléphone", + "Address" : "Adresse", + "Change privacy level of address" : "Changer le niveau de confidentialité de l'adresse", + "Your postal address" : "Votre adresse postale", + "Change privacy level of website" : "Changer le niveau de confidentialité du site web", + "It can take up to 24 hours before the account is displayed as verified." : "Cela peut prendre jusqu'à 24 heures avant que le compte soit affiché comme vérifié.", + "Link https://…" : "Lien https://…", + "Change privacy level of Twitter profile" : "Changer le niveau de confidentialité du profil Twitter", + "Twitter handle @…" : "Pseudo Twitter @...", + "Unable to update biography" : "Impossible de mettre à jour la biographie", + "Unable to update full name" : "Impossible de mettre à jour le nom complet", + "No full name set" : "Aucun nom complet configuré", + "Unable to update headline" : "Impossible de mettre à jour le titre", + "Unable to update organisation" : "Impossible de modifier l'organisation", + "Unable to update role" : "Impossible de modifier le rôle", + "Change scope level of {accountProperty}" : "Changer le niveau de confidentialité de {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Impossible de mettre à jour la confidentialité de fédération du {accountProperty} primaire", + "Unable to update federation scope of additional {accountProperty}" : "Impossible de mettre à jour la confidentialité de fédération du {accountProperty} supplémentaire" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js index 38d4be9a9c9..a13ad6a6fad 100644 --- a/apps/settings/l10n/gl.js +++ b/apps/settings/l10n/gl.js @@ -209,11 +209,17 @@ OC.L10N.register( "Remove group" : "Retirar o grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Está a piques de retirar o grupo {group}. Os usuarios NON van seren eliminados.", "Please confirm the group removal " : "Confirme a retirada do grupo ", + "Current password" : "Contrasinal actual", + "New password" : "Novo contrasinal", + "Change password" : "Cambiar o contrasinal", "Your email address" : "O seu enderezo de correo", "No email address set" : "Non hai un enderezo de correo definido", "Language" : "Idioma", "Help translate" : "Axude na tradución", "No language set" : "Non foi estabelecido ningún idioma", + "Your phone number" : "O seu número de teléfono", + "Your Twitter handle" : "O seu usuario do Twitter", + "Your website" : "O seu sitio web", "Add" : "Engadir", "You do not have permissions to see the details of this user" : "Vostede non ten permisos para ver os detalles deste usuario", "Add new password" : "Engadir un novo contrasinal", @@ -289,7 +295,7 @@ OC.L10N.register( "Not saved" : "Sen gardar", "Sending…" : "Enviando...", "Email sent" : "Correo enviado", - "Address" : "Enderezo", + "Location" : "Localización", "Avatar" : "Avatar", "About" : "Sobre", "Full name" : "Nome completo", @@ -372,15 +378,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Vostede é membro dos seguintes grupos: ", "You are using <strong>%s</strong>" : "Está usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%)", - "Your phone number" : "O seu número de teléfono", - "Your postal address" : "O seu enderezo postal", - "It can take up to 24 hours before the account is displayed as verified." : "Pode levar ata 24 horas antes de que a conta apareza como como verificada.", - "Link https://…" : "Ligazón https://…", - "Twitter handle @…" : "Usuario do Twitter @…", "Locale" : "Configuración rexional", - "Current password" : "Contrasinal actual", - "New password" : "Novo contrasinal", - "Change password" : "Cambiar o contrasinal", "Use a second factor besides your password to increase security for your account." : "Empregue un segundo factor ademais do seu contrasinal para aumentar a seguridade da súa conta.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : " Se usa aplicacións de terceiros para conectarse a Nextcloud, asegúrese de crear e configurar un contrasinal de aplicación para cada unha antes de activar a autenticación de segundo factor.", "Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.", @@ -409,6 +407,11 @@ OC.L10N.register( "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»", "days" : "días", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletar o nome de usuario cando se introduce o nome completo ou o enderezo de correo-e ignorando a coincidencia da lista de teléfonos que falta e está no mesmo grupo", - "No display name set" : "Sen nome de usuario para amosar estabelecido" + "No display name set" : "Sen nome de usuario para amosar estabelecido", + "Address" : "Enderezo", + "Your postal address" : "O seu enderezo postal", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar ata 24 horas antes de que a conta apareza como como verificada.", + "Link https://…" : "Ligazón https://…", + "Twitter handle @…" : "Usuario do Twitter @…" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json index 5ba18475e79..903cbf18a67 100644 --- a/apps/settings/l10n/gl.json +++ b/apps/settings/l10n/gl.json @@ -207,11 +207,17 @@ "Remove group" : "Retirar o grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Está a piques de retirar o grupo {group}. Os usuarios NON van seren eliminados.", "Please confirm the group removal " : "Confirme a retirada do grupo ", + "Current password" : "Contrasinal actual", + "New password" : "Novo contrasinal", + "Change password" : "Cambiar o contrasinal", "Your email address" : "O seu enderezo de correo", "No email address set" : "Non hai un enderezo de correo definido", "Language" : "Idioma", "Help translate" : "Axude na tradución", "No language set" : "Non foi estabelecido ningún idioma", + "Your phone number" : "O seu número de teléfono", + "Your Twitter handle" : "O seu usuario do Twitter", + "Your website" : "O seu sitio web", "Add" : "Engadir", "You do not have permissions to see the details of this user" : "Vostede non ten permisos para ver os detalles deste usuario", "Add new password" : "Engadir un novo contrasinal", @@ -287,7 +293,7 @@ "Not saved" : "Sen gardar", "Sending…" : "Enviando...", "Email sent" : "Correo enviado", - "Address" : "Enderezo", + "Location" : "Localización", "Avatar" : "Avatar", "About" : "Sobre", "Full name" : "Nome completo", @@ -370,15 +376,7 @@ "You are a member of the following groups:" : "Vostede é membro dos seguintes grupos: ", "You are using <strong>%s</strong>" : "Está usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%)", - "Your phone number" : "O seu número de teléfono", - "Your postal address" : "O seu enderezo postal", - "It can take up to 24 hours before the account is displayed as verified." : "Pode levar ata 24 horas antes de que a conta apareza como como verificada.", - "Link https://…" : "Ligazón https://…", - "Twitter handle @…" : "Usuario do Twitter @…", "Locale" : "Configuración rexional", - "Current password" : "Contrasinal actual", - "New password" : "Novo contrasinal", - "Change password" : "Cambiar o contrasinal", "Use a second factor besides your password to increase security for your account." : "Empregue un segundo factor ademais do seu contrasinal para aumentar a seguridade da súa conta.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : " Se usa aplicacións de terceiros para conectarse a Nextcloud, asegúrese de crear e configurar un contrasinal de aplicación para cada unha antes de activar a autenticación de segundo factor.", "Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.", @@ -407,6 +405,11 @@ "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»", "days" : "días", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletar o nome de usuario cando se introduce o nome completo ou o enderezo de correo-e ignorando a coincidencia da lista de teléfonos que falta e está no mesmo grupo", - "No display name set" : "Sen nome de usuario para amosar estabelecido" + "No display name set" : "Sen nome de usuario para amosar estabelecido", + "Address" : "Enderezo", + "Your postal address" : "O seu enderezo postal", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar ata 24 horas antes de que a conta apareza como como verificada.", + "Link https://…" : "Ligazón https://…", + "Twitter handle @…" : "Usuario do Twitter @…" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js index b7a1cec502e..a45a6a86308 100644 --- a/apps/settings/l10n/he.js +++ b/apps/settings/l10n/he.js @@ -209,11 +209,15 @@ OC.L10N.register( "Remove group" : "הסרת קבוצה", "You are about to remove the group {group}. The users will NOT be deleted." : "פעולה זו תסיר את הקבוצה {group}. המשתמשים ﬥﬡ יימחקו.", "Please confirm the group removal " : "נא לאשר את הסרת הקבוצה", + "Current password" : "סיסמא נוכחית", + "New password" : "סיסמא חדשה", + "Change password" : "שינוי סיסמא", "Your email address" : "כתובת הדואר האלקטרוני שלך", "No email address set" : "לא נקבעה כתובת דואר אלקטרוני", "Language" : "שפה", "Help translate" : "עזרה בתרגום", "No language set" : "לא הוגדרה שפה", + "Your phone number" : "מספר הטלפון שלך", "Add" : "הוספה", "You do not have permissions to see the details of this user" : "אין לך הרשאות לצפות בפירוט על המשתמש", "Add new password" : "הוספת ססמה חדשה", @@ -289,7 +293,7 @@ OC.L10N.register( "Not saved" : "לא נשמר", "Sending…" : "בשליחה…", "Email sent" : "הודעת הדואר האלקטרוני נשלחה", - "Address" : "כתובת", + "Location" : "מיקום", "Avatar" : "תמונה מייצגת", "About" : "על אודות", "Full name" : "שם מלא", @@ -370,15 +374,7 @@ OC.L10N.register( "You are a member of the following groups:" : "הקבוצות הבאות כוללות אותך:", "You are using <strong>%s</strong>" : "הניצולת שלך היא <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "מנוצלים <strong>%1$s</strong> מתוך <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "מספר הטלפון שלך", - "Your postal address" : "כתובת הדואר שלך", - "It can take up to 24 hours before the account is displayed as verified." : "יתכן שיעברו עד 24 שעות בטרם הצגת החשבון כמאומת.", - "Link https://…" : "קישור https://…", - "Twitter handle @…" : "כינוי בטוויטר @…", "Locale" : "הגדרות אזוריות", - "Current password" : "סיסמא נוכחית", - "New password" : "סיסמא חדשה", - "Change password" : "שינוי סיסמא", "Use a second factor besides your password to increase security for your account." : "ניתן להשתמש בגורם נוסף מלבד הססמה שלך כדי להגביר את אבטחת החשבון שלך.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "אם משמשים אותך יישומי צד־שלישי להתחברות אל Nextcloud, נא לוודא יצירת והגדרת ססמה ליישומון לכל אחד מהם בטרם הפעלת אימות דו־שלבי.", "Migration in progress. Please wait until the migration is finished" : "המרה בביצוע. יש להמתין עד סיום ההמרה", @@ -406,6 +402,11 @@ OC.L10N.register( "Recommended" : "מומלץ", "The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.", "days" : "ימים", - "No display name set" : "לא נקבע שם תצוגה" + "No display name set" : "לא נקבע שם תצוגה", + "Address" : "כתובת", + "Your postal address" : "כתובת הדואר שלך", + "It can take up to 24 hours before the account is displayed as verified." : "יתכן שיעברו עד 24 שעות בטרם הצגת החשבון כמאומת.", + "Link https://…" : "קישור https://…", + "Twitter handle @…" : "כינוי בטוויטר @…" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json index 22c5f462896..9c6233ffeba 100644 --- a/apps/settings/l10n/he.json +++ b/apps/settings/l10n/he.json @@ -207,11 +207,15 @@ "Remove group" : "הסרת קבוצה", "You are about to remove the group {group}. The users will NOT be deleted." : "פעולה זו תסיר את הקבוצה {group}. המשתמשים ﬥﬡ יימחקו.", "Please confirm the group removal " : "נא לאשר את הסרת הקבוצה", + "Current password" : "סיסמא נוכחית", + "New password" : "סיסמא חדשה", + "Change password" : "שינוי סיסמא", "Your email address" : "כתובת הדואר האלקטרוני שלך", "No email address set" : "לא נקבעה כתובת דואר אלקטרוני", "Language" : "שפה", "Help translate" : "עזרה בתרגום", "No language set" : "לא הוגדרה שפה", + "Your phone number" : "מספר הטלפון שלך", "Add" : "הוספה", "You do not have permissions to see the details of this user" : "אין לך הרשאות לצפות בפירוט על המשתמש", "Add new password" : "הוספת ססמה חדשה", @@ -287,7 +291,7 @@ "Not saved" : "לא נשמר", "Sending…" : "בשליחה…", "Email sent" : "הודעת הדואר האלקטרוני נשלחה", - "Address" : "כתובת", + "Location" : "מיקום", "Avatar" : "תמונה מייצגת", "About" : "על אודות", "Full name" : "שם מלא", @@ -368,15 +372,7 @@ "You are a member of the following groups:" : "הקבוצות הבאות כוללות אותך:", "You are using <strong>%s</strong>" : "הניצולת שלך היא <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "מנוצלים <strong>%1$s</strong> מתוך <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "מספר הטלפון שלך", - "Your postal address" : "כתובת הדואר שלך", - "It can take up to 24 hours before the account is displayed as verified." : "יתכן שיעברו עד 24 שעות בטרם הצגת החשבון כמאומת.", - "Link https://…" : "קישור https://…", - "Twitter handle @…" : "כינוי בטוויטר @…", "Locale" : "הגדרות אזוריות", - "Current password" : "סיסמא נוכחית", - "New password" : "סיסמא חדשה", - "Change password" : "שינוי סיסמא", "Use a second factor besides your password to increase security for your account." : "ניתן להשתמש בגורם נוסף מלבד הססמה שלך כדי להגביר את אבטחת החשבון שלך.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "אם משמשים אותך יישומי צד־שלישי להתחברות אל Nextcloud, נא לוודא יצירת והגדרת ססמה ליישומון לכל אחד מהם בטרם הפעלת אימות דו־שלבי.", "Migration in progress. Please wait until the migration is finished" : "המרה בביצוע. יש להמתין עד סיום ההמרה", @@ -404,6 +400,11 @@ "Recommended" : "מומלץ", "The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.", "days" : "ימים", - "No display name set" : "לא נקבע שם תצוגה" + "No display name set" : "לא נקבע שם תצוגה", + "Address" : "כתובת", + "Your postal address" : "כתובת הדואר שלך", + "It can take up to 24 hours before the account is displayed as verified." : "יתכן שיעברו עד 24 שעות בטרם הצגת החשבון כמאומת.", + "Link https://…" : "קישור https://…", + "Twitter handle @…" : "כינוי בטוויטר @…" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js index b57aac1360d..ceb134575a4 100644 --- a/apps/settings/l10n/hr.js +++ b/apps/settings/l10n/hr.js @@ -222,11 +222,11 @@ OC.L10N.register( "Remove group" : "Ukloni grupu", "You are about to remove the group {group}. The users will NOT be deleted." : "Izbrisat ćete grupu {group}. Korisnici NEĆE biti izbrisani.", "Please confirm the group removal " : "Potvrdite uklanjanje grupe ", + "Current password" : "Trenutna zaporka", + "New password" : "Nova zaporka", + "Change password" : "Promijeni zaporku", "Your biography" : "Vaša biografija", - "Unable to update biography" : "Nije moguće ažurirati biografiju", "Your full name" : "Vaše ime i prezime", - "Unable to update full name" : "Nije moguće ažurirati ime i prezime", - "No full name set" : "Nije postavljeno ime i prezime", "Email options" : "Mogućnosti e-pošte", "Primary email for password reset and notifications" : "Primarna e-pošta za resetiranje zaporke i primanje obavijesti", "Remove primary email" : "Ukloni primarnu adresu e-pošte", @@ -244,13 +244,12 @@ OC.L10N.register( "No email address set" : "Nije postavljena adresa e-pošte", "Additional emails" : "Dodatne adrese e-pošte", "Your headline" : "Vaš naslov", - "Unable to update headline" : "Nije moguće ažurirati naslov", "Language" : "Jezik", "Help translate" : "Pomozite prevesti", "Unable to update language" : "Nije moguće ažurirati jezik", "No language set" : "Nije postavljen jezik", "Your organisation" : "Vaša organizacija", - "Unable to update organisation" : "Nije moguće ažurirati organizaciju", + "Your phone number" : "Vaš broj telefona", "Edit your Profile visibility" : "Uredite vidljivost profila", "Enable Profile" : "Omogući profil", "Unable to update profile enabled state" : "Nije moguće ažurirati stanje omogućenog profila", @@ -258,9 +257,6 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nije moguće ažurirati vidljivost za {displayId}", "Your role" : "Vaša uloga", - "Unable to update role" : "Nije moguće ažurirati ulogu", - "Unable to update federation scope of the primary {accountProperty}" : "Nije moguće ažurirati opseg udruženja primarnog {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Nije moguće ažurirati opseg udruženja dodatnog {accountProperty}", "Add" : "Dodaj", "You do not have permissions to see the details of this user" : "Nemate dopuštenja za prikaz pojedinosti ovog korisnika", "Add new password" : "Dodaj novu zaporku", @@ -338,7 +334,7 @@ OC.L10N.register( "Not saved" : "Nije spremljeno", "Sending…" : "Slanje…", "Email sent" : "E-pošta je poslana", - "Address" : "Adresa", + "Location" : "Lokacija", "Avatar" : "Avatar", "About" : "Informacije", "Full name" : "Puno ime", @@ -439,19 +435,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Član ste sljedećih grupa:", "You are using <strong>%s</strong>" : "Koristite <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Koristite <strong>%1$s</strong> od <strong>%2$s</strong> (<strong>%3$s% %</strong>)", - "Change privacy level of phone number" : "Promijeni razinu privatnosti broja telefona", - "Your phone number" : "Vaš broj telefona", - "Change privacy level of address" : "Promijeni razinu privatnosti adrese", - "Your postal address" : "Vaša poštanska adresa", - "Change privacy level of website" : "Promijeni razinu privatnosti web-mjesta", - "It can take up to 24 hours before the account is displayed as verified." : "Potvrđivanje računa može potrajati i do 24 sata.", - "Link https://…" : "Poveznica https://...", - "Change privacy level of Twitter profile" : "Promijeni razinu privatnosti Twitter profila", - "Twitter handle @…" : "Twitter ime @…", "Locale" : "Lokacija", - "Current password" : "Trenutna zaporka", - "New password" : "Nova zaporka", - "Change password" : "Promijeni zaporku", "Use a second factor besides your password to increase security for your account." : "Koristite se i drugim faktorom pored zaporke kako biste povećali sigurnost svog računa.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ako se za povezivanje s Nextcloudom koristite aplikacijama treće strane, stvorite i konfigurirajte lozinku za svaku aplikaciju prije omogućavanja drugog faktora za provođenje autentifikacije.", "Migration in progress. Please wait until the migration is finished" : "Migracije u tijeku. Pričekajte da migracija završi", @@ -484,6 +468,23 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Dopusti automatsko dovršavanje korisničkog imena prilikom unosa imena i prezimena ili adrese e-pošte (zanemarujući nedostatak podudaranja s podacima u imeniku i istoj grupi)", "Change privacy level of full name" : "Promijeni razinu privatnosti punog imena", "No display name set" : "Nije postavljeno ime za prikaz", - "Change scope level of {accountProperty}" : "Promijeni razinu opsega za {accountProperty}" + "Change privacy level of phone number" : "Promijeni razinu privatnosti broja telefona", + "Address" : "Adresa", + "Change privacy level of address" : "Promijeni razinu privatnosti adrese", + "Your postal address" : "Vaša poštanska adresa", + "Change privacy level of website" : "Promijeni razinu privatnosti web-mjesta", + "It can take up to 24 hours before the account is displayed as verified." : "Potvrđivanje računa može potrajati i do 24 sata.", + "Link https://…" : "Poveznica https://...", + "Change privacy level of Twitter profile" : "Promijeni razinu privatnosti Twitter profila", + "Twitter handle @…" : "Twitter ime @…", + "Unable to update biography" : "Nije moguće ažurirati biografiju", + "Unable to update full name" : "Nije moguće ažurirati ime i prezime", + "No full name set" : "Nije postavljeno ime i prezime", + "Unable to update headline" : "Nije moguće ažurirati naslov", + "Unable to update organisation" : "Nije moguće ažurirati organizaciju", + "Unable to update role" : "Nije moguće ažurirati ulogu", + "Change scope level of {accountProperty}" : "Promijeni razinu opsega za {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Nije moguće ažurirati opseg udruženja primarnog {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Nije moguće ažurirati opseg udruženja dodatnog {accountProperty}" }, "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json index f0ff5fbcbb9..52eab7f336a 100644 --- a/apps/settings/l10n/hr.json +++ b/apps/settings/l10n/hr.json @@ -220,11 +220,11 @@ "Remove group" : "Ukloni grupu", "You are about to remove the group {group}. The users will NOT be deleted." : "Izbrisat ćete grupu {group}. Korisnici NEĆE biti izbrisani.", "Please confirm the group removal " : "Potvrdite uklanjanje grupe ", + "Current password" : "Trenutna zaporka", + "New password" : "Nova zaporka", + "Change password" : "Promijeni zaporku", "Your biography" : "Vaša biografija", - "Unable to update biography" : "Nije moguće ažurirati biografiju", "Your full name" : "Vaše ime i prezime", - "Unable to update full name" : "Nije moguće ažurirati ime i prezime", - "No full name set" : "Nije postavljeno ime i prezime", "Email options" : "Mogućnosti e-pošte", "Primary email for password reset and notifications" : "Primarna e-pošta za resetiranje zaporke i primanje obavijesti", "Remove primary email" : "Ukloni primarnu adresu e-pošte", @@ -242,13 +242,12 @@ "No email address set" : "Nije postavljena adresa e-pošte", "Additional emails" : "Dodatne adrese e-pošte", "Your headline" : "Vaš naslov", - "Unable to update headline" : "Nije moguće ažurirati naslov", "Language" : "Jezik", "Help translate" : "Pomozite prevesti", "Unable to update language" : "Nije moguće ažurirati jezik", "No language set" : "Nije postavljen jezik", "Your organisation" : "Vaša organizacija", - "Unable to update organisation" : "Nije moguće ažurirati organizaciju", + "Your phone number" : "Vaš broj telefona", "Edit your Profile visibility" : "Uredite vidljivost profila", "Enable Profile" : "Omogući profil", "Unable to update profile enabled state" : "Nije moguće ažurirati stanje omogućenog profila", @@ -256,9 +255,6 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nije moguće ažurirati vidljivost za {displayId}", "Your role" : "Vaša uloga", - "Unable to update role" : "Nije moguće ažurirati ulogu", - "Unable to update federation scope of the primary {accountProperty}" : "Nije moguće ažurirati opseg udruženja primarnog {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Nije moguće ažurirati opseg udruženja dodatnog {accountProperty}", "Add" : "Dodaj", "You do not have permissions to see the details of this user" : "Nemate dopuštenja za prikaz pojedinosti ovog korisnika", "Add new password" : "Dodaj novu zaporku", @@ -336,7 +332,7 @@ "Not saved" : "Nije spremljeno", "Sending…" : "Slanje…", "Email sent" : "E-pošta je poslana", - "Address" : "Adresa", + "Location" : "Lokacija", "Avatar" : "Avatar", "About" : "Informacije", "Full name" : "Puno ime", @@ -437,19 +433,7 @@ "You are a member of the following groups:" : "Član ste sljedećih grupa:", "You are using <strong>%s</strong>" : "Koristite <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Koristite <strong>%1$s</strong> od <strong>%2$s</strong> (<strong>%3$s% %</strong>)", - "Change privacy level of phone number" : "Promijeni razinu privatnosti broja telefona", - "Your phone number" : "Vaš broj telefona", - "Change privacy level of address" : "Promijeni razinu privatnosti adrese", - "Your postal address" : "Vaša poštanska adresa", - "Change privacy level of website" : "Promijeni razinu privatnosti web-mjesta", - "It can take up to 24 hours before the account is displayed as verified." : "Potvrđivanje računa može potrajati i do 24 sata.", - "Link https://…" : "Poveznica https://...", - "Change privacy level of Twitter profile" : "Promijeni razinu privatnosti Twitter profila", - "Twitter handle @…" : "Twitter ime @…", "Locale" : "Lokacija", - "Current password" : "Trenutna zaporka", - "New password" : "Nova zaporka", - "Change password" : "Promijeni zaporku", "Use a second factor besides your password to increase security for your account." : "Koristite se i drugim faktorom pored zaporke kako biste povećali sigurnost svog računa.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ako se za povezivanje s Nextcloudom koristite aplikacijama treće strane, stvorite i konfigurirajte lozinku za svaku aplikaciju prije omogućavanja drugog faktora za provođenje autentifikacije.", "Migration in progress. Please wait until the migration is finished" : "Migracije u tijeku. Pričekajte da migracija završi", @@ -482,6 +466,23 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Dopusti automatsko dovršavanje korisničkog imena prilikom unosa imena i prezimena ili adrese e-pošte (zanemarujući nedostatak podudaranja s podacima u imeniku i istoj grupi)", "Change privacy level of full name" : "Promijeni razinu privatnosti punog imena", "No display name set" : "Nije postavljeno ime za prikaz", - "Change scope level of {accountProperty}" : "Promijeni razinu opsega za {accountProperty}" + "Change privacy level of phone number" : "Promijeni razinu privatnosti broja telefona", + "Address" : "Adresa", + "Change privacy level of address" : "Promijeni razinu privatnosti adrese", + "Your postal address" : "Vaša poštanska adresa", + "Change privacy level of website" : "Promijeni razinu privatnosti web-mjesta", + "It can take up to 24 hours before the account is displayed as verified." : "Potvrđivanje računa može potrajati i do 24 sata.", + "Link https://…" : "Poveznica https://...", + "Change privacy level of Twitter profile" : "Promijeni razinu privatnosti Twitter profila", + "Twitter handle @…" : "Twitter ime @…", + "Unable to update biography" : "Nije moguće ažurirati biografiju", + "Unable to update full name" : "Nije moguće ažurirati ime i prezime", + "No full name set" : "Nije postavljeno ime i prezime", + "Unable to update headline" : "Nije moguće ažurirati naslov", + "Unable to update organisation" : "Nije moguće ažurirati organizaciju", + "Unable to update role" : "Nije moguće ažurirati ulogu", + "Change scope level of {accountProperty}" : "Promijeni razinu opsega za {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Nije moguće ažurirati opseg udruženja primarnog {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Nije moguće ažurirati opseg udruženja dodatnog {accountProperty}" },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js index e03901c05eb..21d59db52bd 100644 --- a/apps/settings/l10n/hu.js +++ b/apps/settings/l10n/hu.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Csoport eltávolítása", "You are about to remove the group {group}. The users will NOT be deleted." : "A(z) {group} csoport eltávolítására készül. A felhasználók NEM lesznek törölve.", "Please confirm the group removal " : "Erősítse meg a csoport eltávolítását", + "Current password" : "Jelenlegi jelszó", + "New password" : "Új jelszó", + "Change password" : "Jelszó megváltoztatása", "Your biography" : "Az Ön életrajza", - "Unable to update biography" : "Az életrajt nem frissíthető", "Your full name" : "Az Ön teljes neve", - "Unable to update full name" : "A teljes név nem frissíthető", - "No full name set" : "Nincs teljes név megadva", "Email options" : "E-mail beállítások", "Primary email for password reset and notifications" : "Elsődleges e-mail-cím a jelszó-visszaállításhoz és az értesítésekhez", "Remove primary email" : "Elsődleges e-mail-cím eltávolítása", @@ -287,24 +287,27 @@ OC.L10N.register( "No email address set" : "Nincs e-mail-cím beállítva", "Additional emails" : "További e-mail-címek", "Your headline" : "Az Ön címsora", - "Unable to update headline" : "A címsor nem frissíthető", "Language" : "Nyelv", "Help translate" : "Segítsen a fordításban", "Unable to update language" : "A nyelv nem frissíthető", "No language set" : "Nyelv nincs beállítva", + "Your location" : "A saját helye", "Your organisation" : "Az Ön szervezete", - "Unable to update organisation" : "A szervezet nem frissíthető", - "Edit your Profile visibility" : "Profil láthatóságának szerkesztése", + "Your phone number" : "Telefonszáma", + "Edit your Profile visibility" : "Profil láthatósága", "Enable Profile" : "Profil engedélyezése", "Unable to update profile enabled state" : "A profil engedélyezési állapota nem frissíthető", "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "A profiljában a láthatóság vagy hatókör közül a szigorúbb beállítás lesz figyelembe véve. Például ha a láthatóság „Mindenki számára látható” és a hatókör „Privát”, akkor a „Privát” lesz figyelembe véve.", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "A(z) {displayId} láthatósága nem frissíthető", "Your role" : "Az Ön szerepköre", - "Unable to update role" : "A szerepkör nem frissíthető", - "Change scope level of {accountProperty}, current scope is {scope}" : "A(z) {accountProperty} hatókörszintjének módosítása, a jelenlegi hatókör: {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Az elsődleges {accountProperty} föderációs hatóköre nem frissíthető", - "Unable to update federation scope of additional {accountProperty}" : "A további {accountProperty} föderációs hatóköre nem frissíthető", + "Your Twitter handle" : "A Twitter-azonosítója", + "Your website" : "A saját weboldala", + "No {property} set" : "Nincs {property} beállítva", + "Unable to update {property}" : "A(z) {property} nem frissíthető", + "Change scope level of {property}, current scope is {scope}" : "A(z) {property} hatókörszintjének módosítása, a jelenlegi hatókör: {scope}", + "Unable to update federation scope of the primary {property}" : "Az elsődleges {property} föderációs hatóköre nem frissíthető", + "Unable to update federation scope of additional {property}" : "A további {property} föderációs hatóköre nem frissíthető", "Add additional email" : "További e-mail hozzáadása", "Add" : "Hozzáadás", "You do not have permissions to see the details of this user" : "Nincs jogosultsága megnézni a felhasználó részletes adatait", @@ -383,7 +386,7 @@ OC.L10N.register( "Not saved" : "Nincs mentve", "Sending…" : "Küldés…", "Email sent" : "E-mail elküldve", - "Address" : "Cím", + "Location" : "Hely", "Avatar" : "Profilkép", "About" : "Névjegy", "Full name" : "Teljes név", @@ -490,19 +493,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Ön a következő csoportok tagja:", "You are using <strong>%s</strong>" : "Jelenleg használt: <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jelenleg használt: <strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "A telefonszám adatvédelmi szintjének módosítása", - "Your phone number" : "Telefonszáma", - "Change privacy level of address" : "A cím adatvédelmi szintjének módosítása", - "Your postal address" : "A postai címe", - "Change privacy level of website" : "A weboldal adatvédelmi szintjének módosítása", - "It can take up to 24 hours before the account is displayed as verified." : "A fiók ellenőrzési folyamata, amíg láthatóvá válik, akár 24 óráig is eltarthat.", - "Link https://…" : "https:// hivatkozás…", - "Change privacy level of Twitter profile" : "A Twitter-profil adatvédelmi szintjének módosítása", - "Twitter handle @…" : "Twitter azonosító @…", "Locale" : "Területi beállítás", - "Current password" : "Jelenlegi jelszó", - "New password" : "Új jelszó", - "Change password" : "Jelszó megváltoztatása", "Use a second factor besides your password to increase security for your account." : "Használjon egy második faktort a jelszava mellett, hogy növelje fiókja biztonságát.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ha harmadik féltől származó alkalmazásokat használ a Nextcloudhoz való csatlakozáshoz, akkor a két faktoros hitelesítés engedélyezése előtt győződjön meg róla, hogy mindegyikhez létrehozott és beállított egy alkalmazásjelszót.", "Migration in progress. Please wait until the migration is finished" : "Áttelepítés folyamatban. Kis türelmet, míg az áttelepítés befejeződik.", @@ -536,7 +527,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "A felhasználónév automatikus kiegészítésének negedélyezése a teljes név vagy e-mail-cím megadásakor (figyelmen kívül hagyva a hiányzó telefonkönyves egyezést és az ugyanabba a csoportba tartozást)", "Change privacy level of full name" : "A teljes név adatvédelmi szintjének módosítása", "No display name set" : "Nincs megjelenítési név beállítva", + "Change privacy level of phone number" : "A telefonszám adatvédelmi szintjének módosítása", + "Address" : "Cím", + "Change privacy level of address" : "A cím adatvédelmi szintjének módosítása", + "Your postal address" : "A postai címe", + "Change privacy level of website" : "A weboldal adatvédelmi szintjének módosítása", + "It can take up to 24 hours before the account is displayed as verified." : "A fiók ellenőrzési folyamata, amíg láthatóvá válik, akár 24 óráig is eltarthat.", + "Link https://…" : "https:// hivatkozás…", + "Change privacy level of Twitter profile" : "A Twitter-profil adatvédelmi szintjének módosítása", + "Twitter handle @…" : "Twitter azonosító @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Majdnem túllépte az OPcache kulcsok legnagyobb számát. Hogy biztosítsa, hogy az összes parancsfájl tárolható legyen a gyorsítótárban, ajánlatos, hogy a(z) <code>%s</code> értéknél nagyobbra állítsa az <code>opcache.max_accelerated_files</code> beállítást a PHP konfigurációjában.", - "Change scope level of {accountProperty}" : "A(z) {accountProperty} hatókörszintjének módosítása" + "Unable to update biography" : "Az életrajt nem frissíthető", + "Unable to update full name" : "A teljes név nem frissíthető", + "No full name set" : "Nincs teljes név megadva", + "Unable to update headline" : "A címsor nem frissíthető", + "Unable to update organisation" : "A szervezet nem frissíthető", + "Unable to update role" : "A szerepkör nem frissíthető", + "Change scope level of {accountProperty}" : "A(z) {accountProperty} hatókörszintjének módosítása", + "Unable to update federation scope of the primary {accountProperty}" : "Az elsődleges {accountProperty} föderációs hatóköre nem frissíthető", + "Unable to update federation scope of additional {accountProperty}" : "A további {accountProperty} föderációs hatóköre nem frissíthető" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json index daf923ed7d0..483ac94f9f9 100644 --- a/apps/settings/l10n/hu.json +++ b/apps/settings/l10n/hu.json @@ -263,11 +263,11 @@ "Remove group" : "Csoport eltávolítása", "You are about to remove the group {group}. The users will NOT be deleted." : "A(z) {group} csoport eltávolítására készül. A felhasználók NEM lesznek törölve.", "Please confirm the group removal " : "Erősítse meg a csoport eltávolítását", + "Current password" : "Jelenlegi jelszó", + "New password" : "Új jelszó", + "Change password" : "Jelszó megváltoztatása", "Your biography" : "Az Ön életrajza", - "Unable to update biography" : "Az életrajt nem frissíthető", "Your full name" : "Az Ön teljes neve", - "Unable to update full name" : "A teljes név nem frissíthető", - "No full name set" : "Nincs teljes név megadva", "Email options" : "E-mail beállítások", "Primary email for password reset and notifications" : "Elsődleges e-mail-cím a jelszó-visszaállításhoz és az értesítésekhez", "Remove primary email" : "Elsődleges e-mail-cím eltávolítása", @@ -285,24 +285,27 @@ "No email address set" : "Nincs e-mail-cím beállítva", "Additional emails" : "További e-mail-címek", "Your headline" : "Az Ön címsora", - "Unable to update headline" : "A címsor nem frissíthető", "Language" : "Nyelv", "Help translate" : "Segítsen a fordításban", "Unable to update language" : "A nyelv nem frissíthető", "No language set" : "Nyelv nincs beállítva", + "Your location" : "A saját helye", "Your organisation" : "Az Ön szervezete", - "Unable to update organisation" : "A szervezet nem frissíthető", - "Edit your Profile visibility" : "Profil láthatóságának szerkesztése", + "Your phone number" : "Telefonszáma", + "Edit your Profile visibility" : "Profil láthatósága", "Enable Profile" : "Profil engedélyezése", "Unable to update profile enabled state" : "A profil engedélyezési állapota nem frissíthető", "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "A profiljában a láthatóság vagy hatókör közül a szigorúbb beállítás lesz figyelembe véve. Például ha a láthatóság „Mindenki számára látható” és a hatókör „Privát”, akkor a „Privát” lesz figyelembe véve.", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "A(z) {displayId} láthatósága nem frissíthető", "Your role" : "Az Ön szerepköre", - "Unable to update role" : "A szerepkör nem frissíthető", - "Change scope level of {accountProperty}, current scope is {scope}" : "A(z) {accountProperty} hatókörszintjének módosítása, a jelenlegi hatókör: {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Az elsődleges {accountProperty} föderációs hatóköre nem frissíthető", - "Unable to update federation scope of additional {accountProperty}" : "A további {accountProperty} föderációs hatóköre nem frissíthető", + "Your Twitter handle" : "A Twitter-azonosítója", + "Your website" : "A saját weboldala", + "No {property} set" : "Nincs {property} beállítva", + "Unable to update {property}" : "A(z) {property} nem frissíthető", + "Change scope level of {property}, current scope is {scope}" : "A(z) {property} hatókörszintjének módosítása, a jelenlegi hatókör: {scope}", + "Unable to update federation scope of the primary {property}" : "Az elsődleges {property} föderációs hatóköre nem frissíthető", + "Unable to update federation scope of additional {property}" : "A további {property} föderációs hatóköre nem frissíthető", "Add additional email" : "További e-mail hozzáadása", "Add" : "Hozzáadás", "You do not have permissions to see the details of this user" : "Nincs jogosultsága megnézni a felhasználó részletes adatait", @@ -381,7 +384,7 @@ "Not saved" : "Nincs mentve", "Sending…" : "Küldés…", "Email sent" : "E-mail elküldve", - "Address" : "Cím", + "Location" : "Hely", "Avatar" : "Profilkép", "About" : "Névjegy", "Full name" : "Teljes név", @@ -488,19 +491,7 @@ "You are a member of the following groups:" : "Ön a következő csoportok tagja:", "You are using <strong>%s</strong>" : "Jelenleg használt: <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jelenleg használt: <strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "A telefonszám adatvédelmi szintjének módosítása", - "Your phone number" : "Telefonszáma", - "Change privacy level of address" : "A cím adatvédelmi szintjének módosítása", - "Your postal address" : "A postai címe", - "Change privacy level of website" : "A weboldal adatvédelmi szintjének módosítása", - "It can take up to 24 hours before the account is displayed as verified." : "A fiók ellenőrzési folyamata, amíg láthatóvá válik, akár 24 óráig is eltarthat.", - "Link https://…" : "https:// hivatkozás…", - "Change privacy level of Twitter profile" : "A Twitter-profil adatvédelmi szintjének módosítása", - "Twitter handle @…" : "Twitter azonosító @…", "Locale" : "Területi beállítás", - "Current password" : "Jelenlegi jelszó", - "New password" : "Új jelszó", - "Change password" : "Jelszó megváltoztatása", "Use a second factor besides your password to increase security for your account." : "Használjon egy második faktort a jelszava mellett, hogy növelje fiókja biztonságát.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ha harmadik féltől származó alkalmazásokat használ a Nextcloudhoz való csatlakozáshoz, akkor a két faktoros hitelesítés engedélyezése előtt győződjön meg róla, hogy mindegyikhez létrehozott és beállított egy alkalmazásjelszót.", "Migration in progress. Please wait until the migration is finished" : "Áttelepítés folyamatban. Kis türelmet, míg az áttelepítés befejeződik.", @@ -534,7 +525,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "A felhasználónév automatikus kiegészítésének negedélyezése a teljes név vagy e-mail-cím megadásakor (figyelmen kívül hagyva a hiányzó telefonkönyves egyezést és az ugyanabba a csoportba tartozást)", "Change privacy level of full name" : "A teljes név adatvédelmi szintjének módosítása", "No display name set" : "Nincs megjelenítési név beállítva", + "Change privacy level of phone number" : "A telefonszám adatvédelmi szintjének módosítása", + "Address" : "Cím", + "Change privacy level of address" : "A cím adatvédelmi szintjének módosítása", + "Your postal address" : "A postai címe", + "Change privacy level of website" : "A weboldal adatvédelmi szintjének módosítása", + "It can take up to 24 hours before the account is displayed as verified." : "A fiók ellenőrzési folyamata, amíg láthatóvá válik, akár 24 óráig is eltarthat.", + "Link https://…" : "https:// hivatkozás…", + "Change privacy level of Twitter profile" : "A Twitter-profil adatvédelmi szintjének módosítása", + "Twitter handle @…" : "Twitter azonosító @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Majdnem túllépte az OPcache kulcsok legnagyobb számát. Hogy biztosítsa, hogy az összes parancsfájl tárolható legyen a gyorsítótárban, ajánlatos, hogy a(z) <code>%s</code> értéknél nagyobbra állítsa az <code>opcache.max_accelerated_files</code> beállítást a PHP konfigurációjában.", - "Change scope level of {accountProperty}" : "A(z) {accountProperty} hatókörszintjének módosítása" + "Unable to update biography" : "Az életrajt nem frissíthető", + "Unable to update full name" : "A teljes név nem frissíthető", + "No full name set" : "Nincs teljes név megadva", + "Unable to update headline" : "A címsor nem frissíthető", + "Unable to update organisation" : "A szervezet nem frissíthető", + "Unable to update role" : "A szerepkör nem frissíthető", + "Change scope level of {accountProperty}" : "A(z) {accountProperty} hatókörszintjének módosítása", + "Unable to update federation scope of the primary {accountProperty}" : "Az elsődleges {accountProperty} föderációs hatóköre nem frissíthető", + "Unable to update federation scope of additional {accountProperty}" : "A további {accountProperty} föderációs hatóköre nem frissíthető" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/ia.js b/apps/settings/l10n/ia.js index e75452c44f6..f6d60aa3761 100644 --- a/apps/settings/l10n/ia.js +++ b/apps/settings/l10n/ia.js @@ -68,10 +68,15 @@ OC.L10N.register( "Copy" : "Copiar", "Enable" : "Activar", "Select default encryption module:" : "Selectionar modulo de cryptographia standard", + "Current password" : "Contrasigno actual", + "New password" : "Nove contrasigno", + "Change password" : "Cambiar contrasigno", "Your email address" : "Tu adresse de e-posta", "No email address set" : "Nulle adresse de e-posta definite", "Language" : "Lingua", "Help translate" : "Adjuta a traducer", + "Your phone number" : "Tu numero de telephono", + "Your website" : "Tu sito web", "Add" : "Adder", "Cancel" : "Cancellar", "Display name" : "Monstrar nomine", @@ -85,7 +90,7 @@ OC.L10N.register( "Send email to new user" : "Inviar message de e-posta a nove usator", "Not saved" : "Non salveguardate", "Email sent" : "Message de e-posta inviate", - "Address" : "Adresse", + "Location" : "Loco", "About" : "A proposito", "Full name" : "Nomine complete", "Phone number" : "Numero de telephono", @@ -123,11 +128,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "formato png o jpg, dimension maxime 20 MB", "Picture provided by original account" : "Pictura fornite per conto original", "Choose as profile picture" : "Selectiona como pictura de profilo", - "Your phone number" : "Tu numero de telephono", - "Your postal address" : "Tu adresse postal", - "Current password" : "Contrasigno actual", - "New password" : "Nove contrasigno", - "Change password" : "Cambiar contrasigno", "Migration in progress. Please wait until the migration is finished" : "Migration in progresso. Per favor, attende usque le migration es finite.", "Migration started …" : "Migration initiate...", "Couldn't remove app." : "Impossibile remover application.", @@ -137,6 +137,8 @@ OC.L10N.register( "Test email settings" : "Testar configurationes de e-posta", "Enable encryption" : "Activar cryptographia", "Start migration" : "Initiar migration", - "days" : "dies" + "days" : "dies", + "Address" : "Adresse", + "Your postal address" : "Tu adresse postal" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/ia.json b/apps/settings/l10n/ia.json index a46163146b2..5e5a8944190 100644 --- a/apps/settings/l10n/ia.json +++ b/apps/settings/l10n/ia.json @@ -66,10 +66,15 @@ "Copy" : "Copiar", "Enable" : "Activar", "Select default encryption module:" : "Selectionar modulo de cryptographia standard", + "Current password" : "Contrasigno actual", + "New password" : "Nove contrasigno", + "Change password" : "Cambiar contrasigno", "Your email address" : "Tu adresse de e-posta", "No email address set" : "Nulle adresse de e-posta definite", "Language" : "Lingua", "Help translate" : "Adjuta a traducer", + "Your phone number" : "Tu numero de telephono", + "Your website" : "Tu sito web", "Add" : "Adder", "Cancel" : "Cancellar", "Display name" : "Monstrar nomine", @@ -83,7 +88,7 @@ "Send email to new user" : "Inviar message de e-posta a nove usator", "Not saved" : "Non salveguardate", "Email sent" : "Message de e-posta inviate", - "Address" : "Adresse", + "Location" : "Loco", "About" : "A proposito", "Full name" : "Nomine complete", "Phone number" : "Numero de telephono", @@ -121,11 +126,6 @@ "png or jpg, max. 20 MB" : "formato png o jpg, dimension maxime 20 MB", "Picture provided by original account" : "Pictura fornite per conto original", "Choose as profile picture" : "Selectiona como pictura de profilo", - "Your phone number" : "Tu numero de telephono", - "Your postal address" : "Tu adresse postal", - "Current password" : "Contrasigno actual", - "New password" : "Nove contrasigno", - "Change password" : "Cambiar contrasigno", "Migration in progress. Please wait until the migration is finished" : "Migration in progresso. Per favor, attende usque le migration es finite.", "Migration started …" : "Migration initiate...", "Couldn't remove app." : "Impossibile remover application.", @@ -135,6 +135,8 @@ "Test email settings" : "Testar configurationes de e-posta", "Enable encryption" : "Activar cryptographia", "Start migration" : "Initiar migration", - "days" : "dies" + "days" : "dies", + "Address" : "Adresse", + "Your postal address" : "Tu adresse postal" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js index a0debb13373..0f3eafc266b 100644 --- a/apps/settings/l10n/id.js +++ b/apps/settings/l10n/id.js @@ -202,10 +202,11 @@ OC.L10N.register( "Remove group" : "Hapus grup", "You are about to remove the group {group}. The users will NOT be deleted." : "Anda akan menghapus grup {group}. Pengguna di dalamnya TIDAK akan dihapus.", "Please confirm the group removal " : "Mohon konfirmasi penghapusan grup", + "Current password" : "Kata sandi saat ini", + "New password" : "Kata sandi baru", + "Change password" : "Ubah kata sandi", "Your biography" : "Biografi Anda", - "Unable to update biography" : "Tidak dapat memperbarui biografi", "Your full name" : "Nama lengkap Anda", - "Unable to update full name" : "Tidak dapat memperbarui nama lengkap", "Primary email for password reset and notifications" : "Email utama untuk pengaturan ulang kata sandi dan pemberitahuan", "Remove primary email" : "Hapus email utama", "Your email address" : "Alamat surel Anda", @@ -213,6 +214,7 @@ OC.L10N.register( "Language" : "Bahasa", "Help translate" : "Bantu menerjemahkan", "No language set" : "Tidak ada bahasa yang disetel", + "Your phone number" : "Nomor telefon Anda", "Edit your Profile visibility" : "Ubah visibilitas Profil Anda", "Add" : "Masukkan", "You do not have permissions to see the details of this user" : "Anda tidak memiliki ijin untuk melihat detil pengguna ini", @@ -264,7 +266,7 @@ OC.L10N.register( "Not saved" : "Belum disimpan", "Sending…" : "Mengirim…", "Email sent" : "Surel terkirim", - "Address" : "Alamat", + "Location" : "Lokasi", "Avatar" : "Avatar", "About" : "Tentang.", "Full name" : "Nama lengkap", @@ -339,14 +341,6 @@ OC.L10N.register( "You are a member of the following groups:" : "Anda adalah seorang anggota dari grup berikut ini:", "You are using <strong>%s</strong>" : "Anda menggunakan <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Anda menggunakan <strong>%1$s</strong> dari<strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Nomor telefon Anda", - "Your postal address" : "Alamat post Anda", - "It can take up to 24 hours before the account is displayed as verified." : "Ini akan memerlukan hingga 24 jam sebelum akun diverifikasi.", - "Link https://…" : "Tautan https://...", - "Twitter handle @…" : "Twitter handle @…", - "Current password" : "Kata sandi saat ini", - "New password" : "Kata sandi baru", - "Change password" : "Ubah kata sandi", "Migration in progress. Please wait until the migration is finished" : "Migrasi sedang dalam proses. Mohon tunggu sampai migrasi selesai", "Migration started …" : "Migrasi dimulai …", "Couldn't remove app." : "Tidak dapat menghapus aplikasi.", @@ -368,6 +362,13 @@ OC.L10N.register( "Pick background job setting" : "Pilih pengaturan pekerjaan latar belakang", "Recommended" : "Direkomendasikan", "days" : "hari", - "No display name set" : "Nama tampilan tidak diatur" + "No display name set" : "Nama tampilan tidak diatur", + "Address" : "Alamat", + "Your postal address" : "Alamat post Anda", + "It can take up to 24 hours before the account is displayed as verified." : "Ini akan memerlukan hingga 24 jam sebelum akun diverifikasi.", + "Link https://…" : "Tautan https://...", + "Twitter handle @…" : "Twitter handle @…", + "Unable to update biography" : "Tidak dapat memperbarui biografi", + "Unable to update full name" : "Tidak dapat memperbarui nama lengkap" }, "nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json index f82e49daeaf..183e6ee6d15 100644 --- a/apps/settings/l10n/id.json +++ b/apps/settings/l10n/id.json @@ -200,10 +200,11 @@ "Remove group" : "Hapus grup", "You are about to remove the group {group}. The users will NOT be deleted." : "Anda akan menghapus grup {group}. Pengguna di dalamnya TIDAK akan dihapus.", "Please confirm the group removal " : "Mohon konfirmasi penghapusan grup", + "Current password" : "Kata sandi saat ini", + "New password" : "Kata sandi baru", + "Change password" : "Ubah kata sandi", "Your biography" : "Biografi Anda", - "Unable to update biography" : "Tidak dapat memperbarui biografi", "Your full name" : "Nama lengkap Anda", - "Unable to update full name" : "Tidak dapat memperbarui nama lengkap", "Primary email for password reset and notifications" : "Email utama untuk pengaturan ulang kata sandi dan pemberitahuan", "Remove primary email" : "Hapus email utama", "Your email address" : "Alamat surel Anda", @@ -211,6 +212,7 @@ "Language" : "Bahasa", "Help translate" : "Bantu menerjemahkan", "No language set" : "Tidak ada bahasa yang disetel", + "Your phone number" : "Nomor telefon Anda", "Edit your Profile visibility" : "Ubah visibilitas Profil Anda", "Add" : "Masukkan", "You do not have permissions to see the details of this user" : "Anda tidak memiliki ijin untuk melihat detil pengguna ini", @@ -262,7 +264,7 @@ "Not saved" : "Belum disimpan", "Sending…" : "Mengirim…", "Email sent" : "Surel terkirim", - "Address" : "Alamat", + "Location" : "Lokasi", "Avatar" : "Avatar", "About" : "Tentang.", "Full name" : "Nama lengkap", @@ -337,14 +339,6 @@ "You are a member of the following groups:" : "Anda adalah seorang anggota dari grup berikut ini:", "You are using <strong>%s</strong>" : "Anda menggunakan <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Anda menggunakan <strong>%1$s</strong> dari<strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Nomor telefon Anda", - "Your postal address" : "Alamat post Anda", - "It can take up to 24 hours before the account is displayed as verified." : "Ini akan memerlukan hingga 24 jam sebelum akun diverifikasi.", - "Link https://…" : "Tautan https://...", - "Twitter handle @…" : "Twitter handle @…", - "Current password" : "Kata sandi saat ini", - "New password" : "Kata sandi baru", - "Change password" : "Ubah kata sandi", "Migration in progress. Please wait until the migration is finished" : "Migrasi sedang dalam proses. Mohon tunggu sampai migrasi selesai", "Migration started …" : "Migrasi dimulai …", "Couldn't remove app." : "Tidak dapat menghapus aplikasi.", @@ -366,6 +360,13 @@ "Pick background job setting" : "Pilih pengaturan pekerjaan latar belakang", "Recommended" : "Direkomendasikan", "days" : "hari", - "No display name set" : "Nama tampilan tidak diatur" + "No display name set" : "Nama tampilan tidak diatur", + "Address" : "Alamat", + "Your postal address" : "Alamat post Anda", + "It can take up to 24 hours before the account is displayed as verified." : "Ini akan memerlukan hingga 24 jam sebelum akun diverifikasi.", + "Link https://…" : "Tautan https://...", + "Twitter handle @…" : "Twitter handle @…", + "Unable to update biography" : "Tidak dapat memperbarui biografi", + "Unable to update full name" : "Tidak dapat memperbarui nama lengkap" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js index b772a45fd5a..45ffa806fa7 100644 --- a/apps/settings/l10n/is.js +++ b/apps/settings/l10n/is.js @@ -192,11 +192,17 @@ OC.L10N.register( "Remove group" : "Fjarlægja hóp", "You are about to remove the group {group}. The users will NOT be deleted." : "Þú er í þann mund að fara að fjarlægja hópinn {group}. Notendunum verður EKKI eytt.", "Please confirm the group removal " : "Staðfestu fjarlægingu hópsins", + "Current password" : "Núverandi lykilorð", + "New password" : "Nýtt lykilorð", + "Change password" : "Breyta lykilorði", "Your email address" : "Netfangið þitt", "No email address set" : "Ekkert tölvupóstfang sett", "Language" : "Tungumál", "Help translate" : "Hjálpa við þýðingu", "No language set" : "Ekkert tungumál skilgreint", + "Your phone number" : "Símanúmerið þitt", + "Your Twitter handle" : "Twitter notandanafnið þitt", + "Your website" : "Vefsvæðið þitt", "Add" : "Bæta við", "You do not have permissions to see the details of this user" : "Þú hefur ekki réttindi til að skoða ítarupplýsingar um þennan notanda", "Set user as admin for" : "Setja notanda sem stjórnanda fyrir", @@ -237,6 +243,7 @@ OC.L10N.register( "Passwordless Authentication" : "Lykilorðalaus auðkenning", "Set up your account for passwordless authentication following the FIDO2 standard." : "Settu aðganginn þinn upp fyrir lykilorðalausa auðkenningu byggða á FIDO2-staðlinum.", "No devices configured." : "Engin tæki skilgreind.", + "Your browser does not support WebAuthn." : "Vafrinn þinn styður ekki WebAuthn.", "Your apps" : "Forritin þín", "Active apps" : "Virk forrit", "Disabled apps" : "Óvirk forrit", @@ -259,7 +266,7 @@ OC.L10N.register( "Not saved" : "Ekki vistað", "Sending…" : "Sendi...", "Email sent" : "Tölvupóstur sendur", - "Address" : "Heimilisfang", + "Location" : "Staðsetning", "Avatar" : "Auðkennismynd", "About" : "Um hugbúnaðinn", "Full name" : "Fullt nafn", @@ -327,6 +334,7 @@ OC.L10N.register( "Follow us on Mastodon" : "Fylgstu með okkur á Mastodon", "Check out our blog" : "Kíktu á bloggið okkar", "Subscribe to our newsletter" : "Gerstu áskrifandi að fréttabréfinu okkar", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Þessi samfélagsútgáfa Nextcloud kemur ekki með neinni opinberri aðstoð og rauntímatilkynningar eru ekki til taks.", "Profile picture" : "Einkennismynd", "Upload new" : "Senda inn nýtt", "Select from Files" : "Veldu skrár", @@ -337,15 +345,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Þú ert meðlimur eftirfarandi hópa:", "You are using <strong>%s</strong>" : "Þú ert að nota <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Þú ert að nota <strong>%1$s</strong> af <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Símanúmerið þitt", - "Your postal address" : "Heimilisfangið þitt", - "It can take up to 24 hours before the account is displayed as verified." : "Það getur tekið allt að 24 klukkustundum áður en notandaaðgangurinn er birtur sem sannvottaður.", - "Link https://…" : "Tengill https://…", - "Twitter handle @…" : "Twitter notandanafn @…", "Locale" : "Staðfærsla", - "Current password" : "Núverandi lykilorð", - "New password" : "Nýtt lykilorð", - "Change password" : "Breyta lykilorði", "Use a second factor besides your password to increase security for your account." : "Notaðu annað þrep til viðbótar lykilorðinu þínu til að auka öryggi notandaaðgangsins þíns.", "Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið", "Migration started …" : "Yfirfærsla hafin...", @@ -368,6 +368,11 @@ OC.L10N.register( "Recommended" : "Mælt með", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".", "days" : "daga", - "No display name set" : "Ekkert birtingarnafn sett" + "No display name set" : "Ekkert birtingarnafn sett", + "Address" : "Heimilisfang", + "Your postal address" : "Heimilisfangið þitt", + "It can take up to 24 hours before the account is displayed as verified." : "Það getur tekið allt að 24 klukkustundum áður en notandaaðgangurinn er birtur sem sannvottaður.", + "Link https://…" : "Tengill https://…", + "Twitter handle @…" : "Twitter notandanafn @…" }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json index d2ec07002ac..0b3a7dff805 100644 --- a/apps/settings/l10n/is.json +++ b/apps/settings/l10n/is.json @@ -190,11 +190,17 @@ "Remove group" : "Fjarlægja hóp", "You are about to remove the group {group}. The users will NOT be deleted." : "Þú er í þann mund að fara að fjarlægja hópinn {group}. Notendunum verður EKKI eytt.", "Please confirm the group removal " : "Staðfestu fjarlægingu hópsins", + "Current password" : "Núverandi lykilorð", + "New password" : "Nýtt lykilorð", + "Change password" : "Breyta lykilorði", "Your email address" : "Netfangið þitt", "No email address set" : "Ekkert tölvupóstfang sett", "Language" : "Tungumál", "Help translate" : "Hjálpa við þýðingu", "No language set" : "Ekkert tungumál skilgreint", + "Your phone number" : "Símanúmerið þitt", + "Your Twitter handle" : "Twitter notandanafnið þitt", + "Your website" : "Vefsvæðið þitt", "Add" : "Bæta við", "You do not have permissions to see the details of this user" : "Þú hefur ekki réttindi til að skoða ítarupplýsingar um þennan notanda", "Set user as admin for" : "Setja notanda sem stjórnanda fyrir", @@ -235,6 +241,7 @@ "Passwordless Authentication" : "Lykilorðalaus auðkenning", "Set up your account for passwordless authentication following the FIDO2 standard." : "Settu aðganginn þinn upp fyrir lykilorðalausa auðkenningu byggða á FIDO2-staðlinum.", "No devices configured." : "Engin tæki skilgreind.", + "Your browser does not support WebAuthn." : "Vafrinn þinn styður ekki WebAuthn.", "Your apps" : "Forritin þín", "Active apps" : "Virk forrit", "Disabled apps" : "Óvirk forrit", @@ -257,7 +264,7 @@ "Not saved" : "Ekki vistað", "Sending…" : "Sendi...", "Email sent" : "Tölvupóstur sendur", - "Address" : "Heimilisfang", + "Location" : "Staðsetning", "Avatar" : "Auðkennismynd", "About" : "Um hugbúnaðinn", "Full name" : "Fullt nafn", @@ -325,6 +332,7 @@ "Follow us on Mastodon" : "Fylgstu með okkur á Mastodon", "Check out our blog" : "Kíktu á bloggið okkar", "Subscribe to our newsletter" : "Gerstu áskrifandi að fréttabréfinu okkar", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Þessi samfélagsútgáfa Nextcloud kemur ekki með neinni opinberri aðstoð og rauntímatilkynningar eru ekki til taks.", "Profile picture" : "Einkennismynd", "Upload new" : "Senda inn nýtt", "Select from Files" : "Veldu skrár", @@ -335,15 +343,7 @@ "You are a member of the following groups:" : "Þú ert meðlimur eftirfarandi hópa:", "You are using <strong>%s</strong>" : "Þú ert að nota <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Þú ert að nota <strong>%1$s</strong> af <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Símanúmerið þitt", - "Your postal address" : "Heimilisfangið þitt", - "It can take up to 24 hours before the account is displayed as verified." : "Það getur tekið allt að 24 klukkustundum áður en notandaaðgangurinn er birtur sem sannvottaður.", - "Link https://…" : "Tengill https://…", - "Twitter handle @…" : "Twitter notandanafn @…", "Locale" : "Staðfærsla", - "Current password" : "Núverandi lykilorð", - "New password" : "Nýtt lykilorð", - "Change password" : "Breyta lykilorði", "Use a second factor besides your password to increase security for your account." : "Notaðu annað þrep til viðbótar lykilorðinu þínu til að auka öryggi notandaaðgangsins þíns.", "Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið", "Migration started …" : "Yfirfærsla hafin...", @@ -366,6 +366,11 @@ "Recommended" : "Mælt með", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php verður að vera keyrt af kerfisnotandanum \"%s\".", "days" : "daga", - "No display name set" : "Ekkert birtingarnafn sett" + "No display name set" : "Ekkert birtingarnafn sett", + "Address" : "Heimilisfang", + "Your postal address" : "Heimilisfangið þitt", + "It can take up to 24 hours before the account is displayed as verified." : "Það getur tekið allt að 24 klukkustundum áður en notandaaðgangurinn er birtur sem sannvottaður.", + "Link https://…" : "Tengill https://…", + "Twitter handle @…" : "Twitter notandanafn @…" },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js index 098dda4da6a..1cd103ce41d 100644 --- a/apps/settings/l10n/it.js +++ b/apps/settings/l10n/it.js @@ -246,11 +246,11 @@ OC.L10N.register( "Remove group" : "Rimuovi gruppo", "You are about to remove the group {group}. The users will NOT be deleted." : "Stai per rimuovere il gruppo {group}. Gli utenti NON saranno eliminati.", "Please confirm the group removal " : "Conferma la rimozione del gruppo", + "Current password" : "Password attuale", + "New password" : "Nuova password", + "Change password" : "Modifica password", "Your biography" : "La tua biografia", - "Unable to update biography" : "Impossibile aggiornare la biografia", "Your full name" : "Il tuo nome completo", - "Unable to update full name" : "Impossibile aggiornare il nome completo", - "No full name set" : "Nessun nome impostato", "Email options" : "Opzioni email", "Primary email for password reset and notifications" : "Email principale per ripristino della password e notifiche", "Remove primary email" : "Rimuovi email principale", @@ -268,13 +268,12 @@ OC.L10N.register( "No email address set" : "Nessun indirizzo email impostato", "Additional emails" : "Email aggiuntive", "Your headline" : "Il tuo titolo", - "Unable to update headline" : "Impossibile aggiornare il titolo", "Language" : "Lingua", "Help translate" : "Migliora la traduzione", "Unable to update language" : "Impossibile aggiornare la lingua", "No language set" : "Nessuna lingua impostata", "Your organisation" : "La tua organizzazione", - "Unable to update organisation" : "Impossibile aggiornare l'organizzazione", + "Your phone number" : "Il tuo numero di telefono", "Edit your Profile visibility" : "Modifica la visibilità del profilo", "Enable Profile" : "Attiva profilo", "Unable to update profile enabled state" : "Impossibile aggiornare lo stato di attivazione del profilo", @@ -282,9 +281,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Impossibile aggiornare la visibilità di {displayId}", "Your role" : "Il tuo ruolo", - "Unable to update role" : "Impossibile aggiornare il ruolo", - "Unable to update federation scope of the primary {accountProperty}" : "Impossibile aggiornare l'ambito federativo del {accountProperty} primario", - "Unable to update federation scope of additional {accountProperty}" : "Impossibile aggiornare l'ambito federativo del {accountProperty} aggiuntivo", + "Your Twitter handle" : "Il tuo nome utente su Twitter", + "Your website" : "Il tuo sito web", "Add additional email" : "Aggiungi email aggiuntiva", "Add" : "Aggiungi", "You do not have permissions to see the details of this user" : "Non hai i permessi per vedere i dettagli di questo utente", @@ -363,7 +361,7 @@ OC.L10N.register( "Not saved" : "Non salvato", "Sending…" : "Invio in corso...", "Email sent" : "Email inviata", - "Address" : "Indirizzo", + "Location" : "Posizione", "Avatar" : "Avatar", "About" : "Informazioni", "Full name" : "Nome completo", @@ -467,19 +465,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Sei un membro dei seguenti gruppi:", "You are using <strong>%s</strong>" : "Stai utilizzando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Stai utilizzando <strong>%1$s</strong> di <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Cambia livello di privacy del numero di telefono", - "Your phone number" : "Il tuo numero di telefono", - "Change privacy level of address" : "Cambia livello di privacy dell'indirizzo", - "Your postal address" : "Il tuo indirizzo postale", - "Change privacy level of website" : "Cambia livello di privacy del sito web", - "It can take up to 24 hours before the account is displayed as verified." : "Potrebbero essere necessarie 24 ore prima che l'account sia visualizzato come verificato.", - "Link https://…" : "Collegamento https://...", - "Change privacy level of Twitter profile" : "Cambia livello di privacy del profilo Twitter", - "Twitter handle @…" : "Nome utente Twitter @...", "Locale" : "Localizzazione", - "Current password" : "Password attuale", - "New password" : "Nuova password", - "Change password" : "Modifica password", "Use a second factor besides your password to increase security for your account." : "Utilizza un secondo fattore oltre alla tua password per aumentare la sicurezza per il tuo account.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Se utilizzi applicazioni di terze parti per connetterti a Nextcloud, assicurati di creare e configurare una password per ciascuna applicazione prima di abilitare l'autenticazione a due fattori.", "Migration in progress. Please wait until the migration is finished" : "Migrazione in corso. Attendi fino al completamento della migrazione", @@ -512,6 +498,23 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Consenti il completamento del nome utente inserendo il nome o l'indirizzo email (ignorando la mancanza in rubrica ed essendo nello stesso gruppo)", "Change privacy level of full name" : "Cambia livello di privacy del nome completo", "No display name set" : "Nome visualizzato non impostato", - "Change scope level of {accountProperty}" : "Cambia livello di ambito di {accountProperty}" + "Change privacy level of phone number" : "Cambia livello di privacy del numero di telefono", + "Address" : "Indirizzo", + "Change privacy level of address" : "Cambia livello di privacy dell'indirizzo", + "Your postal address" : "Il tuo indirizzo postale", + "Change privacy level of website" : "Cambia livello di privacy del sito web", + "It can take up to 24 hours before the account is displayed as verified." : "Potrebbero essere necessarie 24 ore prima che l'account sia visualizzato come verificato.", + "Link https://…" : "Collegamento https://...", + "Change privacy level of Twitter profile" : "Cambia livello di privacy del profilo Twitter", + "Twitter handle @…" : "Nome utente Twitter @...", + "Unable to update biography" : "Impossibile aggiornare la biografia", + "Unable to update full name" : "Impossibile aggiornare il nome completo", + "No full name set" : "Nessun nome impostato", + "Unable to update headline" : "Impossibile aggiornare il titolo", + "Unable to update organisation" : "Impossibile aggiornare l'organizzazione", + "Unable to update role" : "Impossibile aggiornare il ruolo", + "Change scope level of {accountProperty}" : "Cambia livello di ambito di {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Impossibile aggiornare l'ambito federativo del {accountProperty} primario", + "Unable to update federation scope of additional {accountProperty}" : "Impossibile aggiornare l'ambito federativo del {accountProperty} aggiuntivo" }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json index 78878ab2fa3..819ed7cccd5 100644 --- a/apps/settings/l10n/it.json +++ b/apps/settings/l10n/it.json @@ -244,11 +244,11 @@ "Remove group" : "Rimuovi gruppo", "You are about to remove the group {group}. The users will NOT be deleted." : "Stai per rimuovere il gruppo {group}. Gli utenti NON saranno eliminati.", "Please confirm the group removal " : "Conferma la rimozione del gruppo", + "Current password" : "Password attuale", + "New password" : "Nuova password", + "Change password" : "Modifica password", "Your biography" : "La tua biografia", - "Unable to update biography" : "Impossibile aggiornare la biografia", "Your full name" : "Il tuo nome completo", - "Unable to update full name" : "Impossibile aggiornare il nome completo", - "No full name set" : "Nessun nome impostato", "Email options" : "Opzioni email", "Primary email for password reset and notifications" : "Email principale per ripristino della password e notifiche", "Remove primary email" : "Rimuovi email principale", @@ -266,13 +266,12 @@ "No email address set" : "Nessun indirizzo email impostato", "Additional emails" : "Email aggiuntive", "Your headline" : "Il tuo titolo", - "Unable to update headline" : "Impossibile aggiornare il titolo", "Language" : "Lingua", "Help translate" : "Migliora la traduzione", "Unable to update language" : "Impossibile aggiornare la lingua", "No language set" : "Nessuna lingua impostata", "Your organisation" : "La tua organizzazione", - "Unable to update organisation" : "Impossibile aggiornare l'organizzazione", + "Your phone number" : "Il tuo numero di telefono", "Edit your Profile visibility" : "Modifica la visibilità del profilo", "Enable Profile" : "Attiva profilo", "Unable to update profile enabled state" : "Impossibile aggiornare lo stato di attivazione del profilo", @@ -280,9 +279,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Impossibile aggiornare la visibilità di {displayId}", "Your role" : "Il tuo ruolo", - "Unable to update role" : "Impossibile aggiornare il ruolo", - "Unable to update federation scope of the primary {accountProperty}" : "Impossibile aggiornare l'ambito federativo del {accountProperty} primario", - "Unable to update federation scope of additional {accountProperty}" : "Impossibile aggiornare l'ambito federativo del {accountProperty} aggiuntivo", + "Your Twitter handle" : "Il tuo nome utente su Twitter", + "Your website" : "Il tuo sito web", "Add additional email" : "Aggiungi email aggiuntiva", "Add" : "Aggiungi", "You do not have permissions to see the details of this user" : "Non hai i permessi per vedere i dettagli di questo utente", @@ -361,7 +359,7 @@ "Not saved" : "Non salvato", "Sending…" : "Invio in corso...", "Email sent" : "Email inviata", - "Address" : "Indirizzo", + "Location" : "Posizione", "Avatar" : "Avatar", "About" : "Informazioni", "Full name" : "Nome completo", @@ -465,19 +463,7 @@ "You are a member of the following groups:" : "Sei un membro dei seguenti gruppi:", "You are using <strong>%s</strong>" : "Stai utilizzando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Stai utilizzando <strong>%1$s</strong> di <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Cambia livello di privacy del numero di telefono", - "Your phone number" : "Il tuo numero di telefono", - "Change privacy level of address" : "Cambia livello di privacy dell'indirizzo", - "Your postal address" : "Il tuo indirizzo postale", - "Change privacy level of website" : "Cambia livello di privacy del sito web", - "It can take up to 24 hours before the account is displayed as verified." : "Potrebbero essere necessarie 24 ore prima che l'account sia visualizzato come verificato.", - "Link https://…" : "Collegamento https://...", - "Change privacy level of Twitter profile" : "Cambia livello di privacy del profilo Twitter", - "Twitter handle @…" : "Nome utente Twitter @...", "Locale" : "Localizzazione", - "Current password" : "Password attuale", - "New password" : "Nuova password", - "Change password" : "Modifica password", "Use a second factor besides your password to increase security for your account." : "Utilizza un secondo fattore oltre alla tua password per aumentare la sicurezza per il tuo account.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Se utilizzi applicazioni di terze parti per connetterti a Nextcloud, assicurati di creare e configurare una password per ciascuna applicazione prima di abilitare l'autenticazione a due fattori.", "Migration in progress. Please wait until the migration is finished" : "Migrazione in corso. Attendi fino al completamento della migrazione", @@ -510,6 +496,23 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Consenti il completamento del nome utente inserendo il nome o l'indirizzo email (ignorando la mancanza in rubrica ed essendo nello stesso gruppo)", "Change privacy level of full name" : "Cambia livello di privacy del nome completo", "No display name set" : "Nome visualizzato non impostato", - "Change scope level of {accountProperty}" : "Cambia livello di ambito di {accountProperty}" + "Change privacy level of phone number" : "Cambia livello di privacy del numero di telefono", + "Address" : "Indirizzo", + "Change privacy level of address" : "Cambia livello di privacy dell'indirizzo", + "Your postal address" : "Il tuo indirizzo postale", + "Change privacy level of website" : "Cambia livello di privacy del sito web", + "It can take up to 24 hours before the account is displayed as verified." : "Potrebbero essere necessarie 24 ore prima che l'account sia visualizzato come verificato.", + "Link https://…" : "Collegamento https://...", + "Change privacy level of Twitter profile" : "Cambia livello di privacy del profilo Twitter", + "Twitter handle @…" : "Nome utente Twitter @...", + "Unable to update biography" : "Impossibile aggiornare la biografia", + "Unable to update full name" : "Impossibile aggiornare il nome completo", + "No full name set" : "Nessun nome impostato", + "Unable to update headline" : "Impossibile aggiornare il titolo", + "Unable to update organisation" : "Impossibile aggiornare l'organizzazione", + "Unable to update role" : "Impossibile aggiornare il ruolo", + "Change scope level of {accountProperty}" : "Cambia livello di ambito di {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Impossibile aggiornare l'ambito federativo del {accountProperty} primario", + "Unable to update federation scope of additional {accountProperty}" : "Impossibile aggiornare l'ambito federativo del {accountProperty} aggiuntivo" },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js index 104cc0dfb0a..bdd6b7b1396 100644 --- a/apps/settings/l10n/ja.js +++ b/apps/settings/l10n/ja.js @@ -261,11 +261,11 @@ OC.L10N.register( "Remove group" : "グループを削除", "You are about to remove the group {group}. The users will NOT be deleted." : "{group}グループを削除しようとしています。 ユーザーは削除されません。", "Please confirm the group removal " : "グループの削除を確認してください", + "Current password" : "現在のパスワード", + "New password" : "新しいパスワード", + "Change password" : "パスワードを変更", "Your biography" : "あなたのプロファイル", - "Unable to update biography" : "プロファイルを更新できません", "Your full name" : "フルネーム", - "Unable to update full name" : "フルネームを更新できません", - "No full name set" : "フルネームが未設定です", "Email options" : "メールのオプション", "Primary email for password reset and notifications" : "パスワードのリセットや通知のための基本メールアドレス", "Remove primary email" : "基本メールアドレスを削除", @@ -283,13 +283,12 @@ OC.L10N.register( "No email address set" : "メールアドレスが設定されていません", "Additional emails" : "その他のメールアドレス", "Your headline" : "あなたのヘッドライン", - "Unable to update headline" : "ヘッドラインを更新できませんでした", "Language" : "言語", "Help translate" : "翻訳に協力する", "Unable to update language" : "言語設定を更新できませんでした", "No language set" : "言語設定なし", "Your organisation" : "あなたの組織", - "Unable to update organisation" : "組織を更新できませんでした", + "Your phone number" : "あなたの電話番号", "Edit your Profile visibility" : "プロフィールの公開範囲を変更", "Enable Profile" : "プロフィールを有効化", "Unable to update profile enabled state" : "プロフィールを公開できません", @@ -297,9 +296,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "{displayId}の表示範囲を更新できませんでした", "Your role" : "あなたの役", - "Unable to update role" : "役職の更新ができませんでした", - "Unable to update federation scope of the primary {accountProperty}" : "プライマリー{accountProperty}のフェデレーションスコープを更新できませんでした", - "Unable to update federation scope of additional {accountProperty}" : "追加の{accountProperty}のフェデレーションスコープを更新できませんでした", + "Your Twitter handle" : "あなたのTwitterのID", + "Your website" : "あなたの個人ウェブサイト", "Add additional email" : "その他メールアドレスを追加", "Add" : "追加", "You do not have permissions to see the details of this user" : "このユーザーの詳細を表示する権限がありません", @@ -378,7 +376,7 @@ OC.L10N.register( "Not saved" : "未保存", "Sending…" : "送信中 …", "Email sent" : "メールを送信しました", - "Address" : "住所", + "Location" : "位置", "Avatar" : "アバター", "About" : "説明", "Full name" : "氏名", @@ -484,19 +482,7 @@ OC.L10N.register( "You are a member of the following groups:" : "次のグループに所属:", "You are using <strong>%s</strong>" : "<strong>%s</strong>を現在使用中です", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "<strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>) 使用中", - "Change privacy level of phone number" : "電話番号のプライバシーレベルを変更", - "Your phone number" : "あなたの電話番号", - "Change privacy level of address" : "住所のプライバシーレベルを変更", - "Your postal address" : "あなたの住所", - "Change privacy level of website" : "Webサイトのプライバシーレベルを変更", - "It can take up to 24 hours before the account is displayed as verified." : "アカウントが確認済みとして表示されるまでには最大24時間かかることがあります。", - "Link https://…" : "リンク https://...", - "Change privacy level of Twitter profile" : "Twitterプロフィールのプライバシーレベルを変更", - "Twitter handle @…" : "あなたのTwitter ID @...", "Locale" : "ロケール", - "Current password" : "現在のパスワード", - "New password" : "新しいパスワード", - "Change password" : "パスワードを変更", "Use a second factor besides your password to increase security for your account." : "アカウントのセキュリティを強化するには、パスワード以外に2番目の要素を使用してください。", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "サードパーティのアプリケーションを使用してNextcloudに接続する場合は、二要素認証を有効にする前に必ずそれぞれのアプリパスワードを作成して設定してください。", "Migration in progress. Please wait until the migration is finished" : "移行の処理中です。移行が完了するまでお待ちください。", @@ -530,7 +516,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "フルネームまたは電子メールアドレスを入力するときにユーザー名を自動補完します(同じグループに属しておらず、電話帳で一致していなくても)", "Change privacy level of full name" : "フルネームのプライバシーレベルを変更", "No display name set" : "表示名が未設定", + "Change privacy level of phone number" : "電話番号のプライバシーレベルを変更", + "Address" : "住所", + "Change privacy level of address" : "住所のプライバシーレベルを変更", + "Your postal address" : "あなたの住所", + "Change privacy level of website" : "Webサイトのプライバシーレベルを変更", + "It can take up to 24 hours before the account is displayed as verified." : "アカウントが確認済みとして表示されるまでには最大24時間かかることがあります。", + "Link https://…" : "リンク https://...", + "Change privacy level of Twitter profile" : "Twitterプロフィールのプライバシーレベルを変更", + "Twitter handle @…" : "あなたのTwitter ID @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "OPcacheキーの最大数を間もなく超過します。全てのスクリプトをキャッシュに保管できるようにするには、<code>opcache.max_accelerated_files</code>の値を<code>%s</code>より多い値でPHP設定に適用することを推奨します。", - "Change scope level of {accountProperty}" : "{accountProperty}のスコープレベルを変更" + "Unable to update biography" : "プロファイルを更新できません", + "Unable to update full name" : "フルネームを更新できません", + "No full name set" : "フルネームが未設定です", + "Unable to update headline" : "ヘッドラインを更新できませんでした", + "Unable to update organisation" : "組織を更新できませんでした", + "Unable to update role" : "役職の更新ができませんでした", + "Change scope level of {accountProperty}" : "{accountProperty}のスコープレベルを変更", + "Unable to update federation scope of the primary {accountProperty}" : "プライマリー{accountProperty}のフェデレーションスコープを更新できませんでした", + "Unable to update federation scope of additional {accountProperty}" : "追加の{accountProperty}のフェデレーションスコープを更新できませんでした" }, "nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json index ef01791a929..470d34d2248 100644 --- a/apps/settings/l10n/ja.json +++ b/apps/settings/l10n/ja.json @@ -259,11 +259,11 @@ "Remove group" : "グループを削除", "You are about to remove the group {group}. The users will NOT be deleted." : "{group}グループを削除しようとしています。 ユーザーは削除されません。", "Please confirm the group removal " : "グループの削除を確認してください", + "Current password" : "現在のパスワード", + "New password" : "新しいパスワード", + "Change password" : "パスワードを変更", "Your biography" : "あなたのプロファイル", - "Unable to update biography" : "プロファイルを更新できません", "Your full name" : "フルネーム", - "Unable to update full name" : "フルネームを更新できません", - "No full name set" : "フルネームが未設定です", "Email options" : "メールのオプション", "Primary email for password reset and notifications" : "パスワードのリセットや通知のための基本メールアドレス", "Remove primary email" : "基本メールアドレスを削除", @@ -281,13 +281,12 @@ "No email address set" : "メールアドレスが設定されていません", "Additional emails" : "その他のメールアドレス", "Your headline" : "あなたのヘッドライン", - "Unable to update headline" : "ヘッドラインを更新できませんでした", "Language" : "言語", "Help translate" : "翻訳に協力する", "Unable to update language" : "言語設定を更新できませんでした", "No language set" : "言語設定なし", "Your organisation" : "あなたの組織", - "Unable to update organisation" : "組織を更新できませんでした", + "Your phone number" : "あなたの電話番号", "Edit your Profile visibility" : "プロフィールの公開範囲を変更", "Enable Profile" : "プロフィールを有効化", "Unable to update profile enabled state" : "プロフィールを公開できません", @@ -295,9 +294,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "{displayId}の表示範囲を更新できませんでした", "Your role" : "あなたの役", - "Unable to update role" : "役職の更新ができませんでした", - "Unable to update federation scope of the primary {accountProperty}" : "プライマリー{accountProperty}のフェデレーションスコープを更新できませんでした", - "Unable to update federation scope of additional {accountProperty}" : "追加の{accountProperty}のフェデレーションスコープを更新できませんでした", + "Your Twitter handle" : "あなたのTwitterのID", + "Your website" : "あなたの個人ウェブサイト", "Add additional email" : "その他メールアドレスを追加", "Add" : "追加", "You do not have permissions to see the details of this user" : "このユーザーの詳細を表示する権限がありません", @@ -376,7 +374,7 @@ "Not saved" : "未保存", "Sending…" : "送信中 …", "Email sent" : "メールを送信しました", - "Address" : "住所", + "Location" : "位置", "Avatar" : "アバター", "About" : "説明", "Full name" : "氏名", @@ -482,19 +480,7 @@ "You are a member of the following groups:" : "次のグループに所属:", "You are using <strong>%s</strong>" : "<strong>%s</strong>を現在使用中です", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "<strong>%1$s</strong> / <strong>%2$s</strong> (<strong>%3$s %%</strong>) 使用中", - "Change privacy level of phone number" : "電話番号のプライバシーレベルを変更", - "Your phone number" : "あなたの電話番号", - "Change privacy level of address" : "住所のプライバシーレベルを変更", - "Your postal address" : "あなたの住所", - "Change privacy level of website" : "Webサイトのプライバシーレベルを変更", - "It can take up to 24 hours before the account is displayed as verified." : "アカウントが確認済みとして表示されるまでには最大24時間かかることがあります。", - "Link https://…" : "リンク https://...", - "Change privacy level of Twitter profile" : "Twitterプロフィールのプライバシーレベルを変更", - "Twitter handle @…" : "あなたのTwitter ID @...", "Locale" : "ロケール", - "Current password" : "現在のパスワード", - "New password" : "新しいパスワード", - "Change password" : "パスワードを変更", "Use a second factor besides your password to increase security for your account." : "アカウントのセキュリティを強化するには、パスワード以外に2番目の要素を使用してください。", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "サードパーティのアプリケーションを使用してNextcloudに接続する場合は、二要素認証を有効にする前に必ずそれぞれのアプリパスワードを作成して設定してください。", "Migration in progress. Please wait until the migration is finished" : "移行の処理中です。移行が完了するまでお待ちください。", @@ -528,7 +514,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "フルネームまたは電子メールアドレスを入力するときにユーザー名を自動補完します(同じグループに属しておらず、電話帳で一致していなくても)", "Change privacy level of full name" : "フルネームのプライバシーレベルを変更", "No display name set" : "表示名が未設定", + "Change privacy level of phone number" : "電話番号のプライバシーレベルを変更", + "Address" : "住所", + "Change privacy level of address" : "住所のプライバシーレベルを変更", + "Your postal address" : "あなたの住所", + "Change privacy level of website" : "Webサイトのプライバシーレベルを変更", + "It can take up to 24 hours before the account is displayed as verified." : "アカウントが確認済みとして表示されるまでには最大24時間かかることがあります。", + "Link https://…" : "リンク https://...", + "Change privacy level of Twitter profile" : "Twitterプロフィールのプライバシーレベルを変更", + "Twitter handle @…" : "あなたのTwitter ID @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "OPcacheキーの最大数を間もなく超過します。全てのスクリプトをキャッシュに保管できるようにするには、<code>opcache.max_accelerated_files</code>の値を<code>%s</code>より多い値でPHP設定に適用することを推奨します。", - "Change scope level of {accountProperty}" : "{accountProperty}のスコープレベルを変更" + "Unable to update biography" : "プロファイルを更新できません", + "Unable to update full name" : "フルネームを更新できません", + "No full name set" : "フルネームが未設定です", + "Unable to update headline" : "ヘッドラインを更新できませんでした", + "Unable to update organisation" : "組織を更新できませんでした", + "Unable to update role" : "役職の更新ができませんでした", + "Change scope level of {accountProperty}" : "{accountProperty}のスコープレベルを変更", + "Unable to update federation scope of the primary {accountProperty}" : "プライマリー{accountProperty}のフェデレーションスコープを更新できませんでした", + "Unable to update federation scope of additional {accountProperty}" : "追加の{accountProperty}のフェデレーションスコープを更新できませんでした" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js index 76ed855fbdc..d3c4799477b 100644 --- a/apps/settings/l10n/ka_GE.js +++ b/apps/settings/l10n/ka_GE.js @@ -140,10 +140,16 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "ეს ბოლო გაფრთხილებაა: ნამდვილად გსურთ შიფრაციის ამოქმედება?", "No encryption module loaded, please enable an encryption module in the app menu." : "შიფრაციის მოდული არაა ჩატვირთული, გთხოვთ აამოქმედოთ ის აპლიკაციის მენიუდან. ", "Select default encryption module:" : "აირჩიეთ შიფრაციის საწყისი მოდული:", + "Current password" : "მიმდინარე პაროლი", + "New password" : "ახალი პაროლი", + "Change password" : "პაროლის შეცვლა", "Your email address" : "თქვენი ელ-ფოსტის მისამართი", "No email address set" : "ელ-ფოსტის მისამართი არაა დაყენებული", "Language" : "ენა", "Help translate" : "თარგმნის დახმარება", + "Your phone number" : "თქვენი ტელეფონის ნომერი", + "Your Twitter handle" : "თქვენი Twitter-is @…", + "Your website" : "თქვენი ვებ-საიტი", "Add" : "დამატება", "Cancel" : "უარყოფა", "{size} used" : "მოხმარებულია {size}", @@ -171,7 +177,7 @@ OC.L10N.register( "Not saved" : "არაა შენახული", "Sending…" : "იგზავნება…", "Email sent" : "ელ-წერილი გაიგზავნა", - "Address" : "მისამართი", + "Location" : "ადგილმდებარეობა", "Avatar" : "ავატარი", "About" : "შესახებ", "Full name" : "სრული სახელი", @@ -231,14 +237,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png ან jpg, მაქს. 20 მბ", "Picture provided by original account" : "სურათი ორიგინალი ანგარიშიდან", "Choose as profile picture" : "აირჩიეთ პროფილის სურათად", - "Your phone number" : "თქვენი ტელეფონის ნომერი", - "Your postal address" : "თქვენი საფოსტო მისამართი", - "It can take up to 24 hours before the account is displayed as verified." : "თქვენი ანგარიშის ვერიფიცირებულად გამოჩენამ შეიძლება გასტანოს 24 საათი.", - "Link https://…" : "ბმული https://…", - "Twitter handle @…" : "Twitter @…", - "Current password" : "მიმდინარე პაროლი", - "New password" : "ახალი პაროლი", - "Change password" : "პაროლის შეცვლა", "Migration in progress. Please wait until the migration is finished" : "მიმდინარეობს მიგრაცია. გთხოვთ დაელოდოთ მიგრაციის დასრულებას", "Migration started …" : "მიგრაცია დაიწყო …", "Couldn't remove app." : "აპლიკაციის წაშლა ვერ მოხერხდა.", @@ -258,6 +256,11 @@ OC.L10N.register( "Background job didn’t run yet!" : "ფონური საქმე ჯერ არ გაშვებულა!", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php უნდა გაუშვას სისტემურმა მოხმარებელმა \"%s\".", "days" : "დღე", - "No display name set" : "დისპლეი სახელი არაა დაყენებული" + "No display name set" : "დისპლეი სახელი არაა დაყენებული", + "Address" : "მისამართი", + "Your postal address" : "თქვენი საფოსტო მისამართი", + "It can take up to 24 hours before the account is displayed as verified." : "თქვენი ანგარიშის ვერიფიცირებულად გამოჩენამ შეიძლება გასტანოს 24 საათი.", + "Link https://…" : "ბმული https://…", + "Twitter handle @…" : "Twitter @…" }, "nplurals=2; plural=(n!=1);"); diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json index 643e6c7d995..e77938f6814 100644 --- a/apps/settings/l10n/ka_GE.json +++ b/apps/settings/l10n/ka_GE.json @@ -138,10 +138,16 @@ "This is the final warning: Do you really want to enable encryption?" : "ეს ბოლო გაფრთხილებაა: ნამდვილად გსურთ შიფრაციის ამოქმედება?", "No encryption module loaded, please enable an encryption module in the app menu." : "შიფრაციის მოდული არაა ჩატვირთული, გთხოვთ აამოქმედოთ ის აპლიკაციის მენიუდან. ", "Select default encryption module:" : "აირჩიეთ შიფრაციის საწყისი მოდული:", + "Current password" : "მიმდინარე პაროლი", + "New password" : "ახალი პაროლი", + "Change password" : "პაროლის შეცვლა", "Your email address" : "თქვენი ელ-ფოსტის მისამართი", "No email address set" : "ელ-ფოსტის მისამართი არაა დაყენებული", "Language" : "ენა", "Help translate" : "თარგმნის დახმარება", + "Your phone number" : "თქვენი ტელეფონის ნომერი", + "Your Twitter handle" : "თქვენი Twitter-is @…", + "Your website" : "თქვენი ვებ-საიტი", "Add" : "დამატება", "Cancel" : "უარყოფა", "{size} used" : "მოხმარებულია {size}", @@ -169,7 +175,7 @@ "Not saved" : "არაა შენახული", "Sending…" : "იგზავნება…", "Email sent" : "ელ-წერილი გაიგზავნა", - "Address" : "მისამართი", + "Location" : "ადგილმდებარეობა", "Avatar" : "ავატარი", "About" : "შესახებ", "Full name" : "სრული სახელი", @@ -229,14 +235,6 @@ "png or jpg, max. 20 MB" : "png ან jpg, მაქს. 20 მბ", "Picture provided by original account" : "სურათი ორიგინალი ანგარიშიდან", "Choose as profile picture" : "აირჩიეთ პროფილის სურათად", - "Your phone number" : "თქვენი ტელეფონის ნომერი", - "Your postal address" : "თქვენი საფოსტო მისამართი", - "It can take up to 24 hours before the account is displayed as verified." : "თქვენი ანგარიშის ვერიფიცირებულად გამოჩენამ შეიძლება გასტანოს 24 საათი.", - "Link https://…" : "ბმული https://…", - "Twitter handle @…" : "Twitter @…", - "Current password" : "მიმდინარე პაროლი", - "New password" : "ახალი პაროლი", - "Change password" : "პაროლის შეცვლა", "Migration in progress. Please wait until the migration is finished" : "მიმდინარეობს მიგრაცია. გთხოვთ დაელოდოთ მიგრაციის დასრულებას", "Migration started …" : "მიგრაცია დაიწყო …", "Couldn't remove app." : "აპლიკაციის წაშლა ვერ მოხერხდა.", @@ -256,6 +254,11 @@ "Background job didn’t run yet!" : "ფონური საქმე ჯერ არ გაშვებულა!", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php უნდა გაუშვას სისტემურმა მოხმარებელმა \"%s\".", "days" : "დღე", - "No display name set" : "დისპლეი სახელი არაა დაყენებული" + "No display name set" : "დისპლეი სახელი არაა დაყენებული", + "Address" : "მისამართი", + "Your postal address" : "თქვენი საფოსტო მისამართი", + "It can take up to 24 hours before the account is displayed as verified." : "თქვენი ანგარიშის ვერიფიცირებულად გამოჩენამ შეიძლება გასტანოს 24 საათი.", + "Link https://…" : "ბმული https://…", + "Twitter handle @…" : "Twitter @…" },"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js index 8d6932fb565..96aa6799172 100644 --- a/apps/settings/l10n/ko.js +++ b/apps/settings/l10n/ko.js @@ -42,35 +42,61 @@ OC.L10N.register( "You changed your email address" : "내 이메일 주소를 변경함", "Your email address was changed by an administrator" : "관리자가 내 이메일 주소를 변경함", "You created app password \"{token}\"" : "앱 패스워드 \"{token}\"이 생성되었습니다.", + "An administrator created app password \"{token}\"" : "관리자가 앱 패스워드 \"{token}\"을(를) 생성함", "You deleted app password \"{token}\"" : "앱 패스워드 \"{token}\"이 제거되었습니다.", "You renamed app password \"{token}\" to \"{newToken}\"" : "앱 패스워드 \"{token}\"의 이름을 \"{newToken}\"으로 바꿨습니다.", + "You granted filesystem access to app password \"{token}\"" : "앱 패스워드 \"{token}\"에 대해 파일 시스템 접근을 허가함", + "You revoked filesystem access from app password \"{token}\"" : "앱 패스워드 \"{token}\"에 대해 파일 시스템 접근 권한을 철회함", "Security" : "보안", "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)", + "Remote wipe was started on %1$s" : "원격 제거가 %1$s에 시작됨", + "Remote wipe has finished on %1$s" : "원격 제거가 %1$s에 완료됨", "Your <strong>password</strong> or <strong>email</strong> was modified" : "내 <strong>암호</strong> 및 <strong>이메일</strong>이 변경됨", + "Could not remove app." : "앱을 삭제할 수 없음", + "Could not update app." : "앱을 업데이트 할 수 없음", "Wrong password" : "잘못된 암호", + "Unable to change personal password" : "개인 패스워드를 변경할 수 없음", "Saved" : "저장됨", "No user supplied" : "사용자가 지정되지 않음", + "Unable to change password. Password too long." : "패스워드를 변경할 수 없음. 패스워드가 너무 긺.", "Authentication error" : "인증 오류", "Please provide an admin recovery password; otherwise, all user data will be lost." : "관리자 복구 암호를 입력하십시오. 그렇지 않으면 모든 사용자 데이이터가 초기화됩니다다.", "Wrong admin recovery password. Please check the password and try again." : "관리자 복구 암호가 잘못되었습니다. 암호를 다시 확인하십시오.", + "Backend does not support password change, but the user's encryption key was updated." : "백엔드에서 암호 변경을 지원하지 않지만 사용자의 암호화 키는 업데이트되었습니다.", + "installing and updating apps via the App Store or Federated Cloud Sharing" : "앱 스토어 및 연합 클라우드 공유로 앱 설치 및 업데이트", "Federated Cloud Sharing" : "클라우드 연합 공유", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL이 오래된 %1$s 버전을 사용하고 있습니다(%2$s). 운영 체제나 기능을 업데이트하지 않으면 %3$s 등을 안정적으로 사용할 수 없습니다.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "https://nextcloud.com에 대한 HTTPS 요청 중 오류가 발생하여 cURL의 TLS 버전이 오래되었는지 확인할 수 없습니다. 자세한 정보는 Nextcloud 로그 파일을 참조하여 주십시오.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "PHP OPcache 모듈이 로드되지 않았습니다. 더 나은 성능을 위해 이를 PHP에 로드하는 것이 권장됩니다.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPchache가 비활성화 되었습니다. PHP 설정에서 <code>opcahce.enable=1</code>을 적용하는 것을 권장합니다.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache가 code comment를 삭제하도록 설정되어 있습니다. Nextcloud의 원활한 작동을 위해 OPcahce 활성화 시 <code>opcache.save_comments=1</code>을 설정해야 합니다.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud가 OPcache API를 사용하도록 허용되지 않았습니다. Nextcloud core나 앱 업그레이드 중 에러 발생을 방지하기 위해, OPcache 활성화 시 모든 Nextcloud 디렉토리를 <code>opcahce.restrict_api</code>에 포함하거나 해당 설정을 해제하여 OPcahce API 제한을 비활성화 하는 것을 권장합니다.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud가 OPcache API를 사용하도록 허용되지 않았습니다. Nextcloud core나 앱 업그레이드 중 에러 발생을 방지하기 위해, OPcache 활성화 시 모든 Nextcloud 디렉토리를 <code>opcahce.restrict_api</code>에 포함하거나 해당 설정을 해제하여 OPcahce API 제한을 비활성화 하는 것을 권장합니다.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "곧 OPcache key가 최대치를 초과할 것으로 보입니다. 모든 스크립트가 캐시에 유지될 수 있도록, PHP 설정에서 <code>opcache.max_accelerated_files</code> 값을 <code>%s</code> 보다 크게 적용하시길 권장합니다. ", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "곧 OPcache 버퍼가 가득 찰 것으로 보입니다. 모든 스크립트가 캐시에 보관될 수 있도록, PHP 설정에서 <code>opcache.memory_consumption</code> 값을 <code>%s</code> 보다 크게 적용하시길 권장합니다. ", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "곧 OPcache interned buffer가 가득 찰 것으로 보입니다. 반복 문자열이 효율적으로 캐싱될 수 있도록, PHP 설정에서 <code>opcache.interned_strings_buffer</code> 값을 <code>%s</code> 보다 크게 적용하시길 권장합니다. ", "Invalid SMTP password." : "SMTP 암호가 잘못되었습니다.", "Email setting test" : "이메일 설정 시험", "Well done, %s!" : "%s 님, 잘 하셨습니다!", "If you received this email, the email configuration seems to be correct." : "이 이메일을 받으셨다면 이메일 설정이 올바릅니다.", "Email could not be sent. Check your mail server log" : "이메일을 보낼 수 없습니다. 메일 서버 로그를 확인하십시오.", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "이메일을 보내는 중 오류가 발생했습니다. 설정을 확인하십시오.(오류: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "이메일 발송 테스트를 진행하기 앞서 당신의 사용자 이메일을 설정해야 합니다. 설정을 위해 %s(으)로 가십시오.", "Invalid user" : "잘못된 사용자", "Invalid mail address" : "잘못된 이메일 주소", "Settings saved" : "설정 저장됨", "Unable to change full name" : "전체 이름을 변경할 수 없음", "Unable to change email address" : "이메일 주소를 변경할 수 없음", + "Unable to set invalid phone number" : "올바르지 않은 전화번호를 설정할 수 없음", + "Unable to set invalid website" : "올바르지 않은 웹사이트 주소를 설정할 수 없음", + "Some account data was invalid" : "몇 가지 계정 데이터가 올바르지 않음", "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "내 트위터 계정을 확인하려면 다음 트윗을 타임라인에 게시하십시오(줄바꿈을 추가하지 마십시오):", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "내 웹 사이트를 확인하려면 다음 내용을 웹 사이트 루트 디렉터리의 '.well-known/CloudIdVerificationCode.txt' 파일에 게시하십시오(전체 텍스트가 한 줄에 들어가야 함):", "%1$s changed your password on %2$s." : "%1$s 님이 내 암호를 %2$s에 변경했습니다.", "Your password on %s was changed." : "내 %s 암호를 변경했습니다.", "Your password on %s was reset by an administrator." : "관리자가 내 %s 암호를 초기화했습니다.", + "Your password on %s was reset." : "내 %s 암호를 변경했습니다.", "Password for %1$s changed on %2$s" : "%1$s의 암호를 %2$s에 변경함", "Password changed for %s" : "%s의 암호 변경됨", "If you did not request this, please contact an administrator." : "요청하지 않았다면 관리자에게 연락하십시오.", @@ -87,11 +113,13 @@ OC.L10N.register( "Set your password" : "내 암호 설정하기", "Go to %s" : "%s(으)로 이동", "Install Client" : "클라이언트 설치", + "Logged in user must be a subadmin" : "로그인한 사용자는 부관리자여야 합니다.", "Apps" : "앱", "Settings" : "설정", "Personal" : "개인", "Administration" : "관리", "Additional settings" : "고급 설정", + "Admin privileges" : "관리자용 권한", "Groupware" : "그룹웨어", "Overview" : "개요", "Basic settings" : "기본 설정", @@ -107,17 +135,33 @@ OC.L10N.register( "Reshare" : "재공유", "Unlimited" : "무제한", "Verifying" : "검사", + "A background job is pending that checks for user imported SSL certificates. Please check back later." : "사용자가 불러온 SSL 인증서를 확인하는 백그라운드 작업이 진행중입니다. 나중에 다시 확인하십시오.", + "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "현재 사용자가 불러온 SSL 인증서 중 Nextcloud 21과 함께 사용할 수 없는 것이 있습니다. 이러한 인증서는 커맨드라인 명령어 \"occ security:certificates:import\"로 불러올 수 있습니다. 데이터 디렉토리 내부에 있는 해당 인증서의 경로가 아래에 표시됩니다.", + "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "잘못된 LDAP 사용자 또는 그룹 UUID를 발견했습니다. LDAP 설정의 '전문가' 부분에서 \"Override UUID detection\"을 재확인하시고, \"occ ldap:update-uuid\" 명령어를 통해 이를 갱신하십시오.", + "The old server-side-encryption format is enabled. We recommend disabling this." : "구형 포맷의 서버 측 암호화가 활성화된 상태입니다. 이를 비활성화 하는 것을 권장합니다.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "현재 MariaDB \"%s\" 버전이 사용되고 있습니다. Nextcloud 21 및 그 이상의 버전은 이를 지원하지 않습니다. MariaDB 10.2 이상을 사용하십시오.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "현재 MySQL \"%s\" 버전이 사용되고 있습니다. Nextcloud 21 및 그 이상의 버전은 이를 지원하지 않습니다. MySQL 8.0 혹은 MariaDB 10.2 이상을 사용하십시오.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "현재 PostgreSQL \"%s\" 버전이 사용되고 있습니다. Nextcloud 21 및 그 이상의 버전은 이를 지원하지 않습니다. PostgreSQL 9.6 이상을 사용하십시오.", + "Profile information" : "프로필 정보", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "프로필 사진, 전체 이름, 이메일, 전화번호, 주소, 웹사이트, 트위터, 조직, 직책, 표제, 소개문구 및 프로필 활성화 여부", "Nextcloud settings" : "Nextcloud 환경설정", + "Administration privileges" : "관리 권한", + "Here you can decide which group can access certain sections of the administration settings." : "이곳에서 특정 그룹의 특정 관리자 설정 접근 여부를 설정할 수 있습니다.", "None" : "없음", + "Unable to modify setting" : "설정을 수정할 수 없습니다", "Two-Factor Authentication" : "2단계 인증", + "Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "2단계 인증을 모든 유저 또는 특정 그룹에 강제할 수 있습니다. 만약 대상자가 2단계 인증 공급자를 설정하지 않았다면, 대상자는 시스템에 접근할 수 없게 될 것입니다.", "Enforce two-factor authentication" : "2단계 인증 강제하기", "Limit to groups" : "그룹으로 제한", "Enforcement of two-factor authentication can be set for certain groups only." : "2단계 인증 강제는 특정 그룹에게만 적용됩니다.", + "Two-factor authentication is enforced for all members of the following groups." : "2단계 인증이 모든 멤버에게 강제된 그룹은 다음과 같습니다.", "Enforced groups" : "강제된 그룹", + "Two-factor authentication is not enforced for members of the following groups." : "2단계 인증이 강제되지 않은 그룹은 다음과 같습니다.", "Excluded groups" : "제외된 그룹", "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "그룹이 선택되거나 제외되었을 때, 다음과 같은 상황을 고려할 수 있습니다. 만약 2단계 인증이 강제되었고, 아무런 그룹이 선택되지 않았다면 제외된 그룹의 멤버를 제외하고 모든 유저에게 2단계 인증이 강제됩니다. 만약 그룹이 선택되었다면 그룹 안의 모든 멤버에게 2단계 인증이 강제됩니다. 만약 유저가 선택된 그룹과 제외된 그룹에 동시에 속해있다면, 선택된 그룹이 우선되며 2단계 인증이 강제됩니다.", "Save changes" : "변경 사항 저장", "All" : "모두", + "Limit app usage to groups" : "앱 사용을 그룹으로 제한합니다.", "No results" : "결과 없음", "Update to {version}" : "{version}(으)로 업데이트", "Remove" : "삭제", @@ -131,16 +175,23 @@ OC.L10N.register( "User documentation" : "사용자 문서", "Admin documentation" : "관리 문서", "Developer documentation" : "개발자 문서", + "This app is supported via your current Nextcloud subscription." : "이 앱은 당신의 현재 Nextcloud 구독을 통해 지원됩니다.", + "Supported" : "지원됨", "Featured" : "추천", + "Update to {update}" : "{update}(으)로 업데이트", + "All apps are up-to-date." : "모든 앱이 최신 버전입니다.", "No apps found for your version" : "설치된 버전에 대한 앱 없음", "Disable all" : "전체 비활성화", "Enable all" : "모두 활성화", "_%n app has an update available_::_%n apps have an update available_" : ["%n앱을 업데이트 할 수 있습니다."], + "_Update_::_Update all_" : ["모두 업데이트"], + "Marked for remote wipe" : "원격 제거를 위해 지정됨", "Device settings" : "디바이스 설정", "Allow filesystem access" : "파일시스템 접근 허용", "Rename" : "이름 바꾸기", "Revoke" : "취소", "Wipe device" : "디바이스 지우기", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "기기 제거가 아직 시작되지 않았다면, 이 토큰을 취소하여 기기의 제거를 방지할 수 있습니다.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -159,6 +210,7 @@ OC.L10N.register( "Confirm wipe" : "삭제 완료", "Error while creating device token" : "장치 토큰을 만드는 중 오류가 발생했습니다", "Error while deleting the token" : "토큰을 삭제하는 중 오류가 발생했습니다", + "Error while wiping the device with the token" : "토큰으로 기기를 제거하는 도중 오류 발생", "App name" : "앱 이름", "Create new app password" : "새로운 앱 암호 만들기", "Use the credentials below to configure your app or device." : "앱 또는 장치를 구성하는 아래의 자격 증명을 사용합니다.", @@ -170,12 +222,25 @@ OC.L10N.register( "Copied!" : "복사 성공!", "Copy" : "복사", "Could not copy app password. Please copy it manually." : "앱 비밀번호를 복사할 수 없습니다. 직접 옮겨 적으십시오.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "서버가 적절하게 동작하기 위해 백그라운드 작업을 올바르게 설정하는 것이 중요합니다. Cron으로 설정하는 것을 권장합니다. 더 많은 정보는 문서를 참조하십시오.", + "Last job execution ran {time}. Something seems wrong." : "마지막 작업이 {time}에 실행되었습니다. 무언가 잘못된 것 같습니다.", + "Last job ran {relativeTime}." : "마지막 작업이 {relativeTime}에 실행되었음", + "Background job did not run yet!" : "백그라운드 작업이 아직 실행되지 않았습니다!", + "Execute one task with each page loaded. Use case: Single user instance." : "각 페이지를 로드할 때 마다 하나의 작업을 시행. 사용례: 1인 사용자 인스턴스", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php를 webcron 서비스에 등록하여 cron.php를 매 5분마다 HTTP 상에서 호출. 사용례: 아주 작은 인스턴스 (사용자가 1~5명인 규모 - 사용량에 따라 다름)", + "Cron (Recommended)" : "Cron (권장됨)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "이 항목을 실행하려면 PHP POSIX 확장이 필요합니다. 자세한 사항은 {linkstart}PHP 문서{linkend}를 참조하십시오.", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "시스템 Cron 서비스를 사용하여 cron.php를 매 5분마다 호출. 모든 인스턴스에 권장.", + "The cron.php needs to be executed by the system user \"{user}\"." : "시스템 사용자 \"{user}\"(으)로 cron.php를 실행해야 합니다.", + "Unable to update background job mode" : "백그라운드 작업 모드를 업데이트 할 수 없음", "Profile" : "프로필", + "Enable or disable profile by default for new users." : "신규 사용자에 대한 프로필 기본 사용 여부를 설정하십시오.", "Enable" : "사용함", + "Unable to update profile default setting" : "프로필 기본 설정을 업데이트 할 수 없음", "Server-side encryption" : "서버 측 암호화", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "서버 측 암호화를 사용하면 이 서버에 업로드되는 파일을 암호화할 수 있습니다. 성능 감소 등 제약 사항이 있으므로 필요한 경우에만 사용하십시오.", "Enable server-side encryption" : "서버 측 암호화 사용", + "Please read carefully before activating server-side encryption:" : "서버 측 암호화를 활성화하기 전에 읽어 보십시오:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "암호화를 사용하면, 사용하기 시작한 시간 이후에 서버에 업로드된 모든 파일이 암호화됩니다. 나중에 암호화를 사용하지 않으려면 사용하고 있는 암호화 모듈에서 비활성화를 지원해야 하고 모든 사전 조건(예: 복구 키 설정)을 만족해야 합니다.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "암호화만으로 시스템의 보안을 보장할 수 없습니다. 암호화 응용 프로그램 작동 방식 및 지원되는 사용 사례에 대한 자세한 내용은 설명서를 참조하십시오.", "Be aware that encryption always increases the file size." : "암호화된 파일의 크기는 항상 커집니다.", @@ -183,28 +248,72 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "마지막 경고입니다. 암호화를 활성화하시겠습니까?", "No encryption module loaded, please enable an encryption module in the app menu." : "암호화 모듈을 불러오지 않았습니다. 앱 메뉴에서 암호화 모듈을 활성화하십시오.", "Select default encryption module:" : "기본 암호화 모듈 선택:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. \"기본 암호화 모듈\"을 활성화한 다음 {command}(을)를 실행하십시오", + "Unable to update server side encryption config" : "서버 측 암호화 설정을 갱신할 수 없음", + "Rename group" : "그룹 이름 바꾸기", "Remove group" : "그룹 지우기", "You are about to remove the group {group}. The users will NOT be deleted." : "당신은 {group} 그룹을 지우려고 합니다. 그룹의 사용자들은 삭제되지 않습니다.", "Please confirm the group removal " : "그룹 지우기를 확인해주세요.", + "Current password" : "현재 암호", + "New password" : "새 암호", + "Change password" : "암호 변경", + "Your biography" : "내 소개문구", + "Your full name" : "내 전체 이름", + "Email options" : "이메일 옵션", + "Primary email for password reset and notifications" : "암호 초기화 및 알림 수신용 주 이메일 주소", + "Remove primary email" : "주 이메일 삭제", + "Delete email" : "이메일 삭제", + "Unset as primary email" : "주 이메일 지정 해제", + "This address is not confirmed" : "이 주소는 확인되지 않음", + "Set as primary email" : "주 이메일로 지정", "Your email address" : "이메일 주소", + "Additional email address {index}" : "추가 이메일 주소 {index}", + "Unable to delete primary email address" : "주 이메일 주소를 삭제할 수 없음", + "Unable to update primary email address" : "주 이메일 주소를 갱신할 수 없음", + "Unable to add additional email address" : "추가 이메일 주소를 추가할 수 없음", + "Unable to update additional email address" : "추가 이메일 주소를 갱신할 수 없음", + "Unable to delete additional email address" : "추가 이메일 주소를 삭제할 수 없음", "No email address set" : "이메일 주소가 설정되지 않음", + "Additional emails" : "추가 이메일", + "Your headline" : "내 표제", "Language" : "언어", "Help translate" : "번역 돕기", + "Unable to update language" : "언어를 갱신할 수 없음", + "No language set" : "언어가 설정되지 않음", + "Your organisation" : "내 조직", + "Your phone number" : "내 휴대폰 번호", + "Edit your Profile visibility" : "프로필 표시 여부 편집", + "Enable Profile" : "프로필 활성화", + "Unable to update profile enabled state" : "프로필 활성화 여부를 갱신할 수 없음", + "Unable to update visibility of {displayId}" : "{displayId}의 표시 여부를 갱신할 수 없음", + "Your role" : "내 직책", + "Your Twitter handle" : "내 트위터", + "Your website" : "내 웹 사이트", + "Add additional email" : "추가 이메일 추가", "Add" : "추가", "You do not have permissions to see the details of this user" : "사용자의 상세정보를 볼 권한이 없습니다", "Add new password" : "새로운 비밀번호를 입력하시오", "Add new email address" : "새로운 이메일 추가하기", + "Add user to group" : "사용자를 그룹에 추가", + "Set user as admin for" : "사용자를 다음에 대한 관리자로 설정", + "Select user quota" : "사용자 할당량 선택", "Delete user" : "유저 지우기", + "Wipe all devices" : "모든 기기 지우기", "Disable user" : "유저 비활성화하기", "Enable user" : "유저 활성화하기", "Resend welcome email" : "환영 메일 다시 보내기", + "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "기기를 분실했거나 조직에서 이탈할 경우, 이를 통해 모든 기기에 있는 {userid} 관련 Nextcloud 데이터를 원격으로 삭제할 수 있습니다. 해당 기기들이 인터넷에 연결된 경우에 한하여 작동합니다.", + "Remote wipe of devices" : "기기 원격 제거", + "Wipe {userid}'s devices" : "{userid}의 기기 제거", "Cancel" : "취소", "Fully delete {userid}'s account including all their personal files, app data, etc." : "모든 개인 파일, 앱, 데이터 등을 포함한 {userid}계정을 완전히 삭제하기", "Account deletion" : "계정 삭제", "Delete {userid}'s account" : "{userid}의 계정 삭제", "Welcome mail sent!" : "환영 메일을 보냈습니다!", + "Edit User" : "사용자 편집", "{size} used" : "{size} 사용됨", "New user" : "새 사용자", + "Will be autogenerated" : "자동으로 생성될 것임", "Display name" : "표시 이름", "Email" : "이메일", "Default language" : "기본 언어", @@ -216,18 +325,32 @@ OC.L10N.register( "Last login" : "마지막 로그인", "No users in here" : "사용자가 이곳에 없습니다.", "Default quota" : "기본 할당량", + "Common languages" : "공통 언어", + "Other languages" : "다른 언어", + "Password change is disabled because the master key is disabled" : "마스터 키가 비활성화 되어 암호 변경이 비활성화 됨", + "Passwordless authentication requires a secure connection." : "무암호 인증을 위해 보안 연결이 필요합니다.", + "Add WebAuthn device" : "WebAuthn 기기 추가", + "Please authorize your WebAuthn device." : "내 WebAuthn 기기를 인증하십시오.", "Name your device" : "장치 이름 설정", "Adding your device …" : "장치 추가 중 …", + "Server error while trying to add WebAuthn device" : "WebAuthn 기기 추가 시도 중 서버 오류 발생", + "Server error while trying to complete WebAuthn device registration" : "WebAuthn 기기 등록을 마치는 중 오류 발생", "Unnamed device" : "이름 없는 장치", + "Passwordless Authentication" : "무암호 인증", + "Set up your account for passwordless authentication following the FIDO2 standard." : "FIDO2 기준을 준수하여 계정에 무암호 인증을 설정하십시오", + "No devices configured." : "설정된 기기가 없습니다.", + "The following devices are configured for your account:" : "다음의 기기가 계정에 설정되었습니다:", "Your browser does not support WebAuthn." : "WebAuthn이 현재 브라우저를 지원하지 않습니다.", "Your apps" : "내 앱", "Active apps" : "활성화된 앱", "Disabled apps" : "비활성화된 앱", "Updates" : "업데이트", "App bundles" : "앱 번들", + "Featured apps" : "추천 앱 - ", "{license}-licensed" : "{license} 라이선스", "Details" : "자세히", "Changelog" : "변경 기록", + "Enter group name" : "그룹 이름 입력", "Add group" : "그룹 추가", "Active users" : "활성 사용자", "Admins" : "관리자", @@ -242,25 +365,31 @@ OC.L10N.register( "Not saved" : "저장하지 않음", "Sending…" : "보내는 중…", "Email sent" : "이메일 보냄", - "Address" : "주소", + "Location" : "위치", "Avatar" : "아바타", "About" : "정보", "Full name" : "전체 이름", + "Additional email" : "추가 이메일", "Headline" : "표제", + "Organisation" : "조직", "Phone number" : "휴대폰 번호", "Role" : "직책", "Twitter" : "트위터", "Website" : "웹사이트", + "Profile visibility" : "프로필 표시 여부", "Show to everyone" : "전체 공개", "Show to logged in users only" : "로그인된 사용자에게 공개", "Hide" : "비공개", "Download and enable" : "다운로드 및 활성화", + "Enable untested app" : "미시험 앱 활성화", "The app will be downloaded from the App Store" : "이 앱이 앱 스토어에서 다운로드됩니다", "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "이 앱은 현재 Nextcloud 버젼과 호환되지 않습니다. 이 앱을 설치하면, 제대로 작동하지 않을 수 있습니다.", "Never" : "하지 않음", "An error occured during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "앱이 활성화되었지만, 앱을 업데이트해야 합니다. 5초 후 앱 업데이트 페이지로 넘어갑니다.", "Error: This app cannot be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다", + "An error occurred during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.", + "User already exists." : "사용자가 이미 있습니다.", "Administrator documentation" : "관리자 문서", "Documentation" : "문서", "Forum" : "포럼", @@ -283,18 +412,25 @@ OC.L10N.register( "SMTP Username" : "SMTP 사용자 이름", "SMTP Password" : "SMTP 암호", "Save" : "저장", + "Test and verify email settings" : "이메일 설정 테스트 및 검증", "Send email" : "이메일 보내기", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "당신의 인스턴스의 보안과 성능을 위해서는 모든 것이 정확하게 설정되어야 합니다. 그러기 위해서 자동적으로 몇 가지를 확인하겠습니다. 더 자세한 정보를 위해서 링크된 문서를 참고하세요.", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "이 인스턴스의 보안과 성능을 위해서 모든 것이 정확하게 설정되어야 합니다. 그러기 위해서 자동적으로 몇 가지를 확인하겠습니다. 더 자세한 정보를 위해서 링크된 문서를 참고하세요.", "All checks passed." : "모든 검사를 통과했습니다.", "There are some errors regarding your setup." : "설정을 살펴본 결과 몇 가지 에러가 있습니다.", "There are some warnings regarding your setup." : "설정을 살펴본 결과 몇 가지 경고할 것이 있습니다.", "Checking for system and security issues." : "시스템과 보안에 대한 문제를 확인하는 중", "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">설치 가이드 ↗</a>를 다시 한 번 확인한 다음 <a href=\"%2$s\">로그</a>의 경고나 에러를 확인하세요.", - "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">우리의 보안 검사 ↗</a>에서 당신의 Nextcloud의 보안을 점검하세요.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">우리의 보안 검사 ↗</a>에서 이 Nextcloud의 보안을 점검하세요.", "Version" : "버전", + "You need to enable the File sharing App." : "파일 공유 앱을 활성화해야 합니다.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "관리자로 공유 행동을 미세 조정할 수 있습니다. 더 많은 정보를 보려면 문서를 참조하십시오.", "Allow apps to use the Share API" : "앱에서 공유 API를 사용할 수 있도록 허용", + "Set default expiration date for shares" : "공유에 대한 기본 만료 날짜 설정", + "Expire after" : "다음 날짜 후 만료", + "day(s)" : "일", "Enforce expiration date" : "만료 날짜 강제", + "Set default expiration date for shares to other servers" : "다른 서버와의 공유에 대한 기본 만료 날짜 설정", + "Allow users to share via link and emails" : "사용자가 링크와 이메일을 통해 공유하는 것 허용", "Allow public uploads" : "공개 업로드 허용", "Always ask for a password" : "항상 암호 묻기", "Enforce password protection" : "암호 보호 강제", @@ -306,37 +442,37 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "이 그룹의 사용자들은 다른 사용자가 공유한 파일을 받을 수는 있지만, 자기 파일을 공유할 수는 없습니다.", "This text will be shown on the public link upload page when the file list is hidden." : "파일 목록이 숨겨져 있으면 이 텍스트는 공개 링크 업로드 페이지에 표시됩니다.", "Default share permissions" : "기본 공유 권한", + "Reasons to use Nextcloud in your organization" : "당신의 조직에서 Nextcloud를 사용해야 할 이유", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen}Nextcloud 커뮤니티{linkclose}에서 개발, {githubopen}소스 코드{linkclose}는 {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose} 라이선스를 따릅니다.", "Like our Facebook page" : "Facebook 페이지에서 좋아요 누르기", "Follow us on Twitter" : "트위터에서 팔로하기", "Check out our blog" : "블로그 확인하기", "Subscribe to our newsletter" : "뉴스레터 구독하기", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "이 Nextcloud 커뮤니티 릴리즈는 지원되지 않으며 즉각적인 알림을 사용할 수 없습니다.", "Profile picture" : "프로필 사진", + "Change privacy level of profile picture" : "프로필 사진에 대한 공개 단계 변경", "Upload new" : "새로 업로드", "Select from Files" : "파일에서 선택", "Remove image" : "그림 삭제", "png or jpg, max. 20 MB" : "PNG, JPG, 최대 20MB", "Picture provided by original account" : "원래 계정에서 제공하는 사진", + "Please note that it can take up to 24 hours for the avatar to get updated everywhere." : "아바타가 모든 곳에 갱신될 때 까지 최대 24시간이 걸릴 수 있습니다.", "Choose as profile picture" : "프로필 사진으로 선택", "You are a member of the following groups:" : "당신은 다음 그룹의 멤버입니다:", "You are using <strong>%s</strong>" : "현재 <strong>%s</strong>를 사용하고 있습니다.", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "현재 <strong>%2$s</strong> /%1$s</strong>(<strong>%3$s%%</strong>)를 사용하고 있습니다", - "Your phone number" : "내 휴대폰 번호", - "Your postal address" : "내 우편 주소", - "It can take up to 24 hours before the account is displayed as verified." : "계정이 확인된 것으로 표시될 때까지 최대 24시간이 걸릴 수 있습니다", - "Link https://…" : "링크 https://…", - "Twitter handle @…" : "트위터 핸들 @…", "Locale" : "지역", - "Current password" : "현재 암호", - "New password" : "새 암호", - "Change password" : "암호 변경", "Use a second factor besides your password to increase security for your account." : "사용자의 계정을 더욱 안전하게 보호하기 위해 암호와 함께 2단계 인증을 사용하세요.", + "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Nextcloud에 연결하기 위해 서드파티 애플리케이션을 사용할 경우 2차 인증을 활성화하기 앞서 각 애플리케이션에 대한 앱 암호를 생성, 설정하십시오.", "Migration in progress. Please wait until the migration is finished" : "이전 작업 중입니다. 작업이 완료될 때까지 기다려 주십시오", "Migration started …" : "이전 시작됨...", "Couldn't remove app." : "앱을 삭제할 수 없습니다.", "Couldn't update app." : "앱을 업데이트할 수 없습니다.", "Backend doesn't support password change, but the user's encryption key was updated." : "백엔드에서 암호 변경을 지원하지 않지만 사용자의 암호화 키는 업데이트되었습니다.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "https://nextcloud.com에 대한 HTTPS 요청 중 오류가 발생하여 cURL의 TLS 버전이 오래되었는지 확인할 수 없습니다. 자세한 정보는 Nextcloud 로그 파일을 참조하여 주십시오.", "You need to set your user email before being able to send test emails." : "테스트 이메일을 보내기 전 내 주소를 설정해야 합니다.", + "Set as primary mail" : "주 이메일로 지정", + "Change privacy level of email" : "이메일에 대한 공개 단계 변경", "All languages" : "모든 언어", "Everyone" : "모두", "Test email settings" : "이메일 설정 시험", @@ -346,11 +482,32 @@ OC.L10N.register( "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "ownCloud 8.0 이하에서 사용한 이전 암호화 키를 새 키로 이전해야 합니다.", "Start migration" : "이전 시작", "Last job execution ran %s. Something seems wrong." : "마지막 작업이 %s에 실행되었습니다. 무언가 잘못된 것 같습니다.", + "Some jobs haven’t been executed since %s. Please consider increasing the execution frequency." : "%s 이래 몇 가지 작업이 실행되지 않았습니다. 실행 빈도의 증가를 고려하십시오. ", + "Some jobs didn’t execute since %s. Please consider switching to system cron." : "%s 이래 몇 가지 작업이 실행되지 않았습니다. 시스템의 cron으로 변경하는 것을 고려하십시오.", "Last job ran %s." : "마지막 작업이 %s에 실행되었습니다.", "Background job didn’t run yet!" : "배경 작업이 아직 실행되지 않았습니다!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "서버가 적절하게 동작하기 위해 백그라운드 작업을 올바르게 설정하는 것이 중요합니다. \"Cron\"으로 설정하는 것을 권장합니다. 더 많은 정보는 문서를 참조하십시오.", + "Pick background job setting" : "백그라운드 작업 설정 선택", "Recommended" : "추천", "The cron.php needs to be executed by the system user \"%s\"." : "시스템 사용자 \"%s\"(으)로 cron.php를 실행해야 합니다.", "days" : "일", - "No display name set" : "표시 이름이 설정되지 않음" + "Change privacy level of full name" : "전체 이름에 대한 공개 단계 변경", + "No display name set" : "표시 이름이 설정되지 않음", + "Change privacy level of phone number" : "전화번호에 대한 공개 단계 변경", + "Address" : "주소", + "Change privacy level of address" : "주소에 대한 공개 단계 변경", + "Your postal address" : "내 우편 주소", + "Change privacy level of website" : "웹사이트에 대한 공개 단계 변경", + "It can take up to 24 hours before the account is displayed as verified." : "계정이 확인된 것으로 표시될 때까지 최대 24시간이 걸릴 수 있습니다", + "Link https://…" : "링크 https://…", + "Change privacy level of Twitter profile" : "트위터 프로필에 대한 공개 단계 변경", + "Twitter handle @…" : "트위터 핸들 @…", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "곧 OPcache key가 최대치를 초과할 것으로 보입니다. 모든 스크립트가 캐시에 보관될 수 있도록, PHP 설정에서 <code>opcache.max_accelerated_files</code> 값을 <code>%s</code> 보다 크게 적용하시길 권장합니다. ", + "Unable to update biography" : "소개문구를 갱신할 수 없음", + "Unable to update full name" : "전체 이름을 갱신할 수 없음", + "No full name set" : "전체 이름이 설정되지 않음", + "Unable to update headline" : "표제를 갱신할 수 없음", + "Unable to update organisation" : "조직을 갱신할 수 없음", + "Unable to update role" : "직책을 갱신할 수 없음" }, "nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json index 9e5d27ccd34..84a13f49481 100644 --- a/apps/settings/l10n/ko.json +++ b/apps/settings/l10n/ko.json @@ -40,35 +40,61 @@ "You changed your email address" : "내 이메일 주소를 변경함", "Your email address was changed by an administrator" : "관리자가 내 이메일 주소를 변경함", "You created app password \"{token}\"" : "앱 패스워드 \"{token}\"이 생성되었습니다.", + "An administrator created app password \"{token}\"" : "관리자가 앱 패스워드 \"{token}\"을(를) 생성함", "You deleted app password \"{token}\"" : "앱 패스워드 \"{token}\"이 제거되었습니다.", "You renamed app password \"{token}\" to \"{newToken}\"" : "앱 패스워드 \"{token}\"의 이름을 \"{newToken}\"으로 바꿨습니다.", + "You granted filesystem access to app password \"{token}\"" : "앱 패스워드 \"{token}\"에 대해 파일 시스템 접근을 허가함", + "You revoked filesystem access from app password \"{token}\"" : "앱 패스워드 \"{token}\"에 대해 파일 시스템 접근 권한을 철회함", "Security" : "보안", "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)", + "Remote wipe was started on %1$s" : "원격 제거가 %1$s에 시작됨", + "Remote wipe has finished on %1$s" : "원격 제거가 %1$s에 완료됨", "Your <strong>password</strong> or <strong>email</strong> was modified" : "내 <strong>암호</strong> 및 <strong>이메일</strong>이 변경됨", + "Could not remove app." : "앱을 삭제할 수 없음", + "Could not update app." : "앱을 업데이트 할 수 없음", "Wrong password" : "잘못된 암호", + "Unable to change personal password" : "개인 패스워드를 변경할 수 없음", "Saved" : "저장됨", "No user supplied" : "사용자가 지정되지 않음", + "Unable to change password. Password too long." : "패스워드를 변경할 수 없음. 패스워드가 너무 긺.", "Authentication error" : "인증 오류", "Please provide an admin recovery password; otherwise, all user data will be lost." : "관리자 복구 암호를 입력하십시오. 그렇지 않으면 모든 사용자 데이이터가 초기화됩니다다.", "Wrong admin recovery password. Please check the password and try again." : "관리자 복구 암호가 잘못되었습니다. 암호를 다시 확인하십시오.", + "Backend does not support password change, but the user's encryption key was updated." : "백엔드에서 암호 변경을 지원하지 않지만 사용자의 암호화 키는 업데이트되었습니다.", + "installing and updating apps via the App Store or Federated Cloud Sharing" : "앱 스토어 및 연합 클라우드 공유로 앱 설치 및 업데이트", "Federated Cloud Sharing" : "클라우드 연합 공유", + "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL이 오래된 %1$s 버전을 사용하고 있습니다(%2$s). 운영 체제나 기능을 업데이트하지 않으면 %3$s 등을 안정적으로 사용할 수 없습니다.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "https://nextcloud.com에 대한 HTTPS 요청 중 오류가 발생하여 cURL의 TLS 버전이 오래되었는지 확인할 수 없습니다. 자세한 정보는 Nextcloud 로그 파일을 참조하여 주십시오.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "PHP OPcache 모듈이 로드되지 않았습니다. 더 나은 성능을 위해 이를 PHP에 로드하는 것이 권장됩니다.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPchache가 비활성화 되었습니다. PHP 설정에서 <code>opcahce.enable=1</code>을 적용하는 것을 권장합니다.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache가 code comment를 삭제하도록 설정되어 있습니다. Nextcloud의 원활한 작동을 위해 OPcahce 활성화 시 <code>opcache.save_comments=1</code>을 설정해야 합니다.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud가 OPcache API를 사용하도록 허용되지 않았습니다. Nextcloud core나 앱 업그레이드 중 에러 발생을 방지하기 위해, OPcache 활성화 시 모든 Nextcloud 디렉토리를 <code>opcahce.restrict_api</code>에 포함하거나 해당 설정을 해제하여 OPcahce API 제한을 비활성화 하는 것을 권장합니다.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud가 OPcache API를 사용하도록 허용되지 않았습니다. Nextcloud core나 앱 업그레이드 중 에러 발생을 방지하기 위해, OPcache 활성화 시 모든 Nextcloud 디렉토리를 <code>opcahce.restrict_api</code>에 포함하거나 해당 설정을 해제하여 OPcahce API 제한을 비활성화 하는 것을 권장합니다.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "곧 OPcache key가 최대치를 초과할 것으로 보입니다. 모든 스크립트가 캐시에 유지될 수 있도록, PHP 설정에서 <code>opcache.max_accelerated_files</code> 값을 <code>%s</code> 보다 크게 적용하시길 권장합니다. ", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "곧 OPcache 버퍼가 가득 찰 것으로 보입니다. 모든 스크립트가 캐시에 보관될 수 있도록, PHP 설정에서 <code>opcache.memory_consumption</code> 값을 <code>%s</code> 보다 크게 적용하시길 권장합니다. ", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "곧 OPcache interned buffer가 가득 찰 것으로 보입니다. 반복 문자열이 효율적으로 캐싱될 수 있도록, PHP 설정에서 <code>opcache.interned_strings_buffer</code> 값을 <code>%s</code> 보다 크게 적용하시길 권장합니다. ", "Invalid SMTP password." : "SMTP 암호가 잘못되었습니다.", "Email setting test" : "이메일 설정 시험", "Well done, %s!" : "%s 님, 잘 하셨습니다!", "If you received this email, the email configuration seems to be correct." : "이 이메일을 받으셨다면 이메일 설정이 올바릅니다.", "Email could not be sent. Check your mail server log" : "이메일을 보낼 수 없습니다. 메일 서버 로그를 확인하십시오.", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "이메일을 보내는 중 오류가 발생했습니다. 설정을 확인하십시오.(오류: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "이메일 발송 테스트를 진행하기 앞서 당신의 사용자 이메일을 설정해야 합니다. 설정을 위해 %s(으)로 가십시오.", "Invalid user" : "잘못된 사용자", "Invalid mail address" : "잘못된 이메일 주소", "Settings saved" : "설정 저장됨", "Unable to change full name" : "전체 이름을 변경할 수 없음", "Unable to change email address" : "이메일 주소를 변경할 수 없음", + "Unable to set invalid phone number" : "올바르지 않은 전화번호를 설정할 수 없음", + "Unable to set invalid website" : "올바르지 않은 웹사이트 주소를 설정할 수 없음", + "Some account data was invalid" : "몇 가지 계정 데이터가 올바르지 않음", "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "내 트위터 계정을 확인하려면 다음 트윗을 타임라인에 게시하십시오(줄바꿈을 추가하지 마십시오):", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "내 웹 사이트를 확인하려면 다음 내용을 웹 사이트 루트 디렉터리의 '.well-known/CloudIdVerificationCode.txt' 파일에 게시하십시오(전체 텍스트가 한 줄에 들어가야 함):", "%1$s changed your password on %2$s." : "%1$s 님이 내 암호를 %2$s에 변경했습니다.", "Your password on %s was changed." : "내 %s 암호를 변경했습니다.", "Your password on %s was reset by an administrator." : "관리자가 내 %s 암호를 초기화했습니다.", + "Your password on %s was reset." : "내 %s 암호를 변경했습니다.", "Password for %1$s changed on %2$s" : "%1$s의 암호를 %2$s에 변경함", "Password changed for %s" : "%s의 암호 변경됨", "If you did not request this, please contact an administrator." : "요청하지 않았다면 관리자에게 연락하십시오.", @@ -85,11 +111,13 @@ "Set your password" : "내 암호 설정하기", "Go to %s" : "%s(으)로 이동", "Install Client" : "클라이언트 설치", + "Logged in user must be a subadmin" : "로그인한 사용자는 부관리자여야 합니다.", "Apps" : "앱", "Settings" : "설정", "Personal" : "개인", "Administration" : "관리", "Additional settings" : "고급 설정", + "Admin privileges" : "관리자용 권한", "Groupware" : "그룹웨어", "Overview" : "개요", "Basic settings" : "기본 설정", @@ -105,17 +133,33 @@ "Reshare" : "재공유", "Unlimited" : "무제한", "Verifying" : "검사", + "A background job is pending that checks for user imported SSL certificates. Please check back later." : "사용자가 불러온 SSL 인증서를 확인하는 백그라운드 작업이 진행중입니다. 나중에 다시 확인하십시오.", + "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "현재 사용자가 불러온 SSL 인증서 중 Nextcloud 21과 함께 사용할 수 없는 것이 있습니다. 이러한 인증서는 커맨드라인 명령어 \"occ security:certificates:import\"로 불러올 수 있습니다. 데이터 디렉토리 내부에 있는 해당 인증서의 경로가 아래에 표시됩니다.", + "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "잘못된 LDAP 사용자 또는 그룹 UUID를 발견했습니다. LDAP 설정의 '전문가' 부분에서 \"Override UUID detection\"을 재확인하시고, \"occ ldap:update-uuid\" 명령어를 통해 이를 갱신하십시오.", + "The old server-side-encryption format is enabled. We recommend disabling this." : "구형 포맷의 서버 측 암호화가 활성화된 상태입니다. 이를 비활성화 하는 것을 권장합니다.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "현재 MariaDB \"%s\" 버전이 사용되고 있습니다. Nextcloud 21 및 그 이상의 버전은 이를 지원하지 않습니다. MariaDB 10.2 이상을 사용하십시오.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "현재 MySQL \"%s\" 버전이 사용되고 있습니다. Nextcloud 21 및 그 이상의 버전은 이를 지원하지 않습니다. MySQL 8.0 혹은 MariaDB 10.2 이상을 사용하십시오.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "현재 PostgreSQL \"%s\" 버전이 사용되고 있습니다. Nextcloud 21 및 그 이상의 버전은 이를 지원하지 않습니다. PostgreSQL 9.6 이상을 사용하십시오.", + "Profile information" : "프로필 정보", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "프로필 사진, 전체 이름, 이메일, 전화번호, 주소, 웹사이트, 트위터, 조직, 직책, 표제, 소개문구 및 프로필 활성화 여부", "Nextcloud settings" : "Nextcloud 환경설정", + "Administration privileges" : "관리 권한", + "Here you can decide which group can access certain sections of the administration settings." : "이곳에서 특정 그룹의 특정 관리자 설정 접근 여부를 설정할 수 있습니다.", "None" : "없음", + "Unable to modify setting" : "설정을 수정할 수 없습니다", "Two-Factor Authentication" : "2단계 인증", + "Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "2단계 인증을 모든 유저 또는 특정 그룹에 강제할 수 있습니다. 만약 대상자가 2단계 인증 공급자를 설정하지 않았다면, 대상자는 시스템에 접근할 수 없게 될 것입니다.", "Enforce two-factor authentication" : "2단계 인증 강제하기", "Limit to groups" : "그룹으로 제한", "Enforcement of two-factor authentication can be set for certain groups only." : "2단계 인증 강제는 특정 그룹에게만 적용됩니다.", + "Two-factor authentication is enforced for all members of the following groups." : "2단계 인증이 모든 멤버에게 강제된 그룹은 다음과 같습니다.", "Enforced groups" : "강제된 그룹", + "Two-factor authentication is not enforced for members of the following groups." : "2단계 인증이 강제되지 않은 그룹은 다음과 같습니다.", "Excluded groups" : "제외된 그룹", "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "그룹이 선택되거나 제외되었을 때, 다음과 같은 상황을 고려할 수 있습니다. 만약 2단계 인증이 강제되었고, 아무런 그룹이 선택되지 않았다면 제외된 그룹의 멤버를 제외하고 모든 유저에게 2단계 인증이 강제됩니다. 만약 그룹이 선택되었다면 그룹 안의 모든 멤버에게 2단계 인증이 강제됩니다. 만약 유저가 선택된 그룹과 제외된 그룹에 동시에 속해있다면, 선택된 그룹이 우선되며 2단계 인증이 강제됩니다.", "Save changes" : "변경 사항 저장", "All" : "모두", + "Limit app usage to groups" : "앱 사용을 그룹으로 제한합니다.", "No results" : "결과 없음", "Update to {version}" : "{version}(으)로 업데이트", "Remove" : "삭제", @@ -129,16 +173,23 @@ "User documentation" : "사용자 문서", "Admin documentation" : "관리 문서", "Developer documentation" : "개발자 문서", + "This app is supported via your current Nextcloud subscription." : "이 앱은 당신의 현재 Nextcloud 구독을 통해 지원됩니다.", + "Supported" : "지원됨", "Featured" : "추천", + "Update to {update}" : "{update}(으)로 업데이트", + "All apps are up-to-date." : "모든 앱이 최신 버전입니다.", "No apps found for your version" : "설치된 버전에 대한 앱 없음", "Disable all" : "전체 비활성화", "Enable all" : "모두 활성화", "_%n app has an update available_::_%n apps have an update available_" : ["%n앱을 업데이트 할 수 있습니다."], + "_Update_::_Update all_" : ["모두 업데이트"], + "Marked for remote wipe" : "원격 제거를 위해 지정됨", "Device settings" : "디바이스 설정", "Allow filesystem access" : "파일시스템 접근 허용", "Rename" : "이름 바꾸기", "Revoke" : "취소", "Wipe device" : "디바이스 지우기", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "기기 제거가 아직 시작되지 않았다면, 이 토큰을 취소하여 기기의 제거를 방지할 수 있습니다.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -157,6 +208,7 @@ "Confirm wipe" : "삭제 완료", "Error while creating device token" : "장치 토큰을 만드는 중 오류가 발생했습니다", "Error while deleting the token" : "토큰을 삭제하는 중 오류가 발생했습니다", + "Error while wiping the device with the token" : "토큰으로 기기를 제거하는 도중 오류 발생", "App name" : "앱 이름", "Create new app password" : "새로운 앱 암호 만들기", "Use the credentials below to configure your app or device." : "앱 또는 장치를 구성하는 아래의 자격 증명을 사용합니다.", @@ -168,12 +220,25 @@ "Copied!" : "복사 성공!", "Copy" : "복사", "Could not copy app password. Please copy it manually." : "앱 비밀번호를 복사할 수 없습니다. 직접 옮겨 적으십시오.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "서버가 적절하게 동작하기 위해 백그라운드 작업을 올바르게 설정하는 것이 중요합니다. Cron으로 설정하는 것을 권장합니다. 더 많은 정보는 문서를 참조하십시오.", + "Last job execution ran {time}. Something seems wrong." : "마지막 작업이 {time}에 실행되었습니다. 무언가 잘못된 것 같습니다.", + "Last job ran {relativeTime}." : "마지막 작업이 {relativeTime}에 실행되었음", + "Background job did not run yet!" : "백그라운드 작업이 아직 실행되지 않았습니다!", + "Execute one task with each page loaded. Use case: Single user instance." : "각 페이지를 로드할 때 마다 하나의 작업을 시행. 사용례: 1인 사용자 인스턴스", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php를 webcron 서비스에 등록하여 cron.php를 매 5분마다 HTTP 상에서 호출. 사용례: 아주 작은 인스턴스 (사용자가 1~5명인 규모 - 사용량에 따라 다름)", + "Cron (Recommended)" : "Cron (권장됨)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "이 항목을 실행하려면 PHP POSIX 확장이 필요합니다. 자세한 사항은 {linkstart}PHP 문서{linkend}를 참조하십시오.", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "시스템 Cron 서비스를 사용하여 cron.php를 매 5분마다 호출. 모든 인스턴스에 권장.", + "The cron.php needs to be executed by the system user \"{user}\"." : "시스템 사용자 \"{user}\"(으)로 cron.php를 실행해야 합니다.", + "Unable to update background job mode" : "백그라운드 작업 모드를 업데이트 할 수 없음", "Profile" : "프로필", + "Enable or disable profile by default for new users." : "신규 사용자에 대한 프로필 기본 사용 여부를 설정하십시오.", "Enable" : "사용함", + "Unable to update profile default setting" : "프로필 기본 설정을 업데이트 할 수 없음", "Server-side encryption" : "서버 측 암호화", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "서버 측 암호화를 사용하면 이 서버에 업로드되는 파일을 암호화할 수 있습니다. 성능 감소 등 제약 사항이 있으므로 필요한 경우에만 사용하십시오.", "Enable server-side encryption" : "서버 측 암호화 사용", + "Please read carefully before activating server-side encryption:" : "서버 측 암호화를 활성화하기 전에 읽어 보십시오:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "암호화를 사용하면, 사용하기 시작한 시간 이후에 서버에 업로드된 모든 파일이 암호화됩니다. 나중에 암호화를 사용하지 않으려면 사용하고 있는 암호화 모듈에서 비활성화를 지원해야 하고 모든 사전 조건(예: 복구 키 설정)을 만족해야 합니다.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "암호화만으로 시스템의 보안을 보장할 수 없습니다. 암호화 응용 프로그램 작동 방식 및 지원되는 사용 사례에 대한 자세한 내용은 설명서를 참조하십시오.", "Be aware that encryption always increases the file size." : "암호화된 파일의 크기는 항상 커집니다.", @@ -181,28 +246,72 @@ "This is the final warning: Do you really want to enable encryption?" : "마지막 경고입니다. 암호화를 활성화하시겠습니까?", "No encryption module loaded, please enable an encryption module in the app menu." : "암호화 모듈을 불러오지 않았습니다. 앱 메뉴에서 암호화 모듈을 활성화하십시오.", "Select default encryption module:" : "기본 암호화 모듈 선택:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "과거에 사용하였던(ownCloud <= 8.0) 암호화된 데이터에서 키를 이전해야 합니다. \"기본 암호화 모듈\"을 활성화한 다음 {command}(을)를 실행하십시오", + "Unable to update server side encryption config" : "서버 측 암호화 설정을 갱신할 수 없음", + "Rename group" : "그룹 이름 바꾸기", "Remove group" : "그룹 지우기", "You are about to remove the group {group}. The users will NOT be deleted." : "당신은 {group} 그룹을 지우려고 합니다. 그룹의 사용자들은 삭제되지 않습니다.", "Please confirm the group removal " : "그룹 지우기를 확인해주세요.", + "Current password" : "현재 암호", + "New password" : "새 암호", + "Change password" : "암호 변경", + "Your biography" : "내 소개문구", + "Your full name" : "내 전체 이름", + "Email options" : "이메일 옵션", + "Primary email for password reset and notifications" : "암호 초기화 및 알림 수신용 주 이메일 주소", + "Remove primary email" : "주 이메일 삭제", + "Delete email" : "이메일 삭제", + "Unset as primary email" : "주 이메일 지정 해제", + "This address is not confirmed" : "이 주소는 확인되지 않음", + "Set as primary email" : "주 이메일로 지정", "Your email address" : "이메일 주소", + "Additional email address {index}" : "추가 이메일 주소 {index}", + "Unable to delete primary email address" : "주 이메일 주소를 삭제할 수 없음", + "Unable to update primary email address" : "주 이메일 주소를 갱신할 수 없음", + "Unable to add additional email address" : "추가 이메일 주소를 추가할 수 없음", + "Unable to update additional email address" : "추가 이메일 주소를 갱신할 수 없음", + "Unable to delete additional email address" : "추가 이메일 주소를 삭제할 수 없음", "No email address set" : "이메일 주소가 설정되지 않음", + "Additional emails" : "추가 이메일", + "Your headline" : "내 표제", "Language" : "언어", "Help translate" : "번역 돕기", + "Unable to update language" : "언어를 갱신할 수 없음", + "No language set" : "언어가 설정되지 않음", + "Your organisation" : "내 조직", + "Your phone number" : "내 휴대폰 번호", + "Edit your Profile visibility" : "프로필 표시 여부 편집", + "Enable Profile" : "프로필 활성화", + "Unable to update profile enabled state" : "프로필 활성화 여부를 갱신할 수 없음", + "Unable to update visibility of {displayId}" : "{displayId}의 표시 여부를 갱신할 수 없음", + "Your role" : "내 직책", + "Your Twitter handle" : "내 트위터", + "Your website" : "내 웹 사이트", + "Add additional email" : "추가 이메일 추가", "Add" : "추가", "You do not have permissions to see the details of this user" : "사용자의 상세정보를 볼 권한이 없습니다", "Add new password" : "새로운 비밀번호를 입력하시오", "Add new email address" : "새로운 이메일 추가하기", + "Add user to group" : "사용자를 그룹에 추가", + "Set user as admin for" : "사용자를 다음에 대한 관리자로 설정", + "Select user quota" : "사용자 할당량 선택", "Delete user" : "유저 지우기", + "Wipe all devices" : "모든 기기 지우기", "Disable user" : "유저 비활성화하기", "Enable user" : "유저 활성화하기", "Resend welcome email" : "환영 메일 다시 보내기", + "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "기기를 분실했거나 조직에서 이탈할 경우, 이를 통해 모든 기기에 있는 {userid} 관련 Nextcloud 데이터를 원격으로 삭제할 수 있습니다. 해당 기기들이 인터넷에 연결된 경우에 한하여 작동합니다.", + "Remote wipe of devices" : "기기 원격 제거", + "Wipe {userid}'s devices" : "{userid}의 기기 제거", "Cancel" : "취소", "Fully delete {userid}'s account including all their personal files, app data, etc." : "모든 개인 파일, 앱, 데이터 등을 포함한 {userid}계정을 완전히 삭제하기", "Account deletion" : "계정 삭제", "Delete {userid}'s account" : "{userid}의 계정 삭제", "Welcome mail sent!" : "환영 메일을 보냈습니다!", + "Edit User" : "사용자 편집", "{size} used" : "{size} 사용됨", "New user" : "새 사용자", + "Will be autogenerated" : "자동으로 생성될 것임", "Display name" : "표시 이름", "Email" : "이메일", "Default language" : "기본 언어", @@ -214,18 +323,32 @@ "Last login" : "마지막 로그인", "No users in here" : "사용자가 이곳에 없습니다.", "Default quota" : "기본 할당량", + "Common languages" : "공통 언어", + "Other languages" : "다른 언어", + "Password change is disabled because the master key is disabled" : "마스터 키가 비활성화 되어 암호 변경이 비활성화 됨", + "Passwordless authentication requires a secure connection." : "무암호 인증을 위해 보안 연결이 필요합니다.", + "Add WebAuthn device" : "WebAuthn 기기 추가", + "Please authorize your WebAuthn device." : "내 WebAuthn 기기를 인증하십시오.", "Name your device" : "장치 이름 설정", "Adding your device …" : "장치 추가 중 …", + "Server error while trying to add WebAuthn device" : "WebAuthn 기기 추가 시도 중 서버 오류 발생", + "Server error while trying to complete WebAuthn device registration" : "WebAuthn 기기 등록을 마치는 중 오류 발생", "Unnamed device" : "이름 없는 장치", + "Passwordless Authentication" : "무암호 인증", + "Set up your account for passwordless authentication following the FIDO2 standard." : "FIDO2 기준을 준수하여 계정에 무암호 인증을 설정하십시오", + "No devices configured." : "설정된 기기가 없습니다.", + "The following devices are configured for your account:" : "다음의 기기가 계정에 설정되었습니다:", "Your browser does not support WebAuthn." : "WebAuthn이 현재 브라우저를 지원하지 않습니다.", "Your apps" : "내 앱", "Active apps" : "활성화된 앱", "Disabled apps" : "비활성화된 앱", "Updates" : "업데이트", "App bundles" : "앱 번들", + "Featured apps" : "추천 앱 - ", "{license}-licensed" : "{license} 라이선스", "Details" : "자세히", "Changelog" : "변경 기록", + "Enter group name" : "그룹 이름 입력", "Add group" : "그룹 추가", "Active users" : "활성 사용자", "Admins" : "관리자", @@ -240,25 +363,31 @@ "Not saved" : "저장하지 않음", "Sending…" : "보내는 중…", "Email sent" : "이메일 보냄", - "Address" : "주소", + "Location" : "위치", "Avatar" : "아바타", "About" : "정보", "Full name" : "전체 이름", + "Additional email" : "추가 이메일", "Headline" : "표제", + "Organisation" : "조직", "Phone number" : "휴대폰 번호", "Role" : "직책", "Twitter" : "트위터", "Website" : "웹사이트", + "Profile visibility" : "프로필 표시 여부", "Show to everyone" : "전체 공개", "Show to logged in users only" : "로그인된 사용자에게 공개", "Hide" : "비공개", "Download and enable" : "다운로드 및 활성화", + "Enable untested app" : "미시험 앱 활성화", "The app will be downloaded from the App Store" : "이 앱이 앱 스토어에서 다운로드됩니다", "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "이 앱은 현재 Nextcloud 버젼과 호환되지 않습니다. 이 앱을 설치하면, 제대로 작동하지 않을 수 있습니다.", "Never" : "하지 않음", "An error occured during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "앱이 활성화되었지만, 앱을 업데이트해야 합니다. 5초 후 앱 업데이트 페이지로 넘어갑니다.", "Error: This app cannot be enabled because it makes the server unstable" : "오류: 이 앱은 서버를 불안정하게 만들 수 있어서 활성화할 수 없습니다", + "An error occurred during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.", + "User already exists." : "사용자가 이미 있습니다.", "Administrator documentation" : "관리자 문서", "Documentation" : "문서", "Forum" : "포럼", @@ -281,18 +410,25 @@ "SMTP Username" : "SMTP 사용자 이름", "SMTP Password" : "SMTP 암호", "Save" : "저장", + "Test and verify email settings" : "이메일 설정 테스트 및 검증", "Send email" : "이메일 보내기", - "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "당신의 인스턴스의 보안과 성능을 위해서는 모든 것이 정확하게 설정되어야 합니다. 그러기 위해서 자동적으로 몇 가지를 확인하겠습니다. 더 자세한 정보를 위해서 링크된 문서를 참고하세요.", + "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "이 인스턴스의 보안과 성능을 위해서 모든 것이 정확하게 설정되어야 합니다. 그러기 위해서 자동적으로 몇 가지를 확인하겠습니다. 더 자세한 정보를 위해서 링크된 문서를 참고하세요.", "All checks passed." : "모든 검사를 통과했습니다.", "There are some errors regarding your setup." : "설정을 살펴본 결과 몇 가지 에러가 있습니다.", "There are some warnings regarding your setup." : "설정을 살펴본 결과 몇 가지 경고할 것이 있습니다.", "Checking for system and security issues." : "시스템과 보안에 대한 문제를 확인하는 중", "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">설치 가이드 ↗</a>를 다시 한 번 확인한 다음 <a href=\"%2$s\">로그</a>의 경고나 에러를 확인하세요.", - "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">우리의 보안 검사 ↗</a>에서 당신의 Nextcloud의 보안을 점검하세요.", + "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">우리의 보안 검사 ↗</a>에서 이 Nextcloud의 보안을 점검하세요.", "Version" : "버전", + "You need to enable the File sharing App." : "파일 공유 앱을 활성화해야 합니다.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "관리자로 공유 행동을 미세 조정할 수 있습니다. 더 많은 정보를 보려면 문서를 참조하십시오.", "Allow apps to use the Share API" : "앱에서 공유 API를 사용할 수 있도록 허용", + "Set default expiration date for shares" : "공유에 대한 기본 만료 날짜 설정", + "Expire after" : "다음 날짜 후 만료", + "day(s)" : "일", "Enforce expiration date" : "만료 날짜 강제", + "Set default expiration date for shares to other servers" : "다른 서버와의 공유에 대한 기본 만료 날짜 설정", + "Allow users to share via link and emails" : "사용자가 링크와 이메일을 통해 공유하는 것 허용", "Allow public uploads" : "공개 업로드 허용", "Always ask for a password" : "항상 암호 묻기", "Enforce password protection" : "암호 보호 강제", @@ -304,37 +440,37 @@ "These groups will still be able to receive shares, but not to initiate them." : "이 그룹의 사용자들은 다른 사용자가 공유한 파일을 받을 수는 있지만, 자기 파일을 공유할 수는 없습니다.", "This text will be shown on the public link upload page when the file list is hidden." : "파일 목록이 숨겨져 있으면 이 텍스트는 공개 링크 업로드 페이지에 표시됩니다.", "Default share permissions" : "기본 공유 권한", + "Reasons to use Nextcloud in your organization" : "당신의 조직에서 Nextcloud를 사용해야 할 이유", "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "{communityopen}Nextcloud 커뮤니티{linkclose}에서 개발, {githubopen}소스 코드{linkclose}는 {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose} 라이선스를 따릅니다.", "Like our Facebook page" : "Facebook 페이지에서 좋아요 누르기", "Follow us on Twitter" : "트위터에서 팔로하기", "Check out our blog" : "블로그 확인하기", "Subscribe to our newsletter" : "뉴스레터 구독하기", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "이 Nextcloud 커뮤니티 릴리즈는 지원되지 않으며 즉각적인 알림을 사용할 수 없습니다.", "Profile picture" : "프로필 사진", + "Change privacy level of profile picture" : "프로필 사진에 대한 공개 단계 변경", "Upload new" : "새로 업로드", "Select from Files" : "파일에서 선택", "Remove image" : "그림 삭제", "png or jpg, max. 20 MB" : "PNG, JPG, 최대 20MB", "Picture provided by original account" : "원래 계정에서 제공하는 사진", + "Please note that it can take up to 24 hours for the avatar to get updated everywhere." : "아바타가 모든 곳에 갱신될 때 까지 최대 24시간이 걸릴 수 있습니다.", "Choose as profile picture" : "프로필 사진으로 선택", "You are a member of the following groups:" : "당신은 다음 그룹의 멤버입니다:", "You are using <strong>%s</strong>" : "현재 <strong>%s</strong>를 사용하고 있습니다.", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "현재 <strong>%2$s</strong> /%1$s</strong>(<strong>%3$s%%</strong>)를 사용하고 있습니다", - "Your phone number" : "내 휴대폰 번호", - "Your postal address" : "내 우편 주소", - "It can take up to 24 hours before the account is displayed as verified." : "계정이 확인된 것으로 표시될 때까지 최대 24시간이 걸릴 수 있습니다", - "Link https://…" : "링크 https://…", - "Twitter handle @…" : "트위터 핸들 @…", "Locale" : "지역", - "Current password" : "현재 암호", - "New password" : "새 암호", - "Change password" : "암호 변경", "Use a second factor besides your password to increase security for your account." : "사용자의 계정을 더욱 안전하게 보호하기 위해 암호와 함께 2단계 인증을 사용하세요.", + "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Nextcloud에 연결하기 위해 서드파티 애플리케이션을 사용할 경우 2차 인증을 활성화하기 앞서 각 애플리케이션에 대한 앱 암호를 생성, 설정하십시오.", "Migration in progress. Please wait until the migration is finished" : "이전 작업 중입니다. 작업이 완료될 때까지 기다려 주십시오", "Migration started …" : "이전 시작됨...", "Couldn't remove app." : "앱을 삭제할 수 없습니다.", "Couldn't update app." : "앱을 업데이트할 수 없습니다.", "Backend doesn't support password change, but the user's encryption key was updated." : "백엔드에서 암호 변경을 지원하지 않지만 사용자의 암호화 키는 업데이트되었습니다.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "https://nextcloud.com에 대한 HTTPS 요청 중 오류가 발생하여 cURL의 TLS 버전이 오래되었는지 확인할 수 없습니다. 자세한 정보는 Nextcloud 로그 파일을 참조하여 주십시오.", "You need to set your user email before being able to send test emails." : "테스트 이메일을 보내기 전 내 주소를 설정해야 합니다.", + "Set as primary mail" : "주 이메일로 지정", + "Change privacy level of email" : "이메일에 대한 공개 단계 변경", "All languages" : "모든 언어", "Everyone" : "모두", "Test email settings" : "이메일 설정 시험", @@ -344,11 +480,32 @@ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "ownCloud 8.0 이하에서 사용한 이전 암호화 키를 새 키로 이전해야 합니다.", "Start migration" : "이전 시작", "Last job execution ran %s. Something seems wrong." : "마지막 작업이 %s에 실행되었습니다. 무언가 잘못된 것 같습니다.", + "Some jobs haven’t been executed since %s. Please consider increasing the execution frequency." : "%s 이래 몇 가지 작업이 실행되지 않았습니다. 실행 빈도의 증가를 고려하십시오. ", + "Some jobs didn’t execute since %s. Please consider switching to system cron." : "%s 이래 몇 가지 작업이 실행되지 않았습니다. 시스템의 cron으로 변경하는 것을 고려하십시오.", "Last job ran %s." : "마지막 작업이 %s에 실행되었습니다.", "Background job didn’t run yet!" : "배경 작업이 아직 실행되지 않았습니다!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "서버가 적절하게 동작하기 위해 백그라운드 작업을 올바르게 설정하는 것이 중요합니다. \"Cron\"으로 설정하는 것을 권장합니다. 더 많은 정보는 문서를 참조하십시오.", + "Pick background job setting" : "백그라운드 작업 설정 선택", "Recommended" : "추천", "The cron.php needs to be executed by the system user \"%s\"." : "시스템 사용자 \"%s\"(으)로 cron.php를 실행해야 합니다.", "days" : "일", - "No display name set" : "표시 이름이 설정되지 않음" + "Change privacy level of full name" : "전체 이름에 대한 공개 단계 변경", + "No display name set" : "표시 이름이 설정되지 않음", + "Change privacy level of phone number" : "전화번호에 대한 공개 단계 변경", + "Address" : "주소", + "Change privacy level of address" : "주소에 대한 공개 단계 변경", + "Your postal address" : "내 우편 주소", + "Change privacy level of website" : "웹사이트에 대한 공개 단계 변경", + "It can take up to 24 hours before the account is displayed as verified." : "계정이 확인된 것으로 표시될 때까지 최대 24시간이 걸릴 수 있습니다", + "Link https://…" : "링크 https://…", + "Change privacy level of Twitter profile" : "트위터 프로필에 대한 공개 단계 변경", + "Twitter handle @…" : "트위터 핸들 @…", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "곧 OPcache key가 최대치를 초과할 것으로 보입니다. 모든 스크립트가 캐시에 보관될 수 있도록, PHP 설정에서 <code>opcache.max_accelerated_files</code> 값을 <code>%s</code> 보다 크게 적용하시길 권장합니다. ", + "Unable to update biography" : "소개문구를 갱신할 수 없음", + "Unable to update full name" : "전체 이름을 갱신할 수 없음", + "No full name set" : "전체 이름이 설정되지 않음", + "Unable to update headline" : "표제를 갱신할 수 없음", + "Unable to update organisation" : "조직을 갱신할 수 없음", + "Unable to update role" : "직책을 갱신할 수 없음" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js index 479d5375242..6372f65bce7 100644 --- a/apps/settings/l10n/lt_LT.js +++ b/apps/settings/l10n/lt_LT.js @@ -144,11 +144,13 @@ OC.L10N.register( "This app is supported via your current Nextcloud subscription." : "Ši programėlė yra palaikoma per jūsų esamą Nextcloud prenumeratą.", "Supported" : "Palaikoma", "Update to {update}" : "Atnaujinti į {update}", + "All apps are up-to-date." : "Visos programėlės yra naujausios laidos.", "Results from other categories" : "Rezultatai iš kitų kategorijų", "No apps found for your version" : "Jūsų versijai programėlių nėra", "Disable all" : "Išjungti visas", "Enable all" : "Įjungti visas", "_%n app has an update available_::_%n apps have an update available_" : ["%n programėlei yra prieinamas atnaujinimas","%n programėlėms yra prieinamas atnaujinimas","%n programėlių yra prieinamas atnaujinimas","%n programėlei yra prieinamas atnaujinimas"], + "_Update_::_Update all_" : ["Atnaujinti","Atnaujinti visas","Atnaujinti visas","Atnaujinti visas"], "Marked for remote wipe" : "Pažymėtas nuotolinių duomenų ištrynimui", "Device settings" : "Įrenginio nustatymai", "Allow filesystem access" : "Leisti prieigą prie failų sistemos", @@ -203,11 +205,11 @@ OC.L10N.register( "Remove group" : "Šalinti grupę", "You are about to remove the group {group}. The users will NOT be deleted." : "Jūs ketinate pašalinti grupę {group}. Naudotojai NEBUS ištrinti.", "Please confirm the group removal " : "Patvirtinkite grupės pašalinimą", + "Current password" : "Dabartinis slaptažodis", + "New password" : "Naujas slaptažodis", + "Change password" : "Pakeisti slaptažodį", "Your biography" : "Jūsų biografija", - "Unable to update biography" : "Nepavyko atnaujinti biografijos", "Your full name" : "Jūsų visas vardas", - "Unable to update full name" : "Nepavyko atnaujinti viso vardo", - "No full name set" : "Nenustatyta jokio viso vardo", "Remove primary email" : "Šalinti pirminį el. paštą", "Delete email" : "Ištrinti el. paštą", "This address is not confirmed" : "Šis adresas nėra patvirtintas", @@ -217,11 +219,13 @@ OC.L10N.register( "Language" : "Kalba", "Help translate" : "Padėkite išversti", "No language set" : "Nenustatyta jokia kalba", + "Your phone number" : "Jūsų telefono numeris", "Edit your Profile visibility" : "Taisyti savo profilio matomumą", "Enable Profile" : "Įjungti profilį", "Unable to update profile enabled state" : "Nepavyko atnaujinti profilio įjungimo būsenos", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nepavyko atnaujinti {displayId} matomumo", + "Your website" : "Jūsų svetainė", "Add" : "Pridėti", "You do not have permissions to see the details of this user" : "Jūs neturite leidimų matyti išsamesnę informaciją apie šį naudotoją", "Add new password" : "Pridėti naują slaptažodį", @@ -298,7 +302,7 @@ OC.L10N.register( "Not saved" : "Neįrašyta", "Sending…" : "Siunčiama…", "Email sent" : "El. paštas išsiųstas", - "Address" : "Adresas", + "Location" : "Vieta", "Avatar" : "Avataras", "About" : "Apie", "Full name" : "Vardas, pavardė", @@ -380,15 +384,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Jūs esate šių grupių narys:", "You are using <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jūs naudojate <strong>%1$s</strong> iš <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Jūsų telefono numeris", - "Your postal address" : "Jūsų adresas", - "It can take up to 24 hours before the account is displayed as verified." : "Gali užtrukti iki 24 valandų, kol paskyra bus rodoma kaip patikrinta. ", - "Link https://…" : "Nuoroda https://…", - "Twitter handle @…" : "Twitter rankenėlė @…", "Locale" : "Lokalė", - "Current password" : "Dabartinis slaptažodis", - "New password" : "Naujas slaptažodis", - "Change password" : "Pakeisti slaptažodį", "Use a second factor besides your password to increase security for your account." : "Be savo slaptažodžio naudokite ir antrąjį faktorių, kad padidintumėte savo paskyros saugumą.", "Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas", "Migration started …" : "Perkėlimas pradėtas …", @@ -414,6 +410,14 @@ OC.L10N.register( "Recommended" : "Rekomenduojama", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php turi įvykdyti sistemos naudotojas „%s“.", "days" : "dienos", - "No display name set" : "Rodomas vardas nenurodytas" + "No display name set" : "Rodomas vardas nenurodytas", + "Address" : "Adresas", + "Your postal address" : "Jūsų adresas", + "It can take up to 24 hours before the account is displayed as verified." : "Gali užtrukti iki 24 valandų, kol paskyra bus rodoma kaip patikrinta. ", + "Link https://…" : "Nuoroda https://…", + "Twitter handle @…" : "Twitter rankenėlė @…", + "Unable to update biography" : "Nepavyko atnaujinti biografijos", + "Unable to update full name" : "Nepavyko atnaujinti viso vardo", + "No full name set" : "Nenustatyta jokio viso vardo" }, "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json index 492a8461f1f..542f62d1a55 100644 --- a/apps/settings/l10n/lt_LT.json +++ b/apps/settings/l10n/lt_LT.json @@ -142,11 +142,13 @@ "This app is supported via your current Nextcloud subscription." : "Ši programėlė yra palaikoma per jūsų esamą Nextcloud prenumeratą.", "Supported" : "Palaikoma", "Update to {update}" : "Atnaujinti į {update}", + "All apps are up-to-date." : "Visos programėlės yra naujausios laidos.", "Results from other categories" : "Rezultatai iš kitų kategorijų", "No apps found for your version" : "Jūsų versijai programėlių nėra", "Disable all" : "Išjungti visas", "Enable all" : "Įjungti visas", "_%n app has an update available_::_%n apps have an update available_" : ["%n programėlei yra prieinamas atnaujinimas","%n programėlėms yra prieinamas atnaujinimas","%n programėlių yra prieinamas atnaujinimas","%n programėlei yra prieinamas atnaujinimas"], + "_Update_::_Update all_" : ["Atnaujinti","Atnaujinti visas","Atnaujinti visas","Atnaujinti visas"], "Marked for remote wipe" : "Pažymėtas nuotolinių duomenų ištrynimui", "Device settings" : "Įrenginio nustatymai", "Allow filesystem access" : "Leisti prieigą prie failų sistemos", @@ -201,11 +203,11 @@ "Remove group" : "Šalinti grupę", "You are about to remove the group {group}. The users will NOT be deleted." : "Jūs ketinate pašalinti grupę {group}. Naudotojai NEBUS ištrinti.", "Please confirm the group removal " : "Patvirtinkite grupės pašalinimą", + "Current password" : "Dabartinis slaptažodis", + "New password" : "Naujas slaptažodis", + "Change password" : "Pakeisti slaptažodį", "Your biography" : "Jūsų biografija", - "Unable to update biography" : "Nepavyko atnaujinti biografijos", "Your full name" : "Jūsų visas vardas", - "Unable to update full name" : "Nepavyko atnaujinti viso vardo", - "No full name set" : "Nenustatyta jokio viso vardo", "Remove primary email" : "Šalinti pirminį el. paštą", "Delete email" : "Ištrinti el. paštą", "This address is not confirmed" : "Šis adresas nėra patvirtintas", @@ -215,11 +217,13 @@ "Language" : "Kalba", "Help translate" : "Padėkite išversti", "No language set" : "Nenustatyta jokia kalba", + "Your phone number" : "Jūsų telefono numeris", "Edit your Profile visibility" : "Taisyti savo profilio matomumą", "Enable Profile" : "Įjungti profilį", "Unable to update profile enabled state" : "Nepavyko atnaujinti profilio įjungimo būsenos", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nepavyko atnaujinti {displayId} matomumo", + "Your website" : "Jūsų svetainė", "Add" : "Pridėti", "You do not have permissions to see the details of this user" : "Jūs neturite leidimų matyti išsamesnę informaciją apie šį naudotoją", "Add new password" : "Pridėti naują slaptažodį", @@ -296,7 +300,7 @@ "Not saved" : "Neįrašyta", "Sending…" : "Siunčiama…", "Email sent" : "El. paštas išsiųstas", - "Address" : "Adresas", + "Location" : "Vieta", "Avatar" : "Avataras", "About" : "Apie", "Full name" : "Vardas, pavardė", @@ -378,15 +382,7 @@ "You are a member of the following groups:" : "Jūs esate šių grupių narys:", "You are using <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jūs naudojate <strong>%1$s</strong> iš <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Jūsų telefono numeris", - "Your postal address" : "Jūsų adresas", - "It can take up to 24 hours before the account is displayed as verified." : "Gali užtrukti iki 24 valandų, kol paskyra bus rodoma kaip patikrinta. ", - "Link https://…" : "Nuoroda https://…", - "Twitter handle @…" : "Twitter rankenėlė @…", "Locale" : "Lokalė", - "Current password" : "Dabartinis slaptažodis", - "New password" : "Naujas slaptažodis", - "Change password" : "Pakeisti slaptažodį", "Use a second factor besides your password to increase security for your account." : "Be savo slaptažodžio naudokite ir antrąjį faktorių, kad padidintumėte savo paskyros saugumą.", "Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas", "Migration started …" : "Perkėlimas pradėtas …", @@ -412,6 +408,14 @@ "Recommended" : "Rekomenduojama", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php turi įvykdyti sistemos naudotojas „%s“.", "days" : "dienos", - "No display name set" : "Rodomas vardas nenurodytas" + "No display name set" : "Rodomas vardas nenurodytas", + "Address" : "Adresas", + "Your postal address" : "Jūsų adresas", + "It can take up to 24 hours before the account is displayed as verified." : "Gali užtrukti iki 24 valandų, kol paskyra bus rodoma kaip patikrinta. ", + "Link https://…" : "Nuoroda https://…", + "Twitter handle @…" : "Twitter rankenėlė @…", + "Unable to update biography" : "Nepavyko atnaujinti biografijos", + "Unable to update full name" : "Nepavyko atnaujinti viso vardo", + "No full name set" : "Nenustatyta jokio viso vardo" },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js index 1522f116361..28bf82419ad 100644 --- a/apps/settings/l10n/lv.js +++ b/apps/settings/l10n/lv.js @@ -88,10 +88,15 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Šis ir pēdējais brīdinājums: vai tiešām vēlaties iespējot šifrēšanu?", "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts šifrēšanas moduļis, lūdzu, aktivizējiet šifrēšanas moduli lietotņu izvēlnē.", "Select default encryption module:" : "Atlasiet noklusēto šifrēšanas moduli:", + "Current password" : "Pašreizējā parole", + "New password" : "Jauna parole", + "Change password" : "Mainīt paroli", "Your email address" : "Jūsu e-pasta adrese", "No email address set" : "Nav norādīts e-pasts", "Language" : "Valoda", "Help translate" : "Palīdzi tulkot", + "Your phone number" : "Jūsu tālruņa numurs", + "Your website" : "Jūsu mājaslapa", "Add" : "Pievienot", "Cancel" : "Atcelt", "Display name" : "Ekrāna vārds", @@ -110,7 +115,7 @@ OC.L10N.register( "Not saved" : "Nav saglabāts", "Sending…" : "Sūta …", "Email sent" : "Vēstule nosūtīta", - "Address" : "Adrese", + "Location" : "Vieta", "Avatar" : "Profila attēls", "About" : "Par", "Full name" : "Pilns vārds", @@ -158,11 +163,6 @@ OC.L10N.register( "Remove image" : "Novākt attēlu", "png or jpg, max. 20 MB" : "png vai jpg, max. 20 MB", "Choose as profile picture" : "Izvēlēties kā profila attēlu", - "Your phone number" : "Jūsu tālruņa numurs", - "Your postal address" : "Jūsu pasta adrese", - "Current password" : "Pašreizējā parole", - "New password" : "Jauna parole", - "Change password" : "Mainīt paroli", "Migration in progress. Please wait until the migration is finished" : "Notiek migrācija. Lūdzu, pagaidiet, līdz migrēšana ir pabeigta", "Migration started …" : "Uzsākta migrācija...", "Couldn't remove app." : "Nebija iespējams noņemt lietotni.", @@ -176,6 +176,8 @@ OC.L10N.register( "Start migration" : "Sākt migrāciju", "Recommended" : "Rekomendēts", "days" : "dienas", - "No display name set" : "Nav norādīts ekrāna vārds" + "No display name set" : "Nav norādīts ekrāna vārds", + "Address" : "Adrese", + "Your postal address" : "Jūsu pasta adrese" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json index dccff9e708d..c652c5008ee 100644 --- a/apps/settings/l10n/lv.json +++ b/apps/settings/l10n/lv.json @@ -86,10 +86,15 @@ "This is the final warning: Do you really want to enable encryption?" : "Šis ir pēdējais brīdinājums: vai tiešām vēlaties iespējot šifrēšanu?", "No encryption module loaded, please enable an encryption module in the app menu." : "Nav ielādēts šifrēšanas moduļis, lūdzu, aktivizējiet šifrēšanas moduli lietotņu izvēlnē.", "Select default encryption module:" : "Atlasiet noklusēto šifrēšanas moduli:", + "Current password" : "Pašreizējā parole", + "New password" : "Jauna parole", + "Change password" : "Mainīt paroli", "Your email address" : "Jūsu e-pasta adrese", "No email address set" : "Nav norādīts e-pasts", "Language" : "Valoda", "Help translate" : "Palīdzi tulkot", + "Your phone number" : "Jūsu tālruņa numurs", + "Your website" : "Jūsu mājaslapa", "Add" : "Pievienot", "Cancel" : "Atcelt", "Display name" : "Ekrāna vārds", @@ -108,7 +113,7 @@ "Not saved" : "Nav saglabāts", "Sending…" : "Sūta …", "Email sent" : "Vēstule nosūtīta", - "Address" : "Adrese", + "Location" : "Vieta", "Avatar" : "Profila attēls", "About" : "Par", "Full name" : "Pilns vārds", @@ -156,11 +161,6 @@ "Remove image" : "Novākt attēlu", "png or jpg, max. 20 MB" : "png vai jpg, max. 20 MB", "Choose as profile picture" : "Izvēlēties kā profila attēlu", - "Your phone number" : "Jūsu tālruņa numurs", - "Your postal address" : "Jūsu pasta adrese", - "Current password" : "Pašreizējā parole", - "New password" : "Jauna parole", - "Change password" : "Mainīt paroli", "Migration in progress. Please wait until the migration is finished" : "Notiek migrācija. Lūdzu, pagaidiet, līdz migrēšana ir pabeigta", "Migration started …" : "Uzsākta migrācija...", "Couldn't remove app." : "Nebija iespējams noņemt lietotni.", @@ -174,6 +174,8 @@ "Start migration" : "Sākt migrāciju", "Recommended" : "Rekomendēts", "days" : "dienas", - "No display name set" : "Nav norādīts ekrāna vārds" + "No display name set" : "Nav norādīts ekrāna vārds", + "Address" : "Adrese", + "Your postal address" : "Jūsu pasta adrese" },"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/settings/l10n/mk.js b/apps/settings/l10n/mk.js index 3bc3ac4f35f..bad855bf3a0 100644 --- a/apps/settings/l10n/mk.js +++ b/apps/settings/l10n/mk.js @@ -43,6 +43,7 @@ OC.L10N.register( "You changed your email address" : "Ја променивте вашата адреса на е-пошта", "Your email address was changed by an administrator" : "Вашата адреса на е-пошта е променета од страна на администраторот", "You created app password \"{token}\"" : "Креиравте лозинка за апликација \"{token}\"", + "An administrator created app password \"{token}\"" : "Администраторот креираше лозинка за апликација \"{token}\"", "You deleted app password \"{token}\"" : "Избришавте лозинка за апликација \"{token}\"", "You renamed app password \"{token}\" to \"{newToken}\"" : "Ја променивте лозинката за апликација \"{token}\" во \"{newToken}\"", "You granted filesystem access to app password \"{token}\"" : "Издадовте дозвола за пристап со лозинка на апликација до вашите датотеки \"{token}\"", @@ -53,21 +54,31 @@ OC.L10N.register( "Remote wipe was started on %1$s" : "Далечинското бришење е започна на %1$s", "Remote wipe has finished on %1$s" : "Далечинското бришење заврши на %1$s", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашата <strong>лозинка</strong> или <strong>е-пошта</strong> е променета", + "Could not remove app." : "Не може да ја се избрише апликацијата.", + "Could not update app." : "Не може да ја се ажурира апликацијата.", "Wrong password" : "Погрешна лозинка", + "Unable to change personal password" : "Неможе да се промени сопствената лозинката", "Saved" : "Зачувано", "No user supplied" : "Нема корисничко име", + "Unable to change password. Password too long." : "Неможе да се промени лозинката. Лозинката е премногу долга.", "Authentication error" : "Грешка во автентикација", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Ве молам дадете лозинка за поврат на администраторот; во спротивно, сите кориснички податоци ќе бидат изгубени.", "Wrong admin recovery password. Please check the password and try again." : "Погрешна лозинка за поврат на администраторот. Ве молам проверете ја лозинката и пробајте повторно.", + "Backend does not support password change, but the user's encryption key was updated." : "Позадината не подржува промена на лозинката, но корисничкиот клуч за енкрипција е ажуриран.", "installing and updating apps via the App Store or Federated Cloud Sharing" : "инсталирање и ажурирање на апликации преку продавницата за апликации или Федерално споделување", "Federated Cloud Sharing" : "Федеретивно споделување", "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL користи застарена %1$s верзија (%2$s). Ве молиме ажурирајте го вашиот оперативен систем или можностите како %3$s нема да работат безбедно.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Неможе да се одреди TLS верзијата на cURL или не е ажурирана и затоа настанува грешка при HTTPS барањето до https://nextcloud.com. Проверете ги записите во nextcloud за повеќе детали.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "PHP модулот OPcache не е вчитан. За да имате подобри перформанси е препорачливо да го вчитате во вашата PHP инсталација.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache модулот е оневозможен. За подобри перформанси препорачливо е да го овозможите <code>opcache.enable=1</code> во вашата PHP конфигурација.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache е конфигуриран за да ги брише коментарите во кодовите. Со овозможен OPcache, <code>opcache.save_comments=1</code> мора да се постави за да функционира Nextcloud.", "Invalid SMTP password." : "Грешна SMTP лозинка.", "Email setting test" : "Тест за параметри на е-пошта", "Well done, %s!" : "Добро сторено, %s!", "If you received this email, the email configuration seems to be correct." : "Ако ја примивте оваа порака, тоа значи дека конфигурацијата за е-пошта е правилно поставена.", "Email could not be sent. Check your mail server log" : "Порака преку Е-пошта неможе да се испрати. Проверете го записот во е-пошта серверот", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите параметри. (Error: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки. Одете во %s за тоа.", "Invalid user" : "Неправилен корисник", "Invalid mail address" : "Неправилна електронска адреса/пошта", "Settings saved" : "Параматрите се зачувани", @@ -123,8 +134,14 @@ OC.L10N.register( "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Позадинското извржување на работите се на чекање бидејќи се проверуваат некој SSL сертификати што се увезени од корисник. Вратете се подоцна.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Постојат некој увезени SSL сертификати, во наредната верзија на Nextcloud 21 нема да се користи. Истите можат да се увезат преку командната линија со внесување на командата \"occ security:certificates:import\". Нивните патеки во директориумот со податоци се прикажани подолу. ", "The old server-side-encryption format is enabled. We recommend disabling this." : "Овозможен е стар формат за криптирање од страна на серверот. Препорачуваме да го оневозможите ова.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Се користи MariaDB верзија\"%s\". Nextcloud 21 и поголемите верзии, повеќе нема да ја поддржува оваа верзија и потебно е да ја ажурирате на верзија 10.2 или понова.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Се користи MySQL верзија\"%s\". Nextcloud 21 и поголемите верзии, повеќе нема да ја поддржува оваа верзија и потебно е да ја ажурирате на верзија 8.0 или MariaDB 10.2 или понова.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Се користи PostgreSQL верзија\"%s\". Nextcloud 21 и поголемите верзии, повеќе нема да ја поддржува оваа верзија и потебно е да ја ажурирате на верзија 9.6 или понова.", + "Profile information" : "Информации за профилот", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Слика на профил, име и презиме, е-пошта, телефонски број, адреса, њеб страна, Twitter, организација, улога, наслов, биографиј и дали вашиот профил е овозможен", "Nextcloud settings" : "Nextcloud параметри", "Administration privileges" : "Административни привилегии", + "Here you can decide which group can access certain sections of the administration settings." : "Овде можете да одлучите која група може да пристапи до одредени делови од параметрите за администрација.", "None" : "Ништо", "Unable to modify setting" : "Неможе да се ажурираат параметрите", "Two-Factor Authentication" : "Двофакторна автентикација", @@ -158,17 +175,20 @@ OC.L10N.register( "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Истакнати апликации се развиени од и во рамките на заедницата. Тие нудат централизирана функционалност и се спремни за користење.", "Featured" : "Истакнати", "Update to {update}" : "Надгради на {update}", + "All apps are up-to-date." : "Сите апликации се ажурирани.", "Results from other categories" : "Резултати од други категории", "No apps found for your version" : "За вашата верзија не се пронајдени апликации", "Disable all" : "Оневозможи ги сите", "Enable all" : "Овозможи ги сите", "_%n app has an update available_::_%n apps have an update available_" : ["За %n апликација има достапно ажурирање","За %n апликации има достапно ажурирање"], + "_Update_::_Update all_" : ["Ажурирај","Ажурирај ги сите"], "Marked for remote wipe" : "Означи за далечинско бришење", "Device settings" : "Параметри за уреди", "Allow filesystem access" : "Дозвола за пристап до податоци", "Rename" : "Преименувај", "Revoke" : "Одземи", "Wipe device" : "Избриши уред", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "Одземањето на овој токен може да спречи бришење на вашиот уред ако сè уште не е избришано.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -205,12 +225,27 @@ OC.L10N.register( "Copied!" : "Копирано!", "Copy" : "Копирај", "Could not copy app password. Please copy it manually." : "Неможе да се копира лозинката за апликација. Ве молиме копирајте ја рачно.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "За серверот да работи правилно, важно е да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.", + "Last job execution ran {time}. Something seems wrong." : "Последно извршување на задачите: {time}. Нешто не е во ред.", + "Last job ran {relativeTime}." : "Последната процедура се извршуваше {relativeTime}.", + "Background job did not run yet!" : "Сеуште нема извршено ниедна задача!", + "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "Извржува по една задача со секоја вчитака страница. Се користи за инстанца со еден корисник.", + "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php треба да се регистрира на webcron сервис за да ја повикува процедурата секој 5 минути преку HTTP. Се користи за помали истанци (1-5 корисника во зависност на искористувањето).", + "Cron (Recommended)" : "Cron (Препорачано)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "За да го извршите ова, треба PHP POSIX додаток. Погледни во {linkstart}PHP документацијата{linkend} за повеќе детали.", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Го користи системскиот Cron сервис и го повикува cron.php секој 5 минути. Препорачано за сите истанци.", + "The cron.php needs to be executed by the system user \"{user}\"." : "cron.php е потребно да биде извршен од системски корисник \"{user}\".", + "Unable to update background job mode" : "Не може да се ажурира режимот на работа во позадина", "Profile" : "Профил", + "Enable or disable profile by default for new users." : "Стандардно овозможи или оневозможи профил за нови корисници.", "Enable" : "Овозможи", + "Unable to update profile default setting" : "Неможе да се ажурираат стандардните параметри за профилот", "Server-side encryption" : "Енкрипција на страна на серверот", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Енкрипцијата на страна на серверот овозможува да ги криптирате датотеките што се поставени на овој сервер. Ова доаѓа со ограничувања како намалување на перформансите, па овозможете го ова само доколку е потребно.", "Enable server-side encryption" : "Овозможи енкрипција на страна на серверот", + "Please read carefully before activating server-side encryption:" : "Ве молиме внимателно прочитајте пред да активирате енкрипција од страна на серверот:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Откако ќе биде овозможено енкрипција, сите датотеки што се поставени на серверот од таа точка натаму ќе бидат шифрирани на серверот. Ќе може да се оневозможи енкрипција подоцна ако активниот модул за шифрирање ја поддржува таа функција и сите предуслови (на пример, поставување на копче за враќање) се исполнети.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Самата енкрипција не гарантира безбедност на системот. Ве молиме погледнете ја документацијата за повеќе информации за тоа како функционира апликацијата за шифрирање и за поддржаните случаи на употреба.", "Be aware that encryption always increases the file size." : "Бидете свесни дека енкрипцијата секогаш ја зголемува големината на датотеката.", @@ -218,14 +253,17 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Ова е последно предупредување: Дали навистина сакате да овозможите енкрипција?", "No encryption module loaded, please enable an encryption module in the app menu." : "Нема вчитано модул за енкрипција, ве молиме овозможете модул за енкрипција во менито со апликации.", "Select default encryption module:" : "Изберете стандарден модул за шифрирање:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Треба да ги мигрирате клучевите за криптирање од стариот систем (ownCloud <= 8.0) за енкрипција во нови. Овозможете \"Стандарден додаток за енкрипција\" и стартувајте ја командата {command}", + "Unable to update server side encryption config" : "Неможе да се ажурираат параметрите за енкрипција од страна на серверот", + "Rename group" : "Преименувај група", "Remove group" : "Отстрани група", "You are about to remove the group {group}. The users will NOT be deleted." : "Ќе ја отстраните групата {group}. Корисниците во неа НЕМА да бидат избришани.", "Please confirm the group removal " : "Потврди отстранување на група", + "Current password" : "Моментална лозинка", + "New password" : "Нова лозинка", + "Change password" : "Промени лозинка", "Your biography" : "Ваша биографија", - "Unable to update biography" : "Неможе да се зажурира биографијата", "Your full name" : "Вашето целосно име", - "Unable to update full name" : "Не може да се ажурира целосно име", - "No full name set" : "Нема поставено целосно име", "Email options" : "Е-пошта параметри", "Primary email for password reset and notifications" : "Примарна Е-пошта за ресетирање на лозинка и известувања", "Remove primary email" : "Избриши примарна е-пошта", @@ -242,12 +280,13 @@ OC.L10N.register( "Unable to delete additional email address" : "Не може да се избрише дополнителната е-пошта адреса", "No email address set" : "Нема поставено адреса за е-пошта ", "Additional emails" : "Дополнителни е-пошти", + "Your headline" : "Вашиот наслов", "Language" : "Јазик", "Help translate" : "Помогни во преводот", "Unable to update language" : "Не може да се ажурира јазикот", "No language set" : "Не е поставен јазик", "Your organisation" : "Вашата организација", - "Unable to update organisation" : "Не може да се ажурира организацијата", + "Your phone number" : "Вашиот телефонски број", "Edit your Profile visibility" : "Уредете ја видливоста на вашиот профил", "Enable Profile" : "Овозможи профил", "Unable to update profile enabled state" : "Неможе да се ажурира достапноста на профилот", @@ -255,7 +294,7 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Неможе да се ажурира видливоста на {displayId}", "Your role" : "Ваша улога", - "Unable to update role" : "Неможе да се ажурира улогата", + "Add additional email" : "Додади дополнителна е-пошта", "Add" : "Додади", "You do not have permissions to see the details of this user" : "Немате дозвола за да ги гледате деталите на овој корисник", "Add new password" : "Додади нова лозинка", @@ -333,7 +372,7 @@ OC.L10N.register( "Not saved" : "Не е зачувано", "Sending…" : "Испраќа…", "Email sent" : "Е-порака пратена", - "Address" : "Адреса", + "Location" : "Локација", "Avatar" : "Аватар", "About" : "За", "Full name" : "Име и презиме", @@ -345,6 +384,8 @@ OC.L10N.register( "Twitter" : "Twitter", "Website" : "ВЕБ страна", "Profile visibility" : "Видливост на профилот", + "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Не е достапно бидејќи ова својство е потребно за основна функционалност, вклучувајќи споделување датотеки и покани од календар", + "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Не е достапно бидејќи не е дозволено објавување специфични податоци за корисникот на серверот за пребарување, контактирајте со вашиот системски администратор ако имате какви било прашања", "Show to everyone" : "Прикажи на сите", "Show to logged in users only" : "Прикажи само на најавени корисници", "Hide" : "Сокриј", @@ -356,6 +397,8 @@ OC.L10N.register( "An error occured during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продолжи.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Оваа апликација е овозможена но треба да биде надоградена. Ќе бидете пренасочени кон страната за надоградување за 5 секунди.", "Error: This app cannot be enabled because it makes the server unstable" : "Грешка: Оваа апликација неможе да се овозможи бидејќи ќе го направи серверот нестабилен", + "An error occurred during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продолжи.", + "User already exists." : "Корисникот веќе постои", "Administrator documentation" : "Документација за администратор", "Documentation" : "Документација", "Forum" : "Форум", @@ -378,6 +421,7 @@ OC.L10N.register( "SMTP Username" : "SMTP корисничко име", "SMTP Password" : "SMTP лозинка", "Save" : "Зачувај", + "Test and verify email settings" : "Тестирај и потврди ги параметрите за електронска пошта", "Send email" : "Испрати пошта", "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Важно е за безбедноста и перформансите на вашата истанца дека сè е правилно конфигурирано. Да ви помогнеме во тоа, правиме неколку автоматски проверки. Погледнете ја документација за повеќе информации.", "All checks passed." : "Сите проверки се поминати.", @@ -399,7 +443,9 @@ OC.L10N.register( "Allow public uploads" : "Дозволи јавен аплоуд", "Always ask for a password" : "Секогаш прашувај за лозинка", "Enforce password protection" : "Наметни заштита на лозинка", + "Exclude groups from password requirements:" : "Исклучи групи од барање за лозинка:", "Set default expiration date" : "Постави стандарден рок на траење", + "Exclude groups from creating link shares:" : "Исклучи групи од креирање линк за споделување:", "Allow resharing" : "Дозволи повторно споделување", "Allow sharing with groups" : "Дозволи споделување со групи", "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи", @@ -408,6 +454,8 @@ OC.L10N.register( "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување", "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ", "Allow username autocompletion to users based on phone number integration" : "Овозможи автоматско комплетирање на корисниците од интеграцијата со телефонски број", + "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако се овозможени автоматско пополнување \"иста група\" и \"интеграција на телефонски број\", доволно е да се совпадне или да се прикаже на корисникот.", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "озволете автоматско пополнување кога го внесувате целосното име или адресата на е-пошта (игнорирање што недостасува совпаѓање со именикот и сте во иста група)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Покажете го текстот за одрекување од одговорност на страницата за поставување јавен линк. (Се прикажува само кога листата со датотеки е скриена)", "This text will be shown on the public link upload page when the file list is hidden." : "Овој текст ќе биде прикажан на страната со јавниот линк кога листата на датотеки е сокриена.", "Default share permissions" : "Стандардни дозволи за споделување", @@ -419,24 +467,18 @@ OC.L10N.register( "Check out our blog" : "Проверете го нашиот блог", "Subscribe to our newsletter" : "Претплатете се на нашиот билтен", "Profile picture" : "Фотографија за профил", + "Change privacy level of profile picture" : "Променете го нивото на приватност за сликата на профилот", "Upload new" : "Прикачи нова", "Select from Files" : "Избри од датотеките", "Remove image" : "Отстрани ја фотографијата", "png or jpg, max. 20 MB" : "png или jpg, максимум 20 MB", "Picture provided by original account" : "Слика обезбедена од оригинална сметка", + "Please note that it can take up to 24 hours for the avatar to get updated everywhere." : "Имајте предвид дека може да потрае до 24 часа за да се ажурира аватарот насекаде.", "Choose as profile picture" : "Избери фотографија за профилот", "You are a member of the following groups:" : "Член сте на следниве групи", "You are using <strong>%s</strong>" : "Користите <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Вашиот телефонски број", - "Your postal address" : "Вашата поштенска адреса", - "It can take up to 24 hours before the account is displayed as verified." : "Може да треба до 24 часа додека сметката почне да се прикажува како верификувана.", - "Link https://…" : "Линк https://....", - "Twitter handle @…" : "Twitter @…", "Locale" : "Локација", - "Current password" : "Моментална лозинка", - "New password" : "Нова лозинка", - "Change password" : "Промени лозинка", "Use a second factor besides your password to increase security for your account." : "Користете втор фактор и покрај вашата лозинка за да ја зголемите безбедноста на вашата сметка.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Доколку користите друга апликација за поврзување на Nextcloud, осигурајте се дека имате креирано лозинка за секоја апликација пред да овозможите втор фактор.", "Migration in progress. Please wait until the migration is finished" : "Миграцијата е во тек. Ве молиме почекајте додека миграцијата заврши", @@ -448,6 +490,7 @@ OC.L10N.register( "You need to set your user email before being able to send test emails." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки.", "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Одземањето на овој токен може да спречи бришење на вашиот уред ако сè уште не е избришано.", "Set as primary mail" : "Постави како примарна е-пошта", + "Change privacy level of email" : "Променете го нивото на приватност за е-пошта адресата", "All languages" : "Сите јазици", "Everyone" : "Сите", "Test email settings" : "Провери ги нагодувањата за електронска пошта", @@ -461,9 +504,27 @@ OC.L10N.register( "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Некој позадински работи не се извршени од %s. Размислете за промена во системски Cron сервис.", "Last job ran %s." : "Последно извршување на задачите: %s.", "Background job didn’t run yet!" : "Сеуште нема извршено ниедна задача!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "За серверот да работи правилно, важно е да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.", "Pick background job setting" : "Избери го начинот на извршување на задачите во позадина", + "Recommended" : "Препорачано", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".", "days" : "денови", - "No display name set" : "Нема поставено име за прикажување" + "Change privacy level of full name" : "Променете го нивото на приватност за името и презимето", + "No display name set" : "Нема поставено име за прикажување", + "Change privacy level of phone number" : "Променете го нивото на приватност за телефонскиот број", + "Address" : "Адреса", + "Change privacy level of address" : "Променете го нивото на приватност за адресата", + "Your postal address" : "Вашата поштенска адреса", + "Change privacy level of website" : "Променете го нивото на приватност за вебстраната", + "It can take up to 24 hours before the account is displayed as verified." : "Може да треба до 24 часа додека сметката почне да се прикажува како верификувана.", + "Link https://…" : "Линк https://....", + "Change privacy level of Twitter profile" : "Променете го нивото на приватност за Twitter профилот", + "Twitter handle @…" : "Twitter @…", + "Unable to update biography" : "Неможе да се зажурира биографијата", + "Unable to update full name" : "Не може да се ажурира целосно име", + "No full name set" : "Нема поставено целосно име", + "Unable to update headline" : "Неможе да се ажурира насловот", + "Unable to update organisation" : "Не може да се ажурира организацијата", + "Unable to update role" : "Неможе да се ажурира улогата" }, "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json index 6e9c622aa98..6e0c2824460 100644 --- a/apps/settings/l10n/mk.json +++ b/apps/settings/l10n/mk.json @@ -41,6 +41,7 @@ "You changed your email address" : "Ја променивте вашата адреса на е-пошта", "Your email address was changed by an administrator" : "Вашата адреса на е-пошта е променета од страна на администраторот", "You created app password \"{token}\"" : "Креиравте лозинка за апликација \"{token}\"", + "An administrator created app password \"{token}\"" : "Администраторот креираше лозинка за апликација \"{token}\"", "You deleted app password \"{token}\"" : "Избришавте лозинка за апликација \"{token}\"", "You renamed app password \"{token}\" to \"{newToken}\"" : "Ја променивте лозинката за апликација \"{token}\" во \"{newToken}\"", "You granted filesystem access to app password \"{token}\"" : "Издадовте дозвола за пристап со лозинка на апликација до вашите датотеки \"{token}\"", @@ -51,21 +52,31 @@ "Remote wipe was started on %1$s" : "Далечинското бришење е започна на %1$s", "Remote wipe has finished on %1$s" : "Далечинското бришење заврши на %1$s", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашата <strong>лозинка</strong> или <strong>е-пошта</strong> е променета", + "Could not remove app." : "Не може да ја се избрише апликацијата.", + "Could not update app." : "Не може да ја се ажурира апликацијата.", "Wrong password" : "Погрешна лозинка", + "Unable to change personal password" : "Неможе да се промени сопствената лозинката", "Saved" : "Зачувано", "No user supplied" : "Нема корисничко име", + "Unable to change password. Password too long." : "Неможе да се промени лозинката. Лозинката е премногу долга.", "Authentication error" : "Грешка во автентикација", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Ве молам дадете лозинка за поврат на администраторот; во спротивно, сите кориснички податоци ќе бидат изгубени.", "Wrong admin recovery password. Please check the password and try again." : "Погрешна лозинка за поврат на администраторот. Ве молам проверете ја лозинката и пробајте повторно.", + "Backend does not support password change, but the user's encryption key was updated." : "Позадината не подржува промена на лозинката, но корисничкиот клуч за енкрипција е ажуриран.", "installing and updating apps via the App Store or Federated Cloud Sharing" : "инсталирање и ажурирање на апликации преку продавницата за апликации или Федерално споделување", "Federated Cloud Sharing" : "Федеретивно споделување", "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL користи застарена %1$s верзија (%2$s). Ве молиме ажурирајте го вашиот оперативен систем или можностите како %3$s нема да работат безбедно.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Неможе да се одреди TLS верзијата на cURL или не е ажурирана и затоа настанува грешка при HTTPS барањето до https://nextcloud.com. Проверете ги записите во nextcloud за повеќе детали.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "PHP модулот OPcache не е вчитан. За да имате подобри перформанси е препорачливо да го вчитате во вашата PHP инсталација.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache модулот е оневозможен. За подобри перформанси препорачливо е да го овозможите <code>opcache.enable=1</code> во вашата PHP конфигурација.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache е конфигуриран за да ги брише коментарите во кодовите. Со овозможен OPcache, <code>opcache.save_comments=1</code> мора да се постави за да функционира Nextcloud.", "Invalid SMTP password." : "Грешна SMTP лозинка.", "Email setting test" : "Тест за параметри на е-пошта", "Well done, %s!" : "Добро сторено, %s!", "If you received this email, the email configuration seems to be correct." : "Ако ја примивте оваа порака, тоа значи дека конфигурацијата за е-пошта е правилно поставена.", "Email could not be sent. Check your mail server log" : "Порака преку Е-пошта неможе да се испрати. Проверете го записот во е-пошта серверот", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Се случи грешка при праќање на порака. Ве молам проверете ги вашите параметри. (Error: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки. Одете во %s за тоа.", "Invalid user" : "Неправилен корисник", "Invalid mail address" : "Неправилна електронска адреса/пошта", "Settings saved" : "Параматрите се зачувани", @@ -121,8 +132,14 @@ "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Позадинското извржување на работите се на чекање бидејќи се проверуваат некој SSL сертификати што се увезени од корисник. Вратете се подоцна.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Постојат некој увезени SSL сертификати, во наредната верзија на Nextcloud 21 нема да се користи. Истите можат да се увезат преку командната линија со внесување на командата \"occ security:certificates:import\". Нивните патеки во директориумот со податоци се прикажани подолу. ", "The old server-side-encryption format is enabled. We recommend disabling this." : "Овозможен е стар формат за криптирање од страна на серверот. Препорачуваме да го оневозможите ова.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Се користи MariaDB верзија\"%s\". Nextcloud 21 и поголемите верзии, повеќе нема да ја поддржува оваа верзија и потебно е да ја ажурирате на верзија 10.2 или понова.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Се користи MySQL верзија\"%s\". Nextcloud 21 и поголемите верзии, повеќе нема да ја поддржува оваа верзија и потебно е да ја ажурирате на верзија 8.0 или MariaDB 10.2 или понова.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Се користи PostgreSQL верзија\"%s\". Nextcloud 21 и поголемите верзии, повеќе нема да ја поддржува оваа верзија и потебно е да ја ажурирате на верзија 9.6 или понова.", + "Profile information" : "Информации за профилот", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Слика на профил, име и презиме, е-пошта, телефонски број, адреса, њеб страна, Twitter, организација, улога, наслов, биографиј и дали вашиот профил е овозможен", "Nextcloud settings" : "Nextcloud параметри", "Administration privileges" : "Административни привилегии", + "Here you can decide which group can access certain sections of the administration settings." : "Овде можете да одлучите која група може да пристапи до одредени делови од параметрите за администрација.", "None" : "Ништо", "Unable to modify setting" : "Неможе да се ажурираат параметрите", "Two-Factor Authentication" : "Двофакторна автентикација", @@ -156,17 +173,20 @@ "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Истакнати апликации се развиени од и во рамките на заедницата. Тие нудат централизирана функционалност и се спремни за користење.", "Featured" : "Истакнати", "Update to {update}" : "Надгради на {update}", + "All apps are up-to-date." : "Сите апликации се ажурирани.", "Results from other categories" : "Резултати од други категории", "No apps found for your version" : "За вашата верзија не се пронајдени апликации", "Disable all" : "Оневозможи ги сите", "Enable all" : "Овозможи ги сите", "_%n app has an update available_::_%n apps have an update available_" : ["За %n апликација има достапно ажурирање","За %n апликации има достапно ажурирање"], + "_Update_::_Update all_" : ["Ажурирај","Ажурирај ги сите"], "Marked for remote wipe" : "Означи за далечинско бришење", "Device settings" : "Параметри за уреди", "Allow filesystem access" : "Дозвола за пристап до податоци", "Rename" : "Преименувај", "Revoke" : "Одземи", "Wipe device" : "Избриши уред", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "Одземањето на овој токен може да спречи бришење на вашиот уред ако сè уште не е избришано.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -203,12 +223,27 @@ "Copied!" : "Копирано!", "Copy" : "Копирај", "Could not copy app password. Please copy it manually." : "Неможе да се копира лозинката за апликација. Ве молиме копирајте ја рачно.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "За серверот да работи правилно, важно е да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.", + "Last job execution ran {time}. Something seems wrong." : "Последно извршување на задачите: {time}. Нешто не е во ред.", + "Last job ran {relativeTime}." : "Последната процедура се извршуваше {relativeTime}.", + "Background job did not run yet!" : "Сеуште нема извршено ниедна задача!", + "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "Извржува по една задача со секоја вчитака страница. Се користи за инстанца со еден корисник.", + "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php треба да се регистрира на webcron сервис за да ја повикува процедурата секој 5 минути преку HTTP. Се користи за помали истанци (1-5 корисника во зависност на искористувањето).", + "Cron (Recommended)" : "Cron (Препорачано)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "За да го извршите ова, треба PHP POSIX додаток. Погледни во {linkstart}PHP документацијата{linkend} за повеќе детали.", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Го користи системскиот Cron сервис и го повикува cron.php секој 5 минути. Препорачано за сите истанци.", + "The cron.php needs to be executed by the system user \"{user}\"." : "cron.php е потребно да биде извршен од системски корисник \"{user}\".", + "Unable to update background job mode" : "Не може да се ажурира режимот на работа во позадина", "Profile" : "Профил", + "Enable or disable profile by default for new users." : "Стандардно овозможи или оневозможи профил за нови корисници.", "Enable" : "Овозможи", + "Unable to update profile default setting" : "Неможе да се ажурираат стандардните параметри за профилот", "Server-side encryption" : "Енкрипција на страна на серверот", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Енкрипцијата на страна на серверот овозможува да ги криптирате датотеките што се поставени на овој сервер. Ова доаѓа со ограничувања како намалување на перформансите, па овозможете го ова само доколку е потребно.", "Enable server-side encryption" : "Овозможи енкрипција на страна на серверот", + "Please read carefully before activating server-side encryption:" : "Ве молиме внимателно прочитајте пред да активирате енкрипција од страна на серверот:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Откако ќе биде овозможено енкрипција, сите датотеки што се поставени на серверот од таа точка натаму ќе бидат шифрирани на серверот. Ќе може да се оневозможи енкрипција подоцна ако активниот модул за шифрирање ја поддржува таа функција и сите предуслови (на пример, поставување на копче за враќање) се исполнети.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Самата енкрипција не гарантира безбедност на системот. Ве молиме погледнете ја документацијата за повеќе информации за тоа како функционира апликацијата за шифрирање и за поддржаните случаи на употреба.", "Be aware that encryption always increases the file size." : "Бидете свесни дека енкрипцијата секогаш ја зголемува големината на датотеката.", @@ -216,14 +251,17 @@ "This is the final warning: Do you really want to enable encryption?" : "Ова е последно предупредување: Дали навистина сакате да овозможите енкрипција?", "No encryption module loaded, please enable an encryption module in the app menu." : "Нема вчитано модул за енкрипција, ве молиме овозможете модул за енкрипција во менито со апликации.", "Select default encryption module:" : "Изберете стандарден модул за шифрирање:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Треба да ги мигрирате клучевите за криптирање од стариот систем (ownCloud <= 8.0) за енкрипција во нови. Овозможете \"Стандарден додаток за енкрипција\" и стартувајте ја командата {command}", + "Unable to update server side encryption config" : "Неможе да се ажурираат параметрите за енкрипција од страна на серверот", + "Rename group" : "Преименувај група", "Remove group" : "Отстрани група", "You are about to remove the group {group}. The users will NOT be deleted." : "Ќе ја отстраните групата {group}. Корисниците во неа НЕМА да бидат избришани.", "Please confirm the group removal " : "Потврди отстранување на група", + "Current password" : "Моментална лозинка", + "New password" : "Нова лозинка", + "Change password" : "Промени лозинка", "Your biography" : "Ваша биографија", - "Unable to update biography" : "Неможе да се зажурира биографијата", "Your full name" : "Вашето целосно име", - "Unable to update full name" : "Не може да се ажурира целосно име", - "No full name set" : "Нема поставено целосно име", "Email options" : "Е-пошта параметри", "Primary email for password reset and notifications" : "Примарна Е-пошта за ресетирање на лозинка и известувања", "Remove primary email" : "Избриши примарна е-пошта", @@ -240,12 +278,13 @@ "Unable to delete additional email address" : "Не може да се избрише дополнителната е-пошта адреса", "No email address set" : "Нема поставено адреса за е-пошта ", "Additional emails" : "Дополнителни е-пошти", + "Your headline" : "Вашиот наслов", "Language" : "Јазик", "Help translate" : "Помогни во преводот", "Unable to update language" : "Не може да се ажурира јазикот", "No language set" : "Не е поставен јазик", "Your organisation" : "Вашата организација", - "Unable to update organisation" : "Не може да се ажурира организацијата", + "Your phone number" : "Вашиот телефонски број", "Edit your Profile visibility" : "Уредете ја видливоста на вашиот профил", "Enable Profile" : "Овозможи профил", "Unable to update profile enabled state" : "Неможе да се ажурира достапноста на профилот", @@ -253,7 +292,7 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Неможе да се ажурира видливоста на {displayId}", "Your role" : "Ваша улога", - "Unable to update role" : "Неможе да се ажурира улогата", + "Add additional email" : "Додади дополнителна е-пошта", "Add" : "Додади", "You do not have permissions to see the details of this user" : "Немате дозвола за да ги гледате деталите на овој корисник", "Add new password" : "Додади нова лозинка", @@ -331,7 +370,7 @@ "Not saved" : "Не е зачувано", "Sending…" : "Испраќа…", "Email sent" : "Е-порака пратена", - "Address" : "Адреса", + "Location" : "Локација", "Avatar" : "Аватар", "About" : "За", "Full name" : "Име и презиме", @@ -343,6 +382,8 @@ "Twitter" : "Twitter", "Website" : "ВЕБ страна", "Profile visibility" : "Видливост на профилот", + "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Не е достапно бидејќи ова својство е потребно за основна функционалност, вклучувајќи споделување датотеки и покани од календар", + "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Не е достапно бидејќи не е дозволено објавување специфични податоци за корисникот на серверот за пребарување, контактирајте со вашиот системски администратор ако имате какви било прашања", "Show to everyone" : "Прикажи на сите", "Show to logged in users only" : "Прикажи само на најавени корисници", "Hide" : "Сокриј", @@ -354,6 +395,8 @@ "An error occured during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продолжи.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Оваа апликација е овозможена но треба да биде надоградена. Ќе бидете пренасочени кон страната за надоградување за 5 секунди.", "Error: This app cannot be enabled because it makes the server unstable" : "Грешка: Оваа апликација неможе да се овозможи бидејќи ќе го направи серверот нестабилен", + "An error occurred during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продолжи.", + "User already exists." : "Корисникот веќе постои", "Administrator documentation" : "Документација за администратор", "Documentation" : "Документација", "Forum" : "Форум", @@ -376,6 +419,7 @@ "SMTP Username" : "SMTP корисничко име", "SMTP Password" : "SMTP лозинка", "Save" : "Зачувај", + "Test and verify email settings" : "Тестирај и потврди ги параметрите за електронска пошта", "Send email" : "Испрати пошта", "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "Важно е за безбедноста и перформансите на вашата истанца дека сè е правилно конфигурирано. Да ви помогнеме во тоа, правиме неколку автоматски проверки. Погледнете ја документација за повеќе информации.", "All checks passed." : "Сите проверки се поминати.", @@ -397,7 +441,9 @@ "Allow public uploads" : "Дозволи јавен аплоуд", "Always ask for a password" : "Секогаш прашувај за лозинка", "Enforce password protection" : "Наметни заштита на лозинка", + "Exclude groups from password requirements:" : "Исклучи групи од барање за лозинка:", "Set default expiration date" : "Постави стандарден рок на траење", + "Exclude groups from creating link shares:" : "Исклучи групи од креирање линк за споделување:", "Allow resharing" : "Дозволи повторно споделување", "Allow sharing with groups" : "Дозволи споделување со групи", "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи", @@ -406,6 +452,8 @@ "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување", "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ", "Allow username autocompletion to users based on phone number integration" : "Овозможи автоматско комплетирање на корисниците од интеграцијата со телефонски број", + "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако се овозможени автоматско пополнување \"иста група\" и \"интеграција на телефонски број\", доволно е да се совпадне или да се прикаже на корисникот.", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "озволете автоматско пополнување кога го внесувате целосното име или адресата на е-пошта (игнорирање што недостасува совпаѓање со именикот и сте во иста група)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Покажете го текстот за одрекување од одговорност на страницата за поставување јавен линк. (Се прикажува само кога листата со датотеки е скриена)", "This text will be shown on the public link upload page when the file list is hidden." : "Овој текст ќе биде прикажан на страната со јавниот линк кога листата на датотеки е сокриена.", "Default share permissions" : "Стандардни дозволи за споделување", @@ -417,24 +465,18 @@ "Check out our blog" : "Проверете го нашиот блог", "Subscribe to our newsletter" : "Претплатете се на нашиот билтен", "Profile picture" : "Фотографија за профил", + "Change privacy level of profile picture" : "Променете го нивото на приватност за сликата на профилот", "Upload new" : "Прикачи нова", "Select from Files" : "Избри од датотеките", "Remove image" : "Отстрани ја фотографијата", "png or jpg, max. 20 MB" : "png или jpg, максимум 20 MB", "Picture provided by original account" : "Слика обезбедена од оригинална сметка", + "Please note that it can take up to 24 hours for the avatar to get updated everywhere." : "Имајте предвид дека може да потрае до 24 часа за да се ажурира аватарот насекаде.", "Choose as profile picture" : "Избери фотографија за профилот", "You are a member of the following groups:" : "Член сте на следниве групи", "You are using <strong>%s</strong>" : "Користите <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Вашиот телефонски број", - "Your postal address" : "Вашата поштенска адреса", - "It can take up to 24 hours before the account is displayed as verified." : "Може да треба до 24 часа додека сметката почне да се прикажува како верификувана.", - "Link https://…" : "Линк https://....", - "Twitter handle @…" : "Twitter @…", "Locale" : "Локација", - "Current password" : "Моментална лозинка", - "New password" : "Нова лозинка", - "Change password" : "Промени лозинка", "Use a second factor besides your password to increase security for your account." : "Користете втор фактор и покрај вашата лозинка за да ја зголемите безбедноста на вашата сметка.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Доколку користите друга апликација за поврзување на Nextcloud, осигурајте се дека имате креирано лозинка за секоја апликација пред да овозможите втор фактор.", "Migration in progress. Please wait until the migration is finished" : "Миграцијата е во тек. Ве молиме почекајте додека миграцијата заврши", @@ -446,6 +488,7 @@ "You need to set your user email before being able to send test emails." : "Треба да ја поставите вашата е-пошта адреса пред да можете да испратите тест пораки.", "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Одземањето на овој токен може да спречи бришење на вашиот уред ако сè уште не е избришано.", "Set as primary mail" : "Постави како примарна е-пошта", + "Change privacy level of email" : "Променете го нивото на приватност за е-пошта адресата", "All languages" : "Сите јазици", "Everyone" : "Сите", "Test email settings" : "Провери ги нагодувањата за електронска пошта", @@ -459,9 +502,27 @@ "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Некој позадински работи не се извршени од %s. Размислете за промена во системски Cron сервис.", "Last job ran %s." : "Последно извршување на задачите: %s.", "Background job didn’t run yet!" : "Сеуште нема извршено ниедна задача!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "За серверот да работи правилно, важно е да ги конфигурирате задачите кој се извршуваат во позадина. За големи истанци 'Cron' е препорачаната поставка. Погледнете ја документацијата за повеќе информации.", "Pick background job setting" : "Избери го начинот на извршување на задачите во позадина", + "Recommended" : "Препорачано", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".", "days" : "денови", - "No display name set" : "Нема поставено име за прикажување" + "Change privacy level of full name" : "Променете го нивото на приватност за името и презимето", + "No display name set" : "Нема поставено име за прикажување", + "Change privacy level of phone number" : "Променете го нивото на приватност за телефонскиот број", + "Address" : "Адреса", + "Change privacy level of address" : "Променете го нивото на приватност за адресата", + "Your postal address" : "Вашата поштенска адреса", + "Change privacy level of website" : "Променете го нивото на приватност за вебстраната", + "It can take up to 24 hours before the account is displayed as verified." : "Може да треба до 24 часа додека сметката почне да се прикажува како верификувана.", + "Link https://…" : "Линк https://....", + "Change privacy level of Twitter profile" : "Променете го нивото на приватност за Twitter профилот", + "Twitter handle @…" : "Twitter @…", + "Unable to update biography" : "Неможе да се зажурира биографијата", + "Unable to update full name" : "Не може да се ажурира целосно име", + "No full name set" : "Нема поставено целосно име", + "Unable to update headline" : "Неможе да се ажурира насловот", + "Unable to update organisation" : "Не може да се ажурира организацијата", + "Unable to update role" : "Неможе да се ажурира улогата" },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" }
\ No newline at end of file diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js index 54509ee9a47..7427557de6d 100644 --- a/apps/settings/l10n/nb.js +++ b/apps/settings/l10n/nb.js @@ -186,7 +186,7 @@ OC.L10N.register( "Could not copy app password. Please copy it manually." : "Kunne ikke kopiere passord. Venligst kopier manuelt.", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "For å kjøre denne trenger du PHP POSIX utvidelse. Se {linkstart}PHP-dokumentasjonen{linkend} for flere detaljer.", "Enable" : "Aktiver", - "Server-side encryption" : "Kryptering på serverdelen", + "Server-side encryption" : "Kryptering på serversiden", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Kryptering på serverdelen gjør det mulig å kryptere files som er lastet opp til denne serveren. Dette har begrensninger som ytelsesforverring, så bare skru på dette hvis det trengs.", "Enable server-side encryption" : "Aktiver kryptering på serverdelen", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Når kryptering er blitt aktivert, vil alle filer som lastes opp til serveren fra det tidspunktet av bli lagret kryptert på serveren. Det vil kun være mulig å deaktivere kryptering senere dersom den aktive krypteringsmodulen støtter det og alle forutsetninger (f.eks. å sette en gjenopprettingsnøkkel) er til stede.", @@ -199,11 +199,17 @@ OC.L10N.register( "Remove group" : "Fjern gruppe", "You are about to remove the group {group}. The users will NOT be deleted." : "Du skal til å fjerne gruppen {group}. Brukerne vil IKKE bli slettet.", "Please confirm the group removal " : "Vennligst bekreft fjerning av gruppe", + "Current password" : "Nåværende passord", + "New password" : "Nytt passord", + "Change password" : "Endre passord", "Your email address" : "Din e-postadresse", "No email address set" : "E-postadresse ikke satt", "Language" : "Språk", "Help translate" : "Bidra til oversettelsen", "No language set" : "Språk ikke satt", + "Your phone number" : "Ditt telefonnummer", + "Your Twitter handle" : "Din Twitter-konto", + "Your website" : "Din nettside", "Add" : "Legg til", "You do not have permissions to see the details of this user" : "Du har ikke tilgang til å se detaljer om denne brukeren", "Set user as admin for" : "Sett bruker som administrator for", @@ -259,11 +265,14 @@ OC.L10N.register( "Not saved" : "Ikke lagret", "Sending…" : "Sender…", "Email sent" : "E-post sendt", - "Address" : "Adresse", + "Location" : "Sted", "Avatar" : "Avatar", "About" : "Om", "Full name" : "Fullt navn", + "Headline" : "Overskrift", + "Organisation" : "Organisasion", "Phone number" : "Telefonnummer", + "Role" : "Rolle", "Twitter" : "Twitter", "Website" : "Nettsted", "Hide" : "Skjul", @@ -334,15 +343,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Du er medlem av følgende grupper:", "You are using <strong>%s</strong>" : "Du bruker <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du bruker <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Ditt telefonnummer", - "Your postal address" : "Din postadresse", - "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta opptil ett døgn før kontoen vises som bekreftet.", - "Link https://…" : "Lenke https://…", - "Twitter handle @…" : "Twitter-konto @ …", "Locale" : "Nasjonal innstilling", - "Current password" : "Nåværende passord", - "New password" : "Nytt passord", - "Change password" : "Endre passord", "Use a second factor besides your password to increase security for your account." : "Bruk en annen faktor i tillegg til passordet ditt for å øke sikkerheten for kontoen din.", "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.", "Migration started …" : "Migrering startet…", @@ -365,6 +366,11 @@ OC.L10N.register( "Recommended" : "Anbefalt", "The cron.php needs to be executed by the system user \"%s\"." : "Filen cron.php må kjøres systemet som følgende bruker \"%s\".", "days" : "dager", - "No display name set" : "Visningsnavn ikke satt" + "No display name set" : "Visningsnavn ikke satt", + "Address" : "Adresse", + "Your postal address" : "Din postadresse", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta opptil ett døgn før kontoen vises som bekreftet.", + "Link https://…" : "Lenke https://…", + "Twitter handle @…" : "Twitter-konto @ …" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json index 97346e22653..42f4cb65562 100644 --- a/apps/settings/l10n/nb.json +++ b/apps/settings/l10n/nb.json @@ -184,7 +184,7 @@ "Could not copy app password. Please copy it manually." : "Kunne ikke kopiere passord. Venligst kopier manuelt.", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "For å kjøre denne trenger du PHP POSIX utvidelse. Se {linkstart}PHP-dokumentasjonen{linkend} for flere detaljer.", "Enable" : "Aktiver", - "Server-side encryption" : "Kryptering på serverdelen", + "Server-side encryption" : "Kryptering på serversiden", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Kryptering på serverdelen gjør det mulig å kryptere files som er lastet opp til denne serveren. Dette har begrensninger som ytelsesforverring, så bare skru på dette hvis det trengs.", "Enable server-side encryption" : "Aktiver kryptering på serverdelen", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Når kryptering er blitt aktivert, vil alle filer som lastes opp til serveren fra det tidspunktet av bli lagret kryptert på serveren. Det vil kun være mulig å deaktivere kryptering senere dersom den aktive krypteringsmodulen støtter det og alle forutsetninger (f.eks. å sette en gjenopprettingsnøkkel) er til stede.", @@ -197,11 +197,17 @@ "Remove group" : "Fjern gruppe", "You are about to remove the group {group}. The users will NOT be deleted." : "Du skal til å fjerne gruppen {group}. Brukerne vil IKKE bli slettet.", "Please confirm the group removal " : "Vennligst bekreft fjerning av gruppe", + "Current password" : "Nåværende passord", + "New password" : "Nytt passord", + "Change password" : "Endre passord", "Your email address" : "Din e-postadresse", "No email address set" : "E-postadresse ikke satt", "Language" : "Språk", "Help translate" : "Bidra til oversettelsen", "No language set" : "Språk ikke satt", + "Your phone number" : "Ditt telefonnummer", + "Your Twitter handle" : "Din Twitter-konto", + "Your website" : "Din nettside", "Add" : "Legg til", "You do not have permissions to see the details of this user" : "Du har ikke tilgang til å se detaljer om denne brukeren", "Set user as admin for" : "Sett bruker som administrator for", @@ -257,11 +263,14 @@ "Not saved" : "Ikke lagret", "Sending…" : "Sender…", "Email sent" : "E-post sendt", - "Address" : "Adresse", + "Location" : "Sted", "Avatar" : "Avatar", "About" : "Om", "Full name" : "Fullt navn", + "Headline" : "Overskrift", + "Organisation" : "Organisasion", "Phone number" : "Telefonnummer", + "Role" : "Rolle", "Twitter" : "Twitter", "Website" : "Nettsted", "Hide" : "Skjul", @@ -332,15 +341,7 @@ "You are a member of the following groups:" : "Du er medlem av følgende grupper:", "You are using <strong>%s</strong>" : "Du bruker <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du bruker <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Ditt telefonnummer", - "Your postal address" : "Din postadresse", - "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta opptil ett døgn før kontoen vises som bekreftet.", - "Link https://…" : "Lenke https://…", - "Twitter handle @…" : "Twitter-konto @ …", "Locale" : "Nasjonal innstilling", - "Current password" : "Nåværende passord", - "New password" : "Nytt passord", - "Change password" : "Endre passord", "Use a second factor besides your password to increase security for your account." : "Bruk en annen faktor i tillegg til passordet ditt for å øke sikkerheten for kontoen din.", "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.", "Migration started …" : "Migrering startet…", @@ -363,6 +364,11 @@ "Recommended" : "Anbefalt", "The cron.php needs to be executed by the system user \"%s\"." : "Filen cron.php må kjøres systemet som følgende bruker \"%s\".", "days" : "dager", - "No display name set" : "Visningsnavn ikke satt" + "No display name set" : "Visningsnavn ikke satt", + "Address" : "Adresse", + "Your postal address" : "Din postadresse", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta opptil ett døgn før kontoen vises som bekreftet.", + "Link https://…" : "Lenke https://…", + "Twitter handle @…" : "Twitter-konto @ …" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js index 8533bfdcbcd..cf872e1c3c8 100644 --- a/apps/settings/l10n/nl.js +++ b/apps/settings/l10n/nl.js @@ -206,6 +206,8 @@ OC.L10N.register( "Copied!" : "Gekopieerd!", "Copy" : "Kopiëren", "Could not copy app password. Please copy it manually." : "Kon app wachtwoord niet kopiëren. Kopieer het handmatig.", + "AJAX" : "AJAX", + "Webcron" : "Webcron", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "PHP POSIX extensie is vereist om dit te draaien. Bekijk {linkstart}PHP documentatie{linkend} voor meer informatie.", "Profile" : "Profiel", "Enable" : "Inschakelen", @@ -219,14 +221,15 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Dit is de laatste waarschuwing: Wil je versleuteling echt inschakelen?", "No encryption module loaded, please enable an encryption module in the app menu." : "Er is geen cryptomodule geladen, activeer een cryptomodule in het appmenu", "Select default encryption module:" : "Selecteer de standaard cryptomodule:", + "Rename group" : "Hernoem groep", "Remove group" : "Verwijderen groep", "You are about to remove the group {group}. The users will NOT be deleted." : "Je gaat groep {group} verwijderen. De gebruikers worden NIET verwijderd.", "Please confirm the group removal " : "Bevestig verwijderen groep", + "Current password" : "Huidig wachtwoord", + "New password" : "Nieuw wachtwoord", + "Change password" : "Wijzig wachtwoord", "Your biography" : "Jouw biografie", - "Unable to update biography" : "Kan biografie niet updaten", "Your full name" : "Je volledige naam", - "Unable to update full name" : "Kan volledige naam niet updaten", - "No full name set" : "Geen volledige naam ingesteld", "Email options" : "E-mail-opties", "Primary email for password reset and notifications" : "Primair e-mailadres voor wachtwoordherstel en meldingen", "Remove primary email" : "Verwijder primair e-mailadres", @@ -244,13 +247,12 @@ OC.L10N.register( "No email address set" : "Geen e-mailadres opgegeven", "Additional emails" : "Additionele e-mails", "Your headline" : "Jouw hoofdlijn", - "Unable to update headline" : "Kan hoofdlijn niet updaten", "Language" : "Taal", "Help translate" : "Help met vertalen", "Unable to update language" : "Kan taal niet updaten", "No language set" : "Geen taal ingesteld", "Your organisation" : "Jouw organisatie", - "Unable to update organisation" : "Kan organisatie niet updaten", + "Your phone number" : "Je telefoonnummer", "Edit your Profile visibility" : "Wijzig je Profiel zichtbaarheid", "Enable Profile" : "Schakel Profiel in", "Unable to update profile enabled state" : "Kan profiel-inschakelstatus niet updaten", @@ -258,9 +260,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Kan zichtbaarheid van {displayId} niet updaten", "Your role" : "Jouw rol", - "Unable to update role" : "Kan rol niet updaten", - "Unable to update federation scope of the primary {accountProperty}" : "Kan federatiescope van de primaire {accountProperty} niet updaten", - "Unable to update federation scope of additional {accountProperty}" : "Kan federatiescope van de additionele {accountProperty} niet updaten", + "Your Twitter handle" : "Je Twitter naam", + "Your website" : "Je website", "Add" : "Toevoegen", "You do not have permissions to see the details of this user" : "Je hebt niet de machtigingen om de details van deze gebruiekr te zien", "Add new password" : "Toevoegen nieuw wachtwoord", @@ -338,7 +339,7 @@ OC.L10N.register( "Not saved" : "Niet opgeslagen", "Sending…" : "Versturen...", "Email sent" : "E-mail verzonden", - "Address" : "Adres", + "Location" : "Locatie", "Avatar" : "Avatar", "About" : "Over", "Full name" : "Volledige naam", @@ -439,19 +440,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Je bent lid van de volgende groepen:", "You are using <strong>%s</strong>" : "Je gebruikt <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Je gebruikt <strong>%1$s</strong> van <strong>%2$s</strong> (%3$s%%</strong>)", - "Change privacy level of phone number" : "Wijzigen privacyniveau van telefoonnummer", - "Your phone number" : "Je telefoonnummer", - "Change privacy level of address" : "Wijzigen privacyniveau van adres", - "Your postal address" : "Je postadres", - "Change privacy level of website" : "Wijzigen privacyniveau van website", - "It can take up to 24 hours before the account is displayed as verified." : "Het kan tot 24 uur duren voordat het account als geverifieerd wordt weergegeven.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Wijzigen privacyniveau van Twitter-profiel", - "Twitter handle @…" : "Twitter naam @…", "Locale" : "Regionale instellingen", - "Current password" : "Huidig wachtwoord", - "New password" : "Nieuw wachtwoord", - "Change password" : "Wijzig wachtwoord", "Use a second factor besides your password to increase security for your account." : "Gebruik een tweede factor naast je wachtwoord om de beveiliging van je account te verhogen. ", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Als u toepassingen van derden gebruikt om met Nextcloud te verbinden, zorg er dan voor om voor elke app een wachtwoord te maken en te configureren voordat \"tweede factor authenticatie\" wordt geactiveerd.", "Migration in progress. Please wait until the migration is finished" : "Migratie bezig. Wacht tot het proces klaar is.", @@ -484,6 +473,23 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Automatisch aanvullen van gebruikersnaam toestaan bij het invoeren van de volledige naam of het e-mailadres (ontbrekende overeenkomst in het telefoonboek negeren en deel uitmaken van dezelfde groep)", "Change privacy level of full name" : "Wijzigen privacyniveau van volledige naam", "No display name set" : "Nog geen weergavenaam ingesteld", - "Change scope level of {accountProperty}" : "Verander het scope-niveau van {accountProperty}" + "Change privacy level of phone number" : "Wijzigen privacyniveau van telefoonnummer", + "Address" : "Adres", + "Change privacy level of address" : "Wijzigen privacyniveau van adres", + "Your postal address" : "Je postadres", + "Change privacy level of website" : "Wijzigen privacyniveau van website", + "It can take up to 24 hours before the account is displayed as verified." : "Het kan tot 24 uur duren voordat het account als geverifieerd wordt weergegeven.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Wijzigen privacyniveau van Twitter-profiel", + "Twitter handle @…" : "Twitter naam @…", + "Unable to update biography" : "Kan biografie niet updaten", + "Unable to update full name" : "Kan volledige naam niet updaten", + "No full name set" : "Geen volledige naam ingesteld", + "Unable to update headline" : "Kan hoofdlijn niet updaten", + "Unable to update organisation" : "Kan organisatie niet updaten", + "Unable to update role" : "Kan rol niet updaten", + "Change scope level of {accountProperty}" : "Verander het scope-niveau van {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Kan federatiescope van de primaire {accountProperty} niet updaten", + "Unable to update federation scope of additional {accountProperty}" : "Kan federatiescope van de additionele {accountProperty} niet updaten" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json index b6f630dee63..e9c076cbfcb 100644 --- a/apps/settings/l10n/nl.json +++ b/apps/settings/l10n/nl.json @@ -204,6 +204,8 @@ "Copied!" : "Gekopieerd!", "Copy" : "Kopiëren", "Could not copy app password. Please copy it manually." : "Kon app wachtwoord niet kopiëren. Kopieer het handmatig.", + "AJAX" : "AJAX", + "Webcron" : "Webcron", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "PHP POSIX extensie is vereist om dit te draaien. Bekijk {linkstart}PHP documentatie{linkend} voor meer informatie.", "Profile" : "Profiel", "Enable" : "Inschakelen", @@ -217,14 +219,15 @@ "This is the final warning: Do you really want to enable encryption?" : "Dit is de laatste waarschuwing: Wil je versleuteling echt inschakelen?", "No encryption module loaded, please enable an encryption module in the app menu." : "Er is geen cryptomodule geladen, activeer een cryptomodule in het appmenu", "Select default encryption module:" : "Selecteer de standaard cryptomodule:", + "Rename group" : "Hernoem groep", "Remove group" : "Verwijderen groep", "You are about to remove the group {group}. The users will NOT be deleted." : "Je gaat groep {group} verwijderen. De gebruikers worden NIET verwijderd.", "Please confirm the group removal " : "Bevestig verwijderen groep", + "Current password" : "Huidig wachtwoord", + "New password" : "Nieuw wachtwoord", + "Change password" : "Wijzig wachtwoord", "Your biography" : "Jouw biografie", - "Unable to update biography" : "Kan biografie niet updaten", "Your full name" : "Je volledige naam", - "Unable to update full name" : "Kan volledige naam niet updaten", - "No full name set" : "Geen volledige naam ingesteld", "Email options" : "E-mail-opties", "Primary email for password reset and notifications" : "Primair e-mailadres voor wachtwoordherstel en meldingen", "Remove primary email" : "Verwijder primair e-mailadres", @@ -242,13 +245,12 @@ "No email address set" : "Geen e-mailadres opgegeven", "Additional emails" : "Additionele e-mails", "Your headline" : "Jouw hoofdlijn", - "Unable to update headline" : "Kan hoofdlijn niet updaten", "Language" : "Taal", "Help translate" : "Help met vertalen", "Unable to update language" : "Kan taal niet updaten", "No language set" : "Geen taal ingesteld", "Your organisation" : "Jouw organisatie", - "Unable to update organisation" : "Kan organisatie niet updaten", + "Your phone number" : "Je telefoonnummer", "Edit your Profile visibility" : "Wijzig je Profiel zichtbaarheid", "Enable Profile" : "Schakel Profiel in", "Unable to update profile enabled state" : "Kan profiel-inschakelstatus niet updaten", @@ -256,9 +258,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Kan zichtbaarheid van {displayId} niet updaten", "Your role" : "Jouw rol", - "Unable to update role" : "Kan rol niet updaten", - "Unable to update federation scope of the primary {accountProperty}" : "Kan federatiescope van de primaire {accountProperty} niet updaten", - "Unable to update federation scope of additional {accountProperty}" : "Kan federatiescope van de additionele {accountProperty} niet updaten", + "Your Twitter handle" : "Je Twitter naam", + "Your website" : "Je website", "Add" : "Toevoegen", "You do not have permissions to see the details of this user" : "Je hebt niet de machtigingen om de details van deze gebruiekr te zien", "Add new password" : "Toevoegen nieuw wachtwoord", @@ -336,7 +337,7 @@ "Not saved" : "Niet opgeslagen", "Sending…" : "Versturen...", "Email sent" : "E-mail verzonden", - "Address" : "Adres", + "Location" : "Locatie", "Avatar" : "Avatar", "About" : "Over", "Full name" : "Volledige naam", @@ -437,19 +438,7 @@ "You are a member of the following groups:" : "Je bent lid van de volgende groepen:", "You are using <strong>%s</strong>" : "Je gebruikt <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Je gebruikt <strong>%1$s</strong> van <strong>%2$s</strong> (%3$s%%</strong>)", - "Change privacy level of phone number" : "Wijzigen privacyniveau van telefoonnummer", - "Your phone number" : "Je telefoonnummer", - "Change privacy level of address" : "Wijzigen privacyniveau van adres", - "Your postal address" : "Je postadres", - "Change privacy level of website" : "Wijzigen privacyniveau van website", - "It can take up to 24 hours before the account is displayed as verified." : "Het kan tot 24 uur duren voordat het account als geverifieerd wordt weergegeven.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Wijzigen privacyniveau van Twitter-profiel", - "Twitter handle @…" : "Twitter naam @…", "Locale" : "Regionale instellingen", - "Current password" : "Huidig wachtwoord", - "New password" : "Nieuw wachtwoord", - "Change password" : "Wijzig wachtwoord", "Use a second factor besides your password to increase security for your account." : "Gebruik een tweede factor naast je wachtwoord om de beveiliging van je account te verhogen. ", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Als u toepassingen van derden gebruikt om met Nextcloud te verbinden, zorg er dan voor om voor elke app een wachtwoord te maken en te configureren voordat \"tweede factor authenticatie\" wordt geactiveerd.", "Migration in progress. Please wait until the migration is finished" : "Migratie bezig. Wacht tot het proces klaar is.", @@ -482,6 +471,23 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Automatisch aanvullen van gebruikersnaam toestaan bij het invoeren van de volledige naam of het e-mailadres (ontbrekende overeenkomst in het telefoonboek negeren en deel uitmaken van dezelfde groep)", "Change privacy level of full name" : "Wijzigen privacyniveau van volledige naam", "No display name set" : "Nog geen weergavenaam ingesteld", - "Change scope level of {accountProperty}" : "Verander het scope-niveau van {accountProperty}" + "Change privacy level of phone number" : "Wijzigen privacyniveau van telefoonnummer", + "Address" : "Adres", + "Change privacy level of address" : "Wijzigen privacyniveau van adres", + "Your postal address" : "Je postadres", + "Change privacy level of website" : "Wijzigen privacyniveau van website", + "It can take up to 24 hours before the account is displayed as verified." : "Het kan tot 24 uur duren voordat het account als geverifieerd wordt weergegeven.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Wijzigen privacyniveau van Twitter-profiel", + "Twitter handle @…" : "Twitter naam @…", + "Unable to update biography" : "Kan biografie niet updaten", + "Unable to update full name" : "Kan volledige naam niet updaten", + "No full name set" : "Geen volledige naam ingesteld", + "Unable to update headline" : "Kan hoofdlijn niet updaten", + "Unable to update organisation" : "Kan organisatie niet updaten", + "Unable to update role" : "Kan rol niet updaten", + "Change scope level of {accountProperty}" : "Verander het scope-niveau van {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Kan federatiescope van de primaire {accountProperty} niet updaten", + "Unable to update federation scope of additional {accountProperty}" : "Kan federatiescope van de additionele {accountProperty} niet updaten" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/nn_NO.js b/apps/settings/l10n/nn_NO.js new file mode 100644 index 00000000000..2ad7a868553 --- /dev/null +++ b/apps/settings/l10n/nn_NO.js @@ -0,0 +1,131 @@ +OC.L10N.register( + "settings", + { + "Private" : "Privat", + "Local" : "Lokal", + "Federated" : "Federated", + "Published" : "Publisert", + "Verify" : "Stadfest", + "Verifying …" : "Stadfestar…", + "Unable to change password" : "Klarte ikkje å endra passordet", + "Very weak password" : "Veldig svakt passord", + "Weak password" : "Svakt passord", + "So-so password" : "Middelmåtig passord", + "Good password" : "OK passord", + "Strong password" : "Sterkt passord", + "Select a profile picture" : "Vel eit profilbilete", + "Groups" : "Grupper", + "Group list is empty" : "Gruppelista er tom", + "Wrong password" : "Feil passord", + "Saved" : "Lagra", + "No user supplied" : "Ingen brukar gjeve", + "Authentication error" : "Autentiseringsfeil", + "Wrong admin recovery password. Please check the password and try again." : "Feil admingjenopprettingspassord. Ver venleg og sjekk passordet og prøv igjen.", + "Invalid mail address" : "Ugyldig e--postadresse", + "Welcome aboard" : "Velkomen ombord", + "Welcome aboard %s" : "Velkomen ombord %s", + "Your username is: %s" : "Brukarnamnet ditt er: %s", + "Set your password" : "Vel eit passord", + "Go to %s" : "Gå til %s", + "Install Client" : "Installer klient", + "Apps" : "Applikasjonar", + "Settings" : "Instillingar", + "Personal" : "Personleg", + "Administration" : "Administrasjon", + "Additional settings" : "Tilleggsinnstillingar", + "Overview" : "Oversyn", + "Sharing" : "Deling", + "Personal info" : "Personleg informasjon", + "Email server" : "E-postserver", + "Create" : "Lag", + "Delete" : "Slett", + "Unlimited" : "Ubegrensa", + "None" : "Ingen", + "All" : "Alle", + "Remove" : "Fjern", + "Disable" : "Slå av", + "Visit website" : "Besøk nettstaden", + "Report a bug" : "Rapporter feil", + "User documentation" : "Brukardokumentasjon", + "Admin documentation" : "Admin-dokumentasjon", + "Rename" : "Gje nytt namn", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "This session" : "Denne økta", + "Device" : "Eining", + "Last activity" : "Siste aktivitet", + "App name" : "App-namn", + "Username" : "Brukarnamn", + "Password" : "Passord", + "Done" : "Ferdig", + "Copied!" : "Kopiert!", + "Copy" : "Kopier", + "Enable" : "Slå på", + "Server-side encryption" : "Tenarsidekryptering", + "Enable server-side encryption" : "Aktiver tenarsidekryptering", + "Select default encryption module:" : "Vel standard krypteringsmodul:", + "Current password" : "Passord", + "New password" : "Nytt passord", + "Change password" : "Endra passord", + "Your email address" : "Di e-postadresse", + "Language" : "Språk", + "Help translate" : "Hjelp oss å omsetja", + "Add" : "Legg til", + "Cancel" : "Avbryt", + "Email" : "E-post", + "Quota" : "Kvote", + "Last login" : "Siste innlogging", + "Details" : "Detaljar", + "Add group" : "Legg til gruppe", + "Active users" : "Aktive brukarare", + "Email sent" : "E-post sendt", + "Location" : "Stad", + "Avatar" : "Avatar", + "About" : "Om", + "Full name" : "Fult namn", + "Hide" : "Gøym", + "Never" : "Aldri", + "Administrator documentation" : "Administratordokumentasjon", + "Documentation" : "Dokumentasjon", + "Forum" : "Forum", + "Login" : "Logg inn", + "Open documentation" : "Opne dokumentasjon", + "Encryption" : "Kryptering", + "From address" : "Frå adresse", + "Server address" : "Tenaradresse", + "Port" : "Port", + "Credentials" : "Credentials", + "SMTP Username" : "SMTP-brukarnamn", + "Save" : "Lagre", + "Send email" : "Send e-post", + "Version" : "Utgåve", + "Allow apps to use the Share API" : "La app-ar bruka API-et til deling", + "Allow public uploads" : "Tillat offentlege opplastingar", + "Allow resharing" : "Tillat vidaredeling", + "Allow sharing with groups" : "Tillat deling med grupper", + "Like our Facebook page" : "Fylj på Facebook", + "Follow us on Twitter" : "Fylj på Twitter", + "Check out our blog" : "Les våre nettsider", + "Subscribe to our newsletter" : "Abonner på nyhende", + "Profile picture" : "Profilbilete", + "Upload new" : "Last opp ny", + "Select from Files" : "Vel frå filer", + "Remove image" : "Fjern bilete", + "png or jpg, max. 20 MB" : "png eller jpg, maks. 20 MB", + "Choose as profile picture" : "Vel eit profilbilete", + "Migration started …" : "Overføring har starta…", + "Couldn't remove app." : "Klarte ikkje å fjerne appen.", + "Couldn't update app." : "Klarte ikkje oppdatera programmet.", + "Everyone" : "Alle", + "Test email settings" : "Test e-postinnstillingar", + "Enable encryption" : "Aktiver kryptering", + "Start migration" : "Start migrasjon", + "days" : "dagar", + "No display name set" : "Visingsnamn ikkje valt", + "Address" : "Adresse" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/nn_NO.json b/apps/settings/l10n/nn_NO.json new file mode 100644 index 00000000000..df65c5a3c4e --- /dev/null +++ b/apps/settings/l10n/nn_NO.json @@ -0,0 +1,129 @@ +{ "translations": { + "Private" : "Privat", + "Local" : "Lokal", + "Federated" : "Federated", + "Published" : "Publisert", + "Verify" : "Stadfest", + "Verifying …" : "Stadfestar…", + "Unable to change password" : "Klarte ikkje å endra passordet", + "Very weak password" : "Veldig svakt passord", + "Weak password" : "Svakt passord", + "So-so password" : "Middelmåtig passord", + "Good password" : "OK passord", + "Strong password" : "Sterkt passord", + "Select a profile picture" : "Vel eit profilbilete", + "Groups" : "Grupper", + "Group list is empty" : "Gruppelista er tom", + "Wrong password" : "Feil passord", + "Saved" : "Lagra", + "No user supplied" : "Ingen brukar gjeve", + "Authentication error" : "Autentiseringsfeil", + "Wrong admin recovery password. Please check the password and try again." : "Feil admingjenopprettingspassord. Ver venleg og sjekk passordet og prøv igjen.", + "Invalid mail address" : "Ugyldig e--postadresse", + "Welcome aboard" : "Velkomen ombord", + "Welcome aboard %s" : "Velkomen ombord %s", + "Your username is: %s" : "Brukarnamnet ditt er: %s", + "Set your password" : "Vel eit passord", + "Go to %s" : "Gå til %s", + "Install Client" : "Installer klient", + "Apps" : "Applikasjonar", + "Settings" : "Instillingar", + "Personal" : "Personleg", + "Administration" : "Administrasjon", + "Additional settings" : "Tilleggsinnstillingar", + "Overview" : "Oversyn", + "Sharing" : "Deling", + "Personal info" : "Personleg informasjon", + "Email server" : "E-postserver", + "Create" : "Lag", + "Delete" : "Slett", + "Unlimited" : "Ubegrensa", + "None" : "Ingen", + "All" : "Alle", + "Remove" : "Fjern", + "Disable" : "Slå av", + "Visit website" : "Besøk nettstaden", + "Report a bug" : "Rapporter feil", + "User documentation" : "Brukardokumentasjon", + "Admin documentation" : "Admin-dokumentasjon", + "Rename" : "Gje nytt namn", + "Internet Explorer" : "Internet Explorer", + "Edge" : "Edge", + "Firefox" : "Firefox", + "Google Chrome" : "Google Chrome", + "Safari" : "Safari", + "Google Chrome for Android" : "Google Chrome for Android", + "This session" : "Denne økta", + "Device" : "Eining", + "Last activity" : "Siste aktivitet", + "App name" : "App-namn", + "Username" : "Brukarnamn", + "Password" : "Passord", + "Done" : "Ferdig", + "Copied!" : "Kopiert!", + "Copy" : "Kopier", + "Enable" : "Slå på", + "Server-side encryption" : "Tenarsidekryptering", + "Enable server-side encryption" : "Aktiver tenarsidekryptering", + "Select default encryption module:" : "Vel standard krypteringsmodul:", + "Current password" : "Passord", + "New password" : "Nytt passord", + "Change password" : "Endra passord", + "Your email address" : "Di e-postadresse", + "Language" : "Språk", + "Help translate" : "Hjelp oss å omsetja", + "Add" : "Legg til", + "Cancel" : "Avbryt", + "Email" : "E-post", + "Quota" : "Kvote", + "Last login" : "Siste innlogging", + "Details" : "Detaljar", + "Add group" : "Legg til gruppe", + "Active users" : "Aktive brukarare", + "Email sent" : "E-post sendt", + "Location" : "Stad", + "Avatar" : "Avatar", + "About" : "Om", + "Full name" : "Fult namn", + "Hide" : "Gøym", + "Never" : "Aldri", + "Administrator documentation" : "Administratordokumentasjon", + "Documentation" : "Dokumentasjon", + "Forum" : "Forum", + "Login" : "Logg inn", + "Open documentation" : "Opne dokumentasjon", + "Encryption" : "Kryptering", + "From address" : "Frå adresse", + "Server address" : "Tenaradresse", + "Port" : "Port", + "Credentials" : "Credentials", + "SMTP Username" : "SMTP-brukarnamn", + "Save" : "Lagre", + "Send email" : "Send e-post", + "Version" : "Utgåve", + "Allow apps to use the Share API" : "La app-ar bruka API-et til deling", + "Allow public uploads" : "Tillat offentlege opplastingar", + "Allow resharing" : "Tillat vidaredeling", + "Allow sharing with groups" : "Tillat deling med grupper", + "Like our Facebook page" : "Fylj på Facebook", + "Follow us on Twitter" : "Fylj på Twitter", + "Check out our blog" : "Les våre nettsider", + "Subscribe to our newsletter" : "Abonner på nyhende", + "Profile picture" : "Profilbilete", + "Upload new" : "Last opp ny", + "Select from Files" : "Vel frå filer", + "Remove image" : "Fjern bilete", + "png or jpg, max. 20 MB" : "png eller jpg, maks. 20 MB", + "Choose as profile picture" : "Vel eit profilbilete", + "Migration started …" : "Overføring har starta…", + "Couldn't remove app." : "Klarte ikkje å fjerne appen.", + "Couldn't update app." : "Klarte ikkje oppdatera programmet.", + "Everyone" : "Alle", + "Test email settings" : "Test e-postinnstillingar", + "Enable encryption" : "Aktiver kryptering", + "Start migration" : "Start migrasjon", + "days" : "dagar", + "No display name set" : "Visingsnamn ikkje valt", + "Address" : "Adresse" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js index 8708ebe467a..b63d4861ea6 100644 --- a/apps/settings/l10n/oc.js +++ b/apps/settings/l10n/oc.js @@ -127,9 +127,11 @@ OC.L10N.register( "Profile" : "Perfil", "Enable" : "Activar", "Remove group" : "Suprimir grop", + "Current password" : "Senhal actual", + "New password" : "Senhal novèl", + "Change password" : "Cambiar de senhal", "Your biography" : "Vòstra biografia", "Your full name" : "Vòstre nom complèt", - "Unable to update full name" : "Actualizacion impossibla del nom complet", "Email options" : "Opcions d’email", "This address is not confirmed" : "Aquesta adreça es pas confirmada", "Set as primary email" : "Definir coma adreça principala", @@ -142,6 +144,7 @@ OC.L10N.register( "Unable to update language" : "Actualizacion de la lenga impossibla", "No language set" : "Cap de lenga pas definida", "Your organisation" : "Vòstra organizacion", + "Your phone number" : "Vòstre numèro de telefòn", "Edit your Profile visibility" : "Modificatz la visibilitat de vòstre perfil", "Enable Profile" : "Activar Perfil", "{displayId}" : "{displayId}", @@ -197,7 +200,7 @@ OC.L10N.register( "Not saved" : "Pas enregistrat", "Sending…" : "Mandadís…", "Email sent" : "Corrièl mandat", - "Address" : "Adreça", + "Location" : "Emplaçament", "Avatar" : "Avatar", "About" : "A prepaus", "Full name" : "Nom complèt", @@ -246,14 +249,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Formatz part d’aquestes grops :", "You are using <strong>%s</strong>" : "Utilizatz <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Utilizatz <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Vòstre numèro de telefòn", - "Your postal address" : "Vòstra adreça postala", - "Link https://…" : "Ligam https://…", - "Twitter handle @…" : "Escais Twitter @…", "Locale" : "Varianta lingüistica", - "Current password" : "Senhal actual", - "New password" : "Senhal novèl", - "Change password" : "Cambiar de senhal", "Migration in progress. Please wait until the migration is finished" : "Migracion en cors. Mercés d’esperar fins que la migracion aja acabat", "Migration started …" : "Migracion començada…", "Couldn't remove app." : "Supression impossibla de l’aplicacion.", @@ -264,6 +260,11 @@ OC.L10N.register( "Enable encryption" : "Activar lo chiframent", "Start migration" : "Començar la migracion", "days" : "jorns", - "No display name set" : "Cap de nom d’afichatge pas definit" + "No display name set" : "Cap de nom d’afichatge pas definit", + "Address" : "Adreça", + "Your postal address" : "Vòstra adreça postala", + "Link https://…" : "Ligam https://…", + "Twitter handle @…" : "Escais Twitter @…", + "Unable to update full name" : "Actualizacion impossibla del nom complet" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json index a7d80811a72..4281503b2ce 100644 --- a/apps/settings/l10n/oc.json +++ b/apps/settings/l10n/oc.json @@ -125,9 +125,11 @@ "Profile" : "Perfil", "Enable" : "Activar", "Remove group" : "Suprimir grop", + "Current password" : "Senhal actual", + "New password" : "Senhal novèl", + "Change password" : "Cambiar de senhal", "Your biography" : "Vòstra biografia", "Your full name" : "Vòstre nom complèt", - "Unable to update full name" : "Actualizacion impossibla del nom complet", "Email options" : "Opcions d’email", "This address is not confirmed" : "Aquesta adreça es pas confirmada", "Set as primary email" : "Definir coma adreça principala", @@ -140,6 +142,7 @@ "Unable to update language" : "Actualizacion de la lenga impossibla", "No language set" : "Cap de lenga pas definida", "Your organisation" : "Vòstra organizacion", + "Your phone number" : "Vòstre numèro de telefòn", "Edit your Profile visibility" : "Modificatz la visibilitat de vòstre perfil", "Enable Profile" : "Activar Perfil", "{displayId}" : "{displayId}", @@ -195,7 +198,7 @@ "Not saved" : "Pas enregistrat", "Sending…" : "Mandadís…", "Email sent" : "Corrièl mandat", - "Address" : "Adreça", + "Location" : "Emplaçament", "Avatar" : "Avatar", "About" : "A prepaus", "Full name" : "Nom complèt", @@ -244,14 +247,7 @@ "You are a member of the following groups:" : "Formatz part d’aquestes grops :", "You are using <strong>%s</strong>" : "Utilizatz <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Utilizatz <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Vòstre numèro de telefòn", - "Your postal address" : "Vòstra adreça postala", - "Link https://…" : "Ligam https://…", - "Twitter handle @…" : "Escais Twitter @…", "Locale" : "Varianta lingüistica", - "Current password" : "Senhal actual", - "New password" : "Senhal novèl", - "Change password" : "Cambiar de senhal", "Migration in progress. Please wait until the migration is finished" : "Migracion en cors. Mercés d’esperar fins que la migracion aja acabat", "Migration started …" : "Migracion començada…", "Couldn't remove app." : "Supression impossibla de l’aplicacion.", @@ -262,6 +258,11 @@ "Enable encryption" : "Activar lo chiframent", "Start migration" : "Començar la migracion", "days" : "jorns", - "No display name set" : "Cap de nom d’afichatge pas definit" + "No display name set" : "Cap de nom d’afichatge pas definit", + "Address" : "Adreça", + "Your postal address" : "Vòstra adreça postala", + "Link https://…" : "Ligam https://…", + "Twitter handle @…" : "Escais Twitter @…", + "Unable to update full name" : "Actualizacion impossibla del nom complet" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js index 5861daae3b2..656e59efc0f 100644 --- a/apps/settings/l10n/pl.js +++ b/apps/settings/l10n/pl.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Usuń grupę", "You are about to remove the group {group}. The users will NOT be deleted." : "Zamierzasz usunąć grupę {group}. Użytkownicy NIE zostaną usunięci.", "Please confirm the group removal " : "Potwierdź usunięcie grupy", + "Current password" : "Bieżące hasło", + "New password" : "Nowe hasło", + "Change password" : "Zmień hasło", "Your biography" : "Twoja biografia", - "Unable to update biography" : "Nie można zaktualizować biografii", "Your full name" : "Twoja pełna nazwa", - "Unable to update full name" : "Nie można zaktualizować pełnej nazwy", - "No full name set" : "Nie ustawiono pełnej nazwy", "Email options" : "Opcje e-mail", "Primary email for password reset and notifications" : "Główny adres e-mail do resetowania hasła i powiadomień", "Remove primary email" : "Usuń podstawowy adres e-mail", @@ -287,13 +287,13 @@ OC.L10N.register( "No email address set" : "Brak adresu e-mail", "Additional emails" : "Dodatkowe e-maile", "Your headline" : "Twój nagłówek", - "Unable to update headline" : "Nie można zaktualizować nagłówka", "Language" : "Język", "Help translate" : "Pomóż w tłumaczeniu", "Unable to update language" : "Nie można zaktualizować języka", "No language set" : "Nie ustawiono języka", + "Your location" : "Twoja lokalizacja", "Your organisation" : "Twoja organizacja", - "Unable to update organisation" : "Nie udało się zaktualizować organizacji", + "Your phone number" : "Twój numer telefonu", "Edit your Profile visibility" : "Edycja widoczności swojego profilu", "Enable Profile" : "Włącz profil", "Unable to update profile enabled state" : "Nie można zaktualizować stanu włączenia profilu", @@ -301,10 +301,13 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nie można zaktualizować widoczności {displayId}", "Your role" : "Twoja rola społeczna", - "Unable to update role" : "Nie można zaktualizować roli społecznej", - "Change scope level of {accountProperty}, current scope is {scope}" : "Zmień poziom zakresu {accountProperty}, obecny zakres to {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Nie można zaktualizować zakresu federacji podstawowego {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Nie można zaktualizować zakresu federacji dodatkowego {accountProperty}", + "Your Twitter handle" : "Twój Twitter:", + "Your website" : "Twoja strona WWW", + "No {property} set" : "Nie ustawiono {property}", + "Unable to update {property}" : "Nie można zaktualizować {property}", + "Change scope level of {property}, current scope is {scope}" : "Zmień poziom zakresu {property}, obecny zakres to {scope}", + "Unable to update federation scope of the primary {property}" : "Nie można zaktualizować zakresu federacji podstawowej {property}", + "Unable to update federation scope of additional {property}" : "Nie można zaktualizować zakresu federacji dodatkowego {property}", "Add additional email" : "Dodaj dodatkowy e-mail", "Add" : "Dodaj", "You do not have permissions to see the details of this user" : "Nie masz uprawnień aby zobaczyć informacje o tym użytkowniku", @@ -383,7 +386,7 @@ OC.L10N.register( "Not saved" : "Nie zapisano", "Sending…" : "Wysyłam…", "Email sent" : "E-mail został wysłany", - "Address" : "Adres", + "Location" : "Lokalizacja", "Avatar" : "Awatar", "About" : "Informacje", "Full name" : "Pełna nazwa", @@ -490,19 +493,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Należysz do następujących grup:", "You are using <strong>%s</strong>" : "Używasz: <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Używasz: <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Zmień poziom prywatności numeru telefonu", - "Your phone number" : "Twój numer telefonu", - "Change privacy level of address" : "Zmień poziom prywatności adresu", - "Your postal address" : "Twój adres pocztowy", - "Change privacy level of website" : "Zmień poziom prywatności strony internetowej", - "It can take up to 24 hours before the account is displayed as verified." : "Do 24 godzin konto będzie widoczne jako zweryfikowane.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Zmień poziom prywatności profilu Twitter", - "Twitter handle @…" : "Twitter @…", "Locale" : "Region", - "Current password" : "Bieżące hasło", - "New password" : "Nowe hasło", - "Change password" : "Zmień hasło", "Use a second factor besides your password to increase security for your account." : "Użyj drugiego zabezpieczenia oprócz hasła, aby zwiększyć bezpieczeństwo konta.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Jeśli używasz aplikacji innych firm do łączenia się z Nextcloud, upewnij się, że utworzyłeś i skonfigurowałeś hasło aplikacji dla każdej przed włączeniem uwierzytelniania dwuskładnikowego.", "Migration in progress. Please wait until the migration is finished" : "Migracja w toku. Poczekaj na zakończenie migracji.", @@ -536,7 +527,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika podczas wpisywania imienia i nazwiska lub adresu e-mail (ignorowanie brakującego dopasowania w książce telefonicznej i przynależności do tej samej grupy)", "Change privacy level of full name" : "Zmień poziom prywatności pełnej nazwy", "No display name set" : "Brak wyświetlanej nazwy", + "Change privacy level of phone number" : "Zmień poziom prywatności numeru telefonu", + "Address" : "Adres", + "Change privacy level of address" : "Zmień poziom prywatności adresu", + "Your postal address" : "Twój adres pocztowy", + "Change privacy level of website" : "Zmień poziom prywatności strony internetowej", + "It can take up to 24 hours before the account is displayed as verified." : "Do 24 godzin konto będzie widoczne jako zweryfikowane.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Zmień poziom prywatności profilu Twitter", + "Twitter handle @…" : "Twitter @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Maksymalna liczba kluczy OPcache jest prawie przekroczona. Aby upewnić się, że wszystkie skrypty mogą być przechowywane w pamięci podręcznej, zaleca się zastosowanie <code>opcache.max_accelerated_files</code> w konfiguracji PHP z wartością wyższą niż <code>%s</code>.", - "Change scope level of {accountProperty}" : "Zmień poziom zakresu {accountProperty}" + "Unable to update biography" : "Nie można zaktualizować biografii", + "Unable to update full name" : "Nie można zaktualizować pełnej nazwy", + "No full name set" : "Nie ustawiono pełnej nazwy", + "Unable to update headline" : "Nie można zaktualizować nagłówka", + "Unable to update organisation" : "Nie udało się zaktualizować organizacji", + "Unable to update role" : "Nie można zaktualizować roli społecznej", + "Change scope level of {accountProperty}" : "Zmień poziom zakresu {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Nie można zaktualizować zakresu federacji podstawowego {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Nie można zaktualizować zakresu federacji dodatkowego {accountProperty}" }, "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/settings/l10n/pl.json b/apps/settings/l10n/pl.json index a36e9282f9f..d2c67cbbff0 100644 --- a/apps/settings/l10n/pl.json +++ b/apps/settings/l10n/pl.json @@ -263,11 +263,11 @@ "Remove group" : "Usuń grupę", "You are about to remove the group {group}. The users will NOT be deleted." : "Zamierzasz usunąć grupę {group}. Użytkownicy NIE zostaną usunięci.", "Please confirm the group removal " : "Potwierdź usunięcie grupy", + "Current password" : "Bieżące hasło", + "New password" : "Nowe hasło", + "Change password" : "Zmień hasło", "Your biography" : "Twoja biografia", - "Unable to update biography" : "Nie można zaktualizować biografii", "Your full name" : "Twoja pełna nazwa", - "Unable to update full name" : "Nie można zaktualizować pełnej nazwy", - "No full name set" : "Nie ustawiono pełnej nazwy", "Email options" : "Opcje e-mail", "Primary email for password reset and notifications" : "Główny adres e-mail do resetowania hasła i powiadomień", "Remove primary email" : "Usuń podstawowy adres e-mail", @@ -285,13 +285,13 @@ "No email address set" : "Brak adresu e-mail", "Additional emails" : "Dodatkowe e-maile", "Your headline" : "Twój nagłówek", - "Unable to update headline" : "Nie można zaktualizować nagłówka", "Language" : "Język", "Help translate" : "Pomóż w tłumaczeniu", "Unable to update language" : "Nie można zaktualizować języka", "No language set" : "Nie ustawiono języka", + "Your location" : "Twoja lokalizacja", "Your organisation" : "Twoja organizacja", - "Unable to update organisation" : "Nie udało się zaktualizować organizacji", + "Your phone number" : "Twój numer telefonu", "Edit your Profile visibility" : "Edycja widoczności swojego profilu", "Enable Profile" : "Włącz profil", "Unable to update profile enabled state" : "Nie można zaktualizować stanu włączenia profilu", @@ -299,10 +299,13 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nie można zaktualizować widoczności {displayId}", "Your role" : "Twoja rola społeczna", - "Unable to update role" : "Nie można zaktualizować roli społecznej", - "Change scope level of {accountProperty}, current scope is {scope}" : "Zmień poziom zakresu {accountProperty}, obecny zakres to {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Nie można zaktualizować zakresu federacji podstawowego {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Nie można zaktualizować zakresu federacji dodatkowego {accountProperty}", + "Your Twitter handle" : "Twój Twitter:", + "Your website" : "Twoja strona WWW", + "No {property} set" : "Nie ustawiono {property}", + "Unable to update {property}" : "Nie można zaktualizować {property}", + "Change scope level of {property}, current scope is {scope}" : "Zmień poziom zakresu {property}, obecny zakres to {scope}", + "Unable to update federation scope of the primary {property}" : "Nie można zaktualizować zakresu federacji podstawowej {property}", + "Unable to update federation scope of additional {property}" : "Nie można zaktualizować zakresu federacji dodatkowego {property}", "Add additional email" : "Dodaj dodatkowy e-mail", "Add" : "Dodaj", "You do not have permissions to see the details of this user" : "Nie masz uprawnień aby zobaczyć informacje o tym użytkowniku", @@ -381,7 +384,7 @@ "Not saved" : "Nie zapisano", "Sending…" : "Wysyłam…", "Email sent" : "E-mail został wysłany", - "Address" : "Adres", + "Location" : "Lokalizacja", "Avatar" : "Awatar", "About" : "Informacje", "Full name" : "Pełna nazwa", @@ -488,19 +491,7 @@ "You are a member of the following groups:" : "Należysz do następujących grup:", "You are using <strong>%s</strong>" : "Używasz: <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Używasz: <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Zmień poziom prywatności numeru telefonu", - "Your phone number" : "Twój numer telefonu", - "Change privacy level of address" : "Zmień poziom prywatności adresu", - "Your postal address" : "Twój adres pocztowy", - "Change privacy level of website" : "Zmień poziom prywatności strony internetowej", - "It can take up to 24 hours before the account is displayed as verified." : "Do 24 godzin konto będzie widoczne jako zweryfikowane.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Zmień poziom prywatności profilu Twitter", - "Twitter handle @…" : "Twitter @…", "Locale" : "Region", - "Current password" : "Bieżące hasło", - "New password" : "Nowe hasło", - "Change password" : "Zmień hasło", "Use a second factor besides your password to increase security for your account." : "Użyj drugiego zabezpieczenia oprócz hasła, aby zwiększyć bezpieczeństwo konta.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Jeśli używasz aplikacji innych firm do łączenia się z Nextcloud, upewnij się, że utworzyłeś i skonfigurowałeś hasło aplikacji dla każdej przed włączeniem uwierzytelniania dwuskładnikowego.", "Migration in progress. Please wait until the migration is finished" : "Migracja w toku. Poczekaj na zakończenie migracji.", @@ -534,7 +525,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika podczas wpisywania imienia i nazwiska lub adresu e-mail (ignorowanie brakującego dopasowania w książce telefonicznej i przynależności do tej samej grupy)", "Change privacy level of full name" : "Zmień poziom prywatności pełnej nazwy", "No display name set" : "Brak wyświetlanej nazwy", + "Change privacy level of phone number" : "Zmień poziom prywatności numeru telefonu", + "Address" : "Adres", + "Change privacy level of address" : "Zmień poziom prywatności adresu", + "Your postal address" : "Twój adres pocztowy", + "Change privacy level of website" : "Zmień poziom prywatności strony internetowej", + "It can take up to 24 hours before the account is displayed as verified." : "Do 24 godzin konto będzie widoczne jako zweryfikowane.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Zmień poziom prywatności profilu Twitter", + "Twitter handle @…" : "Twitter @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Maksymalna liczba kluczy OPcache jest prawie przekroczona. Aby upewnić się, że wszystkie skrypty mogą być przechowywane w pamięci podręcznej, zaleca się zastosowanie <code>opcache.max_accelerated_files</code> w konfiguracji PHP z wartością wyższą niż <code>%s</code>.", - "Change scope level of {accountProperty}" : "Zmień poziom zakresu {accountProperty}" + "Unable to update biography" : "Nie można zaktualizować biografii", + "Unable to update full name" : "Nie można zaktualizować pełnej nazwy", + "No full name set" : "Nie ustawiono pełnej nazwy", + "Unable to update headline" : "Nie można zaktualizować nagłówka", + "Unable to update organisation" : "Nie udało się zaktualizować organizacji", + "Unable to update role" : "Nie można zaktualizować roli społecznej", + "Change scope level of {accountProperty}" : "Zmień poziom zakresu {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Nie można zaktualizować zakresu federacji podstawowego {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Nie można zaktualizować zakresu federacji dodatkowego {accountProperty}" },"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/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js index 103214196d2..77300b46780 100644 --- a/apps/settings/l10n/pt_BR.js +++ b/apps/settings/l10n/pt_BR.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Excluir grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Você está prestes a remover o grupo {group}. Os usuários NÃO serão apagados.", "Please confirm the group removal " : "Confirme a remoção do grupo", + "Current password" : "Senha atual", + "New password" : "Nova senha", + "Change password" : "Alterar senha", "Your biography" : "Sua biografia", - "Unable to update biography" : "Incapaz de atualizar a biografia ", "Your full name" : "Seu nome completo", - "Unable to update full name" : "Não foi possível atualizar o nome completo", - "No full name set" : "Nenhum nome completo definido ", "Email options" : "Opções de e-mail ", "Primary email for password reset and notifications" : "E-mail principal para redefinição de senha e notificações ", "Remove primary email" : "Remover e-mail principal ", @@ -287,13 +287,12 @@ OC.L10N.register( "No email address set" : "Nenhum endereço de e-mail foi configurado", "Additional emails" : "E-mails adicionais", "Your headline" : "Seu título", - "Unable to update headline" : "Incapaz de atualizar o título ", "Language" : "Idioma", "Help translate" : "Ajude a traduzir", "Unable to update language" : "Não foi possível atualizar o idioma", "No language set" : "Nenhum conjunto de idiomas", "Your organisation" : "Sua organização", - "Unable to update organisation" : "Incapaz de atualizar a organização", + "Your phone number" : "Seu número de telefone", "Edit your Profile visibility" : "Edite a visibilidade do seu perfil", "Enable Profile" : "Habilitar Perfil", "Unable to update profile enabled state" : "Não é possível atualizar o estado de habilitação do perfil", @@ -301,10 +300,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Não foi possível atualizar a visibilidade de {displayId}", "Your role" : "Seu papel", - "Unable to update role" : "Incapaz de atualizar a função ", - "Change scope level of {accountProperty}, current scope is {scope}" : "Altere o nível de escopo de {accountProperty}, o escopo atual é {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Não é possível atualizar o escopo da federação do {accountProperty} principal ", - "Unable to update federation scope of additional {accountProperty}" : "Não é possível atualizar o escopo da federação de {accountProperty} adicional ", + "Your Twitter handle" : "Seu Twitter", + "Your website" : "Seu website", "Add additional email" : "Adicionar e-mail adicional", "Add" : "Adicionar", "You do not have permissions to see the details of this user" : "Você não tem permissão para ver os detalhes deste usuário", @@ -383,7 +380,7 @@ OC.L10N.register( "Not saved" : "Não salvo", "Sending…" : "Enviando...", "Email sent" : "E-mail enviado", - "Address" : "Endereço", + "Location" : "Localização", "Avatar" : "Avatar", "About" : "Sobre", "Full name" : "Nome completo", @@ -490,19 +487,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Você é membro dos seguintes grupos:", "You are using <strong>%s</strong>" : "Você está usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Você está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Alterar o nível de privacidade do número de telefone ", - "Your phone number" : "Seu número de telefone", - "Change privacy level of address" : "Alterar o nível de privacidade do endereço ", - "Your postal address" : "Seu endereço de correspondência", - "Change privacy level of website" : "Alterar o nível de privacidade do site ", - "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Alterar o nível de privacidade do perfil do Twitter ", - "Twitter handle @…" : "Twitter handle @…", "Locale" : "Localização", - "Current password" : "Senha atual", - "New password" : "Nova senha", - "Change password" : "Alterar senha", "Use a second factor besides your password to increase security for your account." : "Use um segundo fator além de sua senha para aumentar a segurança da conta.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Se usar aplicativos de terceiros para se conectar ao Nextcloud, certifique-se de criar e configurar uma senha para cada aplicativo antes de habilitar a autenticação em duas etapas.", "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que esteja finalizada", @@ -536,7 +521,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir a autocompletar o nome de usuário ao inserir o nome completo ou endereço de e-mail (ignorando se está na lista de telefones ou no mesmo grupo)", "Change privacy level of full name" : "Alterar o nível de privacidade do nome completo ", "No display name set" : "Nenhum nome de exibição definido", + "Change privacy level of phone number" : "Alterar o nível de privacidade do número de telefone ", + "Address" : "Endereço", + "Change privacy level of address" : "Alterar o nível de privacidade do endereço ", + "Your postal address" : "Seu endereço de correspondência", + "Change privacy level of website" : "Alterar o nível de privacidade do site ", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Alterar o nível de privacidade do perfil do Twitter ", + "Twitter handle @…" : "Twitter handle @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "O número máximo de chaves do OPcache é quase excedido. Para garantir que todos os scripts possam ser mantidos em cache, é recomendável aplicar <code>opcache.max_accelerated_files</code>para sua configuração PHP com um valor maior que <code>%s</code>.", - "Change scope level of {accountProperty}" : "Alterar o nível de escopo de {accountProperty} " + "Unable to update biography" : "Incapaz de atualizar a biografia ", + "Unable to update full name" : "Não foi possível atualizar o nome completo", + "No full name set" : "Nenhum nome completo definido ", + "Unable to update headline" : "Incapaz de atualizar o título ", + "Unable to update organisation" : "Incapaz de atualizar a organização", + "Unable to update role" : "Incapaz de atualizar a função ", + "Change scope level of {accountProperty}" : "Alterar o nível de escopo de {accountProperty} ", + "Unable to update federation scope of the primary {accountProperty}" : "Não é possível atualizar o escopo da federação do {accountProperty} principal ", + "Unable to update federation scope of additional {accountProperty}" : "Não é possível atualizar o escopo da federação de {accountProperty} adicional " }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json index e4c75defe9b..71f87f71818 100644 --- a/apps/settings/l10n/pt_BR.json +++ b/apps/settings/l10n/pt_BR.json @@ -263,11 +263,11 @@ "Remove group" : "Excluir grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Você está prestes a remover o grupo {group}. Os usuários NÃO serão apagados.", "Please confirm the group removal " : "Confirme a remoção do grupo", + "Current password" : "Senha atual", + "New password" : "Nova senha", + "Change password" : "Alterar senha", "Your biography" : "Sua biografia", - "Unable to update biography" : "Incapaz de atualizar a biografia ", "Your full name" : "Seu nome completo", - "Unable to update full name" : "Não foi possível atualizar o nome completo", - "No full name set" : "Nenhum nome completo definido ", "Email options" : "Opções de e-mail ", "Primary email for password reset and notifications" : "E-mail principal para redefinição de senha e notificações ", "Remove primary email" : "Remover e-mail principal ", @@ -285,13 +285,12 @@ "No email address set" : "Nenhum endereço de e-mail foi configurado", "Additional emails" : "E-mails adicionais", "Your headline" : "Seu título", - "Unable to update headline" : "Incapaz de atualizar o título ", "Language" : "Idioma", "Help translate" : "Ajude a traduzir", "Unable to update language" : "Não foi possível atualizar o idioma", "No language set" : "Nenhum conjunto de idiomas", "Your organisation" : "Sua organização", - "Unable to update organisation" : "Incapaz de atualizar a organização", + "Your phone number" : "Seu número de telefone", "Edit your Profile visibility" : "Edite a visibilidade do seu perfil", "Enable Profile" : "Habilitar Perfil", "Unable to update profile enabled state" : "Não é possível atualizar o estado de habilitação do perfil", @@ -299,10 +298,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Não foi possível atualizar a visibilidade de {displayId}", "Your role" : "Seu papel", - "Unable to update role" : "Incapaz de atualizar a função ", - "Change scope level of {accountProperty}, current scope is {scope}" : "Altere o nível de escopo de {accountProperty}, o escopo atual é {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Não é possível atualizar o escopo da federação do {accountProperty} principal ", - "Unable to update federation scope of additional {accountProperty}" : "Não é possível atualizar o escopo da federação de {accountProperty} adicional ", + "Your Twitter handle" : "Seu Twitter", + "Your website" : "Seu website", "Add additional email" : "Adicionar e-mail adicional", "Add" : "Adicionar", "You do not have permissions to see the details of this user" : "Você não tem permissão para ver os detalhes deste usuário", @@ -381,7 +378,7 @@ "Not saved" : "Não salvo", "Sending…" : "Enviando...", "Email sent" : "E-mail enviado", - "Address" : "Endereço", + "Location" : "Localização", "Avatar" : "Avatar", "About" : "Sobre", "Full name" : "Nome completo", @@ -488,19 +485,7 @@ "You are a member of the following groups:" : "Você é membro dos seguintes grupos:", "You are using <strong>%s</strong>" : "Você está usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Você está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Alterar o nível de privacidade do número de telefone ", - "Your phone number" : "Seu número de telefone", - "Change privacy level of address" : "Alterar o nível de privacidade do endereço ", - "Your postal address" : "Seu endereço de correspondência", - "Change privacy level of website" : "Alterar o nível de privacidade do site ", - "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", - "Link https://…" : "Link https://…", - "Change privacy level of Twitter profile" : "Alterar o nível de privacidade do perfil do Twitter ", - "Twitter handle @…" : "Twitter handle @…", "Locale" : "Localização", - "Current password" : "Senha atual", - "New password" : "Nova senha", - "Change password" : "Alterar senha", "Use a second factor besides your password to increase security for your account." : "Use um segundo fator além de sua senha para aumentar a segurança da conta.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Se usar aplicativos de terceiros para se conectar ao Nextcloud, certifique-se de criar e configurar uma senha para cada aplicativo antes de habilitar a autenticação em duas etapas.", "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que esteja finalizada", @@ -534,7 +519,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir a autocompletar o nome de usuário ao inserir o nome completo ou endereço de e-mail (ignorando se está na lista de telefones ou no mesmo grupo)", "Change privacy level of full name" : "Alterar o nível de privacidade do nome completo ", "No display name set" : "Nenhum nome de exibição definido", + "Change privacy level of phone number" : "Alterar o nível de privacidade do número de telefone ", + "Address" : "Endereço", + "Change privacy level of address" : "Alterar o nível de privacidade do endereço ", + "Your postal address" : "Seu endereço de correspondência", + "Change privacy level of website" : "Alterar o nível de privacidade do site ", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", + "Link https://…" : "Link https://…", + "Change privacy level of Twitter profile" : "Alterar o nível de privacidade do perfil do Twitter ", + "Twitter handle @…" : "Twitter handle @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "O número máximo de chaves do OPcache é quase excedido. Para garantir que todos os scripts possam ser mantidos em cache, é recomendável aplicar <code>opcache.max_accelerated_files</code>para sua configuração PHP com um valor maior que <code>%s</code>.", - "Change scope level of {accountProperty}" : "Alterar o nível de escopo de {accountProperty} " + "Unable to update biography" : "Incapaz de atualizar a biografia ", + "Unable to update full name" : "Não foi possível atualizar o nome completo", + "No full name set" : "Nenhum nome completo definido ", + "Unable to update headline" : "Incapaz de atualizar o título ", + "Unable to update organisation" : "Incapaz de atualizar a organização", + "Unable to update role" : "Incapaz de atualizar a função ", + "Change scope level of {accountProperty}" : "Alterar o nível de escopo de {accountProperty} ", + "Unable to update federation scope of the primary {accountProperty}" : "Não é possível atualizar o escopo da federação do {accountProperty} principal ", + "Unable to update federation scope of additional {accountProperty}" : "Não é possível atualizar o escopo da federação de {accountProperty} adicional " },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js index 74f6d443ff4..11064541944 100644 --- a/apps/settings/l10n/pt_PT.js +++ b/apps/settings/l10n/pt_PT.js @@ -144,10 +144,14 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: quer mesmo ativar a encriptação?", "No encryption module loaded, please enable an encryption module in the app menu." : "Nenhum módulo de encriptação carregador, por favor ative um módulo de encriptação no menu das aplicações.", "Select default encryption module:" : "Selecionar o módulo de encriptação predefinido:", + "Current password" : "Palavra-passe atual", + "New password" : "Nova palavra-passe", + "Change password" : "Alterar palavra-passe", "Your email address" : "O seu endereço de email", "No email address set" : "Nenhum endereço de email estabelecido", "Language" : "Idioma", "Help translate" : "Ajude a traduzir", + "Your phone number" : "O seu número de telefone", "Add" : "Adicionar", "Cancel" : "Cancelar", "{size} used" : "{size} utilizado", @@ -174,7 +178,7 @@ OC.L10N.register( "Not saved" : "Não guardado", "Sending…" : "A enviar...", "Email sent" : "Mensagem de correio eletrónico enviada", - "Address" : "Morada", + "Location" : "Localização", "Avatar" : "Avatar", "About" : "Sobre", "Full name" : "Nome completo", @@ -237,14 +241,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png ou jpg, máx. 20 MB", "Picture provided by original account" : "Imagem fornecida pela conta original", "Choose as profile picture" : "Escolher como fotografia de perfil", - "Your phone number" : "O seu número de telefone", - "Your postal address" : "A sua morada", - "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", - "Link https://…" : "Hiperligação https:// ...", - "Twitter handle @…" : "Identificador do Twitter @...", - "Current password" : "Palavra-passe atual", - "New password" : "Nova palavra-passe", - "Change password" : "Alterar palavra-passe", "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que a mesma esteja concluída..", "Migration started …" : "Migração iniciada...", "Couldn't remove app." : "Não foi possível remover a aplicação.", @@ -264,6 +260,11 @@ OC.L10N.register( "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa de ser executado pelo utilizador do sistema \"%s\".", "days" : "dias", - "No display name set" : "Nenhum nome display estabelecido" + "No display name set" : "Nenhum nome display estabelecido", + "Address" : "Morada", + "Your postal address" : "A sua morada", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", + "Link https://…" : "Hiperligação https:// ...", + "Twitter handle @…" : "Identificador do Twitter @..." }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json index 538ce99bea6..d69a806dcdf 100644 --- a/apps/settings/l10n/pt_PT.json +++ b/apps/settings/l10n/pt_PT.json @@ -142,10 +142,14 @@ "This is the final warning: Do you really want to enable encryption?" : "Este é o aviso final: quer mesmo ativar a encriptação?", "No encryption module loaded, please enable an encryption module in the app menu." : "Nenhum módulo de encriptação carregador, por favor ative um módulo de encriptação no menu das aplicações.", "Select default encryption module:" : "Selecionar o módulo de encriptação predefinido:", + "Current password" : "Palavra-passe atual", + "New password" : "Nova palavra-passe", + "Change password" : "Alterar palavra-passe", "Your email address" : "O seu endereço de email", "No email address set" : "Nenhum endereço de email estabelecido", "Language" : "Idioma", "Help translate" : "Ajude a traduzir", + "Your phone number" : "O seu número de telefone", "Add" : "Adicionar", "Cancel" : "Cancelar", "{size} used" : "{size} utilizado", @@ -172,7 +176,7 @@ "Not saved" : "Não guardado", "Sending…" : "A enviar...", "Email sent" : "Mensagem de correio eletrónico enviada", - "Address" : "Morada", + "Location" : "Localização", "Avatar" : "Avatar", "About" : "Sobre", "Full name" : "Nome completo", @@ -235,14 +239,6 @@ "png or jpg, max. 20 MB" : "png ou jpg, máx. 20 MB", "Picture provided by original account" : "Imagem fornecida pela conta original", "Choose as profile picture" : "Escolher como fotografia de perfil", - "Your phone number" : "O seu número de telefone", - "Your postal address" : "A sua morada", - "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", - "Link https://…" : "Hiperligação https:// ...", - "Twitter handle @…" : "Identificador do Twitter @...", - "Current password" : "Palavra-passe atual", - "New password" : "Nova palavra-passe", - "Change password" : "Alterar palavra-passe", "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que a mesma esteja concluída..", "Migration started …" : "Migração iniciada...", "Couldn't remove app." : "Não foi possível remover a aplicação.", @@ -262,6 +258,11 @@ "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa de ser executado pelo utilizador do sistema \"%s\".", "days" : "dias", - "No display name set" : "Nenhum nome display estabelecido" + "No display name set" : "Nenhum nome display estabelecido", + "Address" : "Morada", + "Your postal address" : "A sua morada", + "It can take up to 24 hours before the account is displayed as verified." : "Pode levar até 24 horas para que a conta seja mostrada como verificada.", + "Link https://…" : "Hiperligação https:// ...", + "Twitter handle @…" : "Identificador do Twitter @..." },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js index 53cc661e6f0..938a73d7c88 100644 --- a/apps/settings/l10n/ro.js +++ b/apps/settings/l10n/ro.js @@ -189,10 +189,14 @@ OC.L10N.register( "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Criptarea, ca unică variantă, nu garantează securitatea sistemului. Consultați documentația pentru mai multe informații despre cum funcționează aplicația de criptare și variantele de utilizare acceptate.", "This is the final warning: Do you really want to enable encryption?" : "Aceasta este avertizarea finală: Chiar vrei să activezi criptarea?", "Select default encryption module:" : "Selectează modulul implicit de criptare:", + "Current password" : "Parola curentă", + "New password" : "Noua parolă", + "Change password" : "Schimbă parola", "Your email address" : "Adresa ta de email", "No email address set" : "Fără adresă de email setată", "Language" : "Limba", "Help translate" : "Ajută la traducere", + "Your phone number" : "Numărul tău de telefon", "Add" : "Adaugă", "You do not have permissions to see the details of this user" : "Nu aveți permisiuni pentru a vedea detaliile acestui utilizator", "Cancel" : "Anulare", @@ -218,7 +222,7 @@ OC.L10N.register( "Not saved" : "Nu a fost salvat", "Sending…" : "Se trimite...", "Email sent" : "Mesajul a fost expediat", - "Address" : "Adresă", + "Location" : "Locație", "Avatar" : "Avatar", "About" : "Despre", "Full name" : "Nume complet", @@ -268,12 +272,6 @@ OC.L10N.register( "png or jpg, max. 20 MB" : "png sau jpg, max. 20 MB", "Choose as profile picture" : "Alege ca imagine de profil", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Utilizezi <strong>%1$s</strong> din <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Numărul tău de telefon", - "Your postal address" : "Adresă poștală", - "Link https://…" : "Link https://…", - "Current password" : "Parola curentă", - "New password" : "Noua parolă", - "Change password" : "Schimbă parola", "Migration in progress. Please wait until the migration is finished" : "Migrare în progres. Așteaptă până când migrarea este finalizată", "Migration started …" : "Migrarea a început...", "Couldn't remove app." : "Nu s-a putut înlătura aplicația.", @@ -288,6 +286,9 @@ OC.L10N.register( "Enable encryption" : "Activează criptarea", "Start migration" : "Pornește migrarea", "Recommended" : "Recomandat", - "days" : "zile" + "days" : "zile", + "Address" : "Adresă", + "Your postal address" : "Adresă poștală", + "Link https://…" : "Link https://…" }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json index 40e79faa11c..450f261fb79 100644 --- a/apps/settings/l10n/ro.json +++ b/apps/settings/l10n/ro.json @@ -187,10 +187,14 @@ "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Criptarea, ca unică variantă, nu garantează securitatea sistemului. Consultați documentația pentru mai multe informații despre cum funcționează aplicația de criptare și variantele de utilizare acceptate.", "This is the final warning: Do you really want to enable encryption?" : "Aceasta este avertizarea finală: Chiar vrei să activezi criptarea?", "Select default encryption module:" : "Selectează modulul implicit de criptare:", + "Current password" : "Parola curentă", + "New password" : "Noua parolă", + "Change password" : "Schimbă parola", "Your email address" : "Adresa ta de email", "No email address set" : "Fără adresă de email setată", "Language" : "Limba", "Help translate" : "Ajută la traducere", + "Your phone number" : "Numărul tău de telefon", "Add" : "Adaugă", "You do not have permissions to see the details of this user" : "Nu aveți permisiuni pentru a vedea detaliile acestui utilizator", "Cancel" : "Anulare", @@ -216,7 +220,7 @@ "Not saved" : "Nu a fost salvat", "Sending…" : "Se trimite...", "Email sent" : "Mesajul a fost expediat", - "Address" : "Adresă", + "Location" : "Locație", "Avatar" : "Avatar", "About" : "Despre", "Full name" : "Nume complet", @@ -266,12 +270,6 @@ "png or jpg, max. 20 MB" : "png sau jpg, max. 20 MB", "Choose as profile picture" : "Alege ca imagine de profil", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Utilizezi <strong>%1$s</strong> din <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Numărul tău de telefon", - "Your postal address" : "Adresă poștală", - "Link https://…" : "Link https://…", - "Current password" : "Parola curentă", - "New password" : "Noua parolă", - "Change password" : "Schimbă parola", "Migration in progress. Please wait until the migration is finished" : "Migrare în progres. Așteaptă până când migrarea este finalizată", "Migration started …" : "Migrarea a început...", "Couldn't remove app." : "Nu s-a putut înlătura aplicația.", @@ -286,6 +284,9 @@ "Enable encryption" : "Activează criptarea", "Start migration" : "Pornește migrarea", "Recommended" : "Recomandat", - "days" : "zile" + "days" : "zile", + "Address" : "Adresă", + "Your postal address" : "Adresă poștală", + "Link https://…" : "Link https://…" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" }
\ No newline at end of file diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js index 729224ffc41..0123e20a1e3 100644 --- a/apps/settings/l10n/ru.js +++ b/apps/settings/l10n/ru.js @@ -185,7 +185,7 @@ OC.L10N.register( "No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено", "Disable all" : "Отключить все", "Enable all" : "Включить все", - "_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить%n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."], + "_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить %n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."], "_Update_::_Update all_" : ["Обновить","Обновить все","Обновить все","Обновить все"], "Marked for remote wipe" : "Помечено для удаления данных", "Device settings" : "Параметры устройства", @@ -240,7 +240,7 @@ OC.L10N.register( "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "Использовать службу webcron для запуска зарегистрированного файла «cron.php» каждые 5 минут с использованием протокола HTTPS. Вариант использования: сервер для количества пользователей от одного до пяти.", "Cron (Recommended)" : "Cron (рекомендуется)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Для запуска требуется расширение POSIX для PHP. Обратитесь к {linkstart}документации по PHP{linkend} для получения дополнительной информации.", - "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Использовать системную службу запуска задач cron для запуска файла «cron.php» каждые 5 минут. Рекомендованый вариант.", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Использовать системную службу запуска задач cron для запуска файла «cron.php» каждые 5 минут. Рекомендованный вариант.", "The cron.php needs to be executed by the system user \"{user}\"." : "Файл «cron.php» должен исполняться с использованием учётной записи «{user}».", "Unable to update background job mode" : "Не удалось изменить режим запуска фоновых задач", "Profile" : "Профиль", @@ -261,17 +261,17 @@ OC.L10N.register( "Remove group" : "Удалить группу", "You are about to remove the group {group}. The users will NOT be deleted." : "Группа «{group}» будет удалена, но это НЕ приведёт к удалению пользователей.", "Please confirm the group removal " : "Подтвердите удаление группы", + "Current password" : "Текущий пароль", + "New password" : "Новый пароль", + "Change password" : "Сменить пароль", "Your biography" : "Ваша биография", - "Unable to update biography" : "Не удалось обновить биографию", "Your full name" : "Ваше полное имя", - "Unable to update full name" : "Не удалось обновить полное имя", - "No full name set" : "Полное имя не указано", "Email options" : "Параметры эл. почты", "Primary email for password reset and notifications" : "Основной адрес эл. почты для сброса пароля и получения уведомлений", "Remove primary email" : "Удалить основной адрес эл. почты", "Delete email" : "Удалить адрес эл. почты", "Unset as primary email" : "Не использовать как основной адрес эл. почты", - "This address is not confirmed" : "Адрес не подтвержён", + "This address is not confirmed" : "Адрес не подтвержден", "Set as primary email" : "Использовать как основной адрес эл. почты", "Your email address" : "Ваш адрес электронной почты", "Additional email address {index}" : "Дополнительные адреса эл. почты {index}", @@ -283,13 +283,12 @@ OC.L10N.register( "No email address set" : "Адрес эл.почты не указан", "Additional emails" : "Дополнительные адреса эл. почты", "Your headline" : "Ваш заголовок", - "Unable to update headline" : "Не удалось изменить заголовок", "Language" : "Язык", "Help translate" : "Помочь с переводом", "Unable to update language" : "Не удалось изменить язык", "No language set" : "Язык не задан", "Your organisation" : "Ваша организация", - "Unable to update organisation" : "Не удалось изменить организацию", + "Your phone number" : "Ваш номер телефона", "Edit your Profile visibility" : "Изменить видимость профиля", "Enable Profile" : "Использовать профиль", "Unable to update profile enabled state" : "Не удалось обновить состояние профиля", @@ -297,9 +296,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Не удалось изменить видимость {displayId}", "Your role" : "Ваша роль", - "Unable to update role" : "Не удалось изменить роль", - "Unable to update federation scope of the primary {accountProperty}" : "Невозможно обновить область федерации основного {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Невозможно обновить область федерации дополнительного {accountProperty}", + "Your Twitter handle" : "Ваше имя в Twiter", + "Your website" : "Ваш сайт", "Add additional email" : "Добавить дополнительную электронную почту", "Add" : "Добавить", "You do not have permissions to see the details of this user" : "У вас нет прав на просмотр данных об этом пользователе", @@ -378,7 +376,7 @@ OC.L10N.register( "Not saved" : "Не сохранено", "Sending…" : "Отправка…", "Email sent" : "Письмо отправлено", - "Address" : "Адрес", + "Location" : "Местоположение", "Avatar" : "Аватар", "About" : "О себе", "Full name" : "Полное имя", @@ -483,19 +481,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Вы являетесь участником следующих групп:", "You are using <strong>%s</strong>" : "Вы используете <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Вы используете <strong>%1$s</strong> из <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Изменить уровень конфиденциальности телефонного номера", - "Your phone number" : "Ваш номер телефона", - "Change privacy level of address" : "Изменить уровень конфиденциальности адреса", - "Your postal address" : "Ваш адрес", - "Change privacy level of website" : "Изменить уровень конфиденциальности сайта", - "It can take up to 24 hours before the account is displayed as verified." : "До момента подтверждения аккаунта может пройти до 24 часов.", - "Link https://…" : "Ссылка https://…", - "Change privacy level of Twitter profile" : "Изменить уровень конфиденциальности профиля Twitter", - "Twitter handle @…" : "Имя в Twitter @…", "Locale" : "Региональные стандарты", - "Current password" : "Текущий пароль", - "New password" : "Новый пароль", - "Change password" : "Сменить пароль", "Use a second factor besides your password to increase security for your account." : "Чтобы повысить безопасность своей учётной записи, помимо пароля используйте второй фактор проверки подлинности.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Если вы используете сторонние приложения для подключения к Nextcloud, убедитесь что для них созданы и настроены пароли приложений, перед тем как активировать двухфакторную авторизацию.", "Migration in progress. Please wait until the migration is finished" : "Перенос выполняется, дождитесь завершения", @@ -529,7 +515,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешить автозаполнение имени пользователя при вводе полного имени или адреса электронной почты (игнорируя отсутствующее совпадение в телефонной книге и находящиеся в той же группе)", "Change privacy level of full name" : "Изменить уровень конфиденциальности полного имени", "No display name set" : "Отображаемое имя не указано", + "Change privacy level of phone number" : "Изменить уровень конфиденциальности телефонного номера", + "Address" : "Адрес", + "Change privacy level of address" : "Изменить уровень конфиденциальности адреса", + "Your postal address" : "Ваш адрес", + "Change privacy level of website" : "Изменить уровень конфиденциальности сайта", + "It can take up to 24 hours before the account is displayed as verified." : "До момента подтверждения аккаунта может пройти до 24 часов.", + "Link https://…" : "Ссылка https://…", + "Change privacy level of Twitter profile" : "Изменить уровень конфиденциальности профиля Twitter", + "Twitter handle @…" : "Имя в Twitter @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Максимальное количество ключей OPcache почти достигнуто. Чтобы гарантировать, что все скрипты могут храниться в кэше, рекомендуется установить<code>opcache.max_accelerated_files</code> в конфигурации PHP со значением выше, чем <code>%s</code>.", - "Change scope level of {accountProperty}" : "Изменить уровень области видимости {accountProperty}" + "Unable to update biography" : "Не удалось обновить биографию", + "Unable to update full name" : "Не удалось обновить полное имя", + "No full name set" : "Полное имя не указано", + "Unable to update headline" : "Не удалось изменить заголовок", + "Unable to update organisation" : "Не удалось изменить организацию", + "Unable to update role" : "Не удалось изменить роль", + "Change scope level of {accountProperty}" : "Изменить уровень области видимости {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Невозможно обновить область федерации основного {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Невозможно обновить область федерации дополнительного {accountProperty}" }, "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/settings/l10n/ru.json b/apps/settings/l10n/ru.json index 1f5c5a72284..34b988a1c5e 100644 --- a/apps/settings/l10n/ru.json +++ b/apps/settings/l10n/ru.json @@ -183,7 +183,7 @@ "No apps found for your version" : "Приложений, совместимых с установленной версией Nextcloud, не найдено", "Disable all" : "Отключить все", "Enable all" : "Включить все", - "_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить%n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."], + "_%n app has an update available_::_%n apps have an update available_" : ["Возможно обновить %n приложение.","Возможно обновить %n приложения.","Возможно обновить %n приложений.","Возможно обновить %n приложения."], "_Update_::_Update all_" : ["Обновить","Обновить все","Обновить все","Обновить все"], "Marked for remote wipe" : "Помечено для удаления данных", "Device settings" : "Параметры устройства", @@ -238,7 +238,7 @@ "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "Использовать службу webcron для запуска зарегистрированного файла «cron.php» каждые 5 минут с использованием протокола HTTPS. Вариант использования: сервер для количества пользователей от одного до пяти.", "Cron (Recommended)" : "Cron (рекомендуется)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Для запуска требуется расширение POSIX для PHP. Обратитесь к {linkstart}документации по PHP{linkend} для получения дополнительной информации.", - "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Использовать системную службу запуска задач cron для запуска файла «cron.php» каждые 5 минут. Рекомендованый вариант.", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Использовать системную службу запуска задач cron для запуска файла «cron.php» каждые 5 минут. Рекомендованный вариант.", "The cron.php needs to be executed by the system user \"{user}\"." : "Файл «cron.php» должен исполняться с использованием учётной записи «{user}».", "Unable to update background job mode" : "Не удалось изменить режим запуска фоновых задач", "Profile" : "Профиль", @@ -259,17 +259,17 @@ "Remove group" : "Удалить группу", "You are about to remove the group {group}. The users will NOT be deleted." : "Группа «{group}» будет удалена, но это НЕ приведёт к удалению пользователей.", "Please confirm the group removal " : "Подтвердите удаление группы", + "Current password" : "Текущий пароль", + "New password" : "Новый пароль", + "Change password" : "Сменить пароль", "Your biography" : "Ваша биография", - "Unable to update biography" : "Не удалось обновить биографию", "Your full name" : "Ваше полное имя", - "Unable to update full name" : "Не удалось обновить полное имя", - "No full name set" : "Полное имя не указано", "Email options" : "Параметры эл. почты", "Primary email for password reset and notifications" : "Основной адрес эл. почты для сброса пароля и получения уведомлений", "Remove primary email" : "Удалить основной адрес эл. почты", "Delete email" : "Удалить адрес эл. почты", "Unset as primary email" : "Не использовать как основной адрес эл. почты", - "This address is not confirmed" : "Адрес не подтвержён", + "This address is not confirmed" : "Адрес не подтвержден", "Set as primary email" : "Использовать как основной адрес эл. почты", "Your email address" : "Ваш адрес электронной почты", "Additional email address {index}" : "Дополнительные адреса эл. почты {index}", @@ -281,13 +281,12 @@ "No email address set" : "Адрес эл.почты не указан", "Additional emails" : "Дополнительные адреса эл. почты", "Your headline" : "Ваш заголовок", - "Unable to update headline" : "Не удалось изменить заголовок", "Language" : "Язык", "Help translate" : "Помочь с переводом", "Unable to update language" : "Не удалось изменить язык", "No language set" : "Язык не задан", "Your organisation" : "Ваша организация", - "Unable to update organisation" : "Не удалось изменить организацию", + "Your phone number" : "Ваш номер телефона", "Edit your Profile visibility" : "Изменить видимость профиля", "Enable Profile" : "Использовать профиль", "Unable to update profile enabled state" : "Не удалось обновить состояние профиля", @@ -295,9 +294,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Не удалось изменить видимость {displayId}", "Your role" : "Ваша роль", - "Unable to update role" : "Не удалось изменить роль", - "Unable to update federation scope of the primary {accountProperty}" : "Невозможно обновить область федерации основного {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Невозможно обновить область федерации дополнительного {accountProperty}", + "Your Twitter handle" : "Ваше имя в Twiter", + "Your website" : "Ваш сайт", "Add additional email" : "Добавить дополнительную электронную почту", "Add" : "Добавить", "You do not have permissions to see the details of this user" : "У вас нет прав на просмотр данных об этом пользователе", @@ -376,7 +374,7 @@ "Not saved" : "Не сохранено", "Sending…" : "Отправка…", "Email sent" : "Письмо отправлено", - "Address" : "Адрес", + "Location" : "Местоположение", "Avatar" : "Аватар", "About" : "О себе", "Full name" : "Полное имя", @@ -481,19 +479,7 @@ "You are a member of the following groups:" : "Вы являетесь участником следующих групп:", "You are using <strong>%s</strong>" : "Вы используете <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Вы используете <strong>%1$s</strong> из <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Изменить уровень конфиденциальности телефонного номера", - "Your phone number" : "Ваш номер телефона", - "Change privacy level of address" : "Изменить уровень конфиденциальности адреса", - "Your postal address" : "Ваш адрес", - "Change privacy level of website" : "Изменить уровень конфиденциальности сайта", - "It can take up to 24 hours before the account is displayed as verified." : "До момента подтверждения аккаунта может пройти до 24 часов.", - "Link https://…" : "Ссылка https://…", - "Change privacy level of Twitter profile" : "Изменить уровень конфиденциальности профиля Twitter", - "Twitter handle @…" : "Имя в Twitter @…", "Locale" : "Региональные стандарты", - "Current password" : "Текущий пароль", - "New password" : "Новый пароль", - "Change password" : "Сменить пароль", "Use a second factor besides your password to increase security for your account." : "Чтобы повысить безопасность своей учётной записи, помимо пароля используйте второй фактор проверки подлинности.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Если вы используете сторонние приложения для подключения к Nextcloud, убедитесь что для них созданы и настроены пароли приложений, перед тем как активировать двухфакторную авторизацию.", "Migration in progress. Please wait until the migration is finished" : "Перенос выполняется, дождитесь завершения", @@ -527,7 +513,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешить автозаполнение имени пользователя при вводе полного имени или адреса электронной почты (игнорируя отсутствующее совпадение в телефонной книге и находящиеся в той же группе)", "Change privacy level of full name" : "Изменить уровень конфиденциальности полного имени", "No display name set" : "Отображаемое имя не указано", + "Change privacy level of phone number" : "Изменить уровень конфиденциальности телефонного номера", + "Address" : "Адрес", + "Change privacy level of address" : "Изменить уровень конфиденциальности адреса", + "Your postal address" : "Ваш адрес", + "Change privacy level of website" : "Изменить уровень конфиденциальности сайта", + "It can take up to 24 hours before the account is displayed as verified." : "До момента подтверждения аккаунта может пройти до 24 часов.", + "Link https://…" : "Ссылка https://…", + "Change privacy level of Twitter profile" : "Изменить уровень конфиденциальности профиля Twitter", + "Twitter handle @…" : "Имя в Twitter @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Максимальное количество ключей OPcache почти достигнуто. Чтобы гарантировать, что все скрипты могут храниться в кэше, рекомендуется установить<code>opcache.max_accelerated_files</code> в конфигурации PHP со значением выше, чем <code>%s</code>.", - "Change scope level of {accountProperty}" : "Изменить уровень области видимости {accountProperty}" + "Unable to update biography" : "Не удалось обновить биографию", + "Unable to update full name" : "Не удалось обновить полное имя", + "No full name set" : "Полное имя не указано", + "Unable to update headline" : "Не удалось изменить заголовок", + "Unable to update organisation" : "Не удалось изменить организацию", + "Unable to update role" : "Не удалось изменить роль", + "Change scope level of {accountProperty}" : "Изменить уровень области видимости {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Невозможно обновить область федерации основного {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Невозможно обновить область федерации дополнительного {accountProperty}" },"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/settings/l10n/sc.js b/apps/settings/l10n/sc.js index 023f5bf9cf9..6b1ccd34090 100644 --- a/apps/settings/l10n/sc.js +++ b/apps/settings/l10n/sc.js @@ -218,6 +218,9 @@ OC.L10N.register( "Remove group" : "Boga·nche grupu", "You are about to remove the group {group}. The users will NOT be deleted." : "Ses acanta de nche bogare su grupu {group}. Is utèntzias NO s'ant a cantzellare.", "Please confirm the group removal " : "Cunfirma de bogare su grupu", + "Current password" : "Crae currente", + "New password" : "Crae noa", + "Change password" : "Càmbia crae", "Email options" : "Optziones de posta eletrònica", "Primary email for password reset and notifications" : "Indiritzu de posta eletrònica printzipale pro torrare a impostare sa crae e retzire notìficas", "Remove primary email" : "Boga•nche s'indiritzu de posta eletrònica printzipale", @@ -228,6 +231,7 @@ OC.L10N.register( "Language" : "Limba", "Help translate" : "Agiuda a tradùere", "No language set" : "Peruna limba impostada", + "Your phone number" : "Nùmero tuo de telèfonu", "Add" : "Agiunghe", "You do not have permissions to see the details of this user" : "Non tenes is permissos pro bìdere is detàllios de s'utente", "Add new password" : "Agiunghe una crae noa", @@ -304,7 +308,7 @@ OC.L10N.register( "Not saved" : "Non sarvadu", "Sending…" : "Imbiende...", "Email sent" : "Messàgiu de posta imbiadu", - "Address" : "Indiritzu", + "Location" : "Positzione", "Avatar" : "Avatar", "About" : "In contu de", "Full name" : "Nùmene cumpletu", @@ -396,19 +400,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Faghes parte de custos grupos:", "You are using <strong>%s</strong>" : "Ses impreende <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Ses impreende <strong>%1$s</strong> de<strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Càmbia su livellu de riservadesa de su nùmeru de telèfonu", - "Your phone number" : "Nùmero tuo de telèfonu", - "Change privacy level of address" : "Càmbia su livellu de riservadesa de s'indiritzu", - "Your postal address" : "Indiritzu postale tuo", - "Change privacy level of website" : "Càmbia su livellu de riservadesa de su situ web", - "It can take up to 24 hours before the account is displayed as verified." : "Diant pòdere serbire 24 oras antis de visualizare su contu comente cumproadu.", - "Link https://…" : "Ligòngiu https://…", - "Change privacy level of Twitter profile" : "Càmbia su livellu de riservadesa de su profilu Twitter", - "Twitter handle @…" : "Utente de Twitter @...", "Locale" : "Localizatzione", - "Current password" : "Crae currente", - "New password" : "Crae noa", - "Change password" : "Càmbia crae", "Use a second factor besides your password to increase security for your account." : "Imprea unu segundu fatore a parte sa crae tua pro crèschere sa seguresa de su contu tuo.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si impreas aplicatziones de sa de tres partes pro ti connètere a Nextcloud, assegura•ti de creare e cunfigurare una crae pro cada aplicatzione antis de ativare su segundu fatore de autenticatzione.", "Migration in progress. Please wait until the migration is finished" : "Tràmuda in cursu. Abeta finas a cando at a acabbare", @@ -438,6 +430,15 @@ OC.L10N.register( "days" : "dies", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permite sa cumponidura automàtica candu si nche insertat su nùmene cumpletu o s'indiritzu de posta eletrònica (discuidende sa currispondèntzia mancante in sa rubrica e sende in su matessi grupu)", "Change privacy level of full name" : "Càmbia su livellu de riservadesa de su nùmene cumpletu", - "No display name set" : "Nùmene visualizadu no impostadu" + "No display name set" : "Nùmene visualizadu no impostadu", + "Change privacy level of phone number" : "Càmbia su livellu de riservadesa de su nùmeru de telèfonu", + "Address" : "Indiritzu", + "Change privacy level of address" : "Càmbia su livellu de riservadesa de s'indiritzu", + "Your postal address" : "Indiritzu postale tuo", + "Change privacy level of website" : "Càmbia su livellu de riservadesa de su situ web", + "It can take up to 24 hours before the account is displayed as verified." : "Diant pòdere serbire 24 oras antis de visualizare su contu comente cumproadu.", + "Link https://…" : "Ligòngiu https://…", + "Change privacy level of Twitter profile" : "Càmbia su livellu de riservadesa de su profilu Twitter", + "Twitter handle @…" : "Utente de Twitter @..." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json index b8516543806..b8a2c13728f 100644 --- a/apps/settings/l10n/sc.json +++ b/apps/settings/l10n/sc.json @@ -216,6 +216,9 @@ "Remove group" : "Boga·nche grupu", "You are about to remove the group {group}. The users will NOT be deleted." : "Ses acanta de nche bogare su grupu {group}. Is utèntzias NO s'ant a cantzellare.", "Please confirm the group removal " : "Cunfirma de bogare su grupu", + "Current password" : "Crae currente", + "New password" : "Crae noa", + "Change password" : "Càmbia crae", "Email options" : "Optziones de posta eletrònica", "Primary email for password reset and notifications" : "Indiritzu de posta eletrònica printzipale pro torrare a impostare sa crae e retzire notìficas", "Remove primary email" : "Boga•nche s'indiritzu de posta eletrònica printzipale", @@ -226,6 +229,7 @@ "Language" : "Limba", "Help translate" : "Agiuda a tradùere", "No language set" : "Peruna limba impostada", + "Your phone number" : "Nùmero tuo de telèfonu", "Add" : "Agiunghe", "You do not have permissions to see the details of this user" : "Non tenes is permissos pro bìdere is detàllios de s'utente", "Add new password" : "Agiunghe una crae noa", @@ -302,7 +306,7 @@ "Not saved" : "Non sarvadu", "Sending…" : "Imbiende...", "Email sent" : "Messàgiu de posta imbiadu", - "Address" : "Indiritzu", + "Location" : "Positzione", "Avatar" : "Avatar", "About" : "In contu de", "Full name" : "Nùmene cumpletu", @@ -394,19 +398,7 @@ "You are a member of the following groups:" : "Faghes parte de custos grupos:", "You are using <strong>%s</strong>" : "Ses impreende <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Ses impreende <strong>%1$s</strong> de<strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Càmbia su livellu de riservadesa de su nùmeru de telèfonu", - "Your phone number" : "Nùmero tuo de telèfonu", - "Change privacy level of address" : "Càmbia su livellu de riservadesa de s'indiritzu", - "Your postal address" : "Indiritzu postale tuo", - "Change privacy level of website" : "Càmbia su livellu de riservadesa de su situ web", - "It can take up to 24 hours before the account is displayed as verified." : "Diant pòdere serbire 24 oras antis de visualizare su contu comente cumproadu.", - "Link https://…" : "Ligòngiu https://…", - "Change privacy level of Twitter profile" : "Càmbia su livellu de riservadesa de su profilu Twitter", - "Twitter handle @…" : "Utente de Twitter @...", "Locale" : "Localizatzione", - "Current password" : "Crae currente", - "New password" : "Crae noa", - "Change password" : "Càmbia crae", "Use a second factor besides your password to increase security for your account." : "Imprea unu segundu fatore a parte sa crae tua pro crèschere sa seguresa de su contu tuo.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si impreas aplicatziones de sa de tres partes pro ti connètere a Nextcloud, assegura•ti de creare e cunfigurare una crae pro cada aplicatzione antis de ativare su segundu fatore de autenticatzione.", "Migration in progress. Please wait until the migration is finished" : "Tràmuda in cursu. Abeta finas a cando at a acabbare", @@ -436,6 +428,15 @@ "days" : "dies", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permite sa cumponidura automàtica candu si nche insertat su nùmene cumpletu o s'indiritzu de posta eletrònica (discuidende sa currispondèntzia mancante in sa rubrica e sende in su matessi grupu)", "Change privacy level of full name" : "Càmbia su livellu de riservadesa de su nùmene cumpletu", - "No display name set" : "Nùmene visualizadu no impostadu" + "No display name set" : "Nùmene visualizadu no impostadu", + "Change privacy level of phone number" : "Càmbia su livellu de riservadesa de su nùmeru de telèfonu", + "Address" : "Indiritzu", + "Change privacy level of address" : "Càmbia su livellu de riservadesa de s'indiritzu", + "Your postal address" : "Indiritzu postale tuo", + "Change privacy level of website" : "Càmbia su livellu de riservadesa de su situ web", + "It can take up to 24 hours before the account is displayed as verified." : "Diant pòdere serbire 24 oras antis de visualizare su contu comente cumproadu.", + "Link https://…" : "Ligòngiu https://…", + "Change privacy level of Twitter profile" : "Càmbia su livellu de riservadesa de su profilu Twitter", + "Twitter handle @…" : "Utente de Twitter @..." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js index ef47e2ab755..c4be8b0841e 100644 --- a/apps/settings/l10n/sk.js +++ b/apps/settings/l10n/sk.js @@ -239,11 +239,11 @@ OC.L10N.register( "Remove group" : "Odstrániť skupinu", "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte sa odstrániť skupinu {group}. Používatelia NEBUDÚ vymazaní.", "Please confirm the group removal " : "Prosím potvrďte vymazanie skupiny.", + "Current password" : "Aktuálne heslo", + "New password" : "Nové heslo", + "Change password" : "Zmeniť heslo", "Your biography" : "Váš životopis", - "Unable to update biography" : "Nie je možné aktualizovať životopis", "Your full name" : "Vaše celé meno", - "Unable to update full name" : "Nie je možné aktualizovať vaše celé meno", - "No full name set" : "Nie je nastavené celé meno", "Email options" : "Možnosti E-mailu", "Primary email for password reset and notifications" : "Primárny e-mail na obnovenie hesla a zasielanie upozornení", "Remove primary email" : "Odobrať primárny email", @@ -261,13 +261,12 @@ OC.L10N.register( "No email address set" : "Emailová adresa nie je nastavená", "Additional emails" : "Ďalšie e-maily", "Your headline" : "Váš titulok", - "Unable to update headline" : "Nie je možné aktualizovať titulok", "Language" : "Jazyk", "Help translate" : "Pomôcť s prekladom", "Unable to update language" : "Nie je možné aktualizovať jazyk", "No language set" : "Nie je nastavený žiadny jazyk", "Your organisation" : "Vaša organizácia", - "Unable to update organisation" : "Nie je možné aktualizovať vašu organizáciu", + "Your phone number" : "Vaše telefónne číslo", "Edit your Profile visibility" : "Upraviť viditeľnosť vášho profilu", "Enable Profile" : "Povoliť Profil", "Unable to update profile enabled state" : "Nie je možné aktualizovať stav aktivácie profilu", @@ -275,9 +274,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nie je možné aktualizovať viditeľnosť {displayId}", "Your role" : "Vaša rola", - "Unable to update role" : "Nie je možné aktualizovať rolu", - "Unable to update federation scope of the primary {accountProperty}" : "Nie je možné aktualizovať rozsah federácie primárneho {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Nie je možné aktualizovať rozsah federácie dodatočného {accountProperty}", + "Your Twitter handle" : "Vaša stránka na Twitteri", + "Your website" : "Vaša webstránka", "Add" : "Pridať", "You do not have permissions to see the details of this user" : "Nemáte oprávnenie vidieť detaily tohoto používateľa", "Add new password" : "Pridať nové heslo", @@ -355,7 +353,7 @@ OC.L10N.register( "Not saved" : "Neuložené", "Sending…" : "Odosielam...", "Email sent" : "Email odoslaný", - "Address" : "Adresa", + "Location" : "Umiestnenie", "Avatar" : "Avatar", "About" : "O aplikácii", "Full name" : "Meno a priezvisko", @@ -458,19 +456,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Ste členom nasledovných skupín:", "You are using <strong>%s</strong>" : "Využívate <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Využívate <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Zmeniť úroveň súkromia pre telefónne číslo", - "Your phone number" : "Vaše telefónne číslo", - "Change privacy level of address" : "Zmeniť úroveň súkromia pre adresu", - "Your postal address" : "Vaša poštová adresa", - "Change privacy level of website" : "Zmeniť úroveň súkromia pre webstránku", - "It can take up to 24 hours before the account is displayed as verified." : "Môže trvať až 24 hodín než sa účet zobrazí ako overený.", - "Link https://…" : "Linka https://…", - "Change privacy level of Twitter profile" : "Zmeniť úroveň súkromia pre Twitterový profil", - "Twitter handle @…" : "Prezývka na Twitteri @…", "Locale" : "Miestne nastavenie", - "Current password" : "Aktuálne heslo", - "New password" : "Nové heslo", - "Change password" : "Zmeniť heslo", "Use a second factor besides your password to increase security for your account." : "Pre zlepšenie zabezpečenia vášho účtu použite okrem hesla aj druhý faktor.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ak na pripojenie k NextCloudu používate aplikácie tretích strán, pred povolením dvojstupňového overovania totožnosti, nezabudnite pre každú z nich vytvoriť a nastaviť heslo aplikácie.", "Migration in progress. Please wait until the migration is finished" : "Prebieha migrácia. Počkajte prosím, kým sa skončí", @@ -503,6 +489,23 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Pri zadávaní celého mena alebo e-mailovej adresy povoliť automatické dopĺňanie mena užívateľa (ignoruje sa chýbajúca zhoda v telefónnom zozname a príslušnosť k rovnakej skupine)", "Change privacy level of full name" : "Zmeniť úroveň súkromia pre celé meno", "No display name set" : "Zobrazované meno nie je nastavené", - "Change scope level of {accountProperty}" : "Zmeniť úroveň rozsahu pre {accountProperty}" + "Change privacy level of phone number" : "Zmeniť úroveň súkromia pre telefónne číslo", + "Address" : "Adresa", + "Change privacy level of address" : "Zmeniť úroveň súkromia pre adresu", + "Your postal address" : "Vaša poštová adresa", + "Change privacy level of website" : "Zmeniť úroveň súkromia pre webstránku", + "It can take up to 24 hours before the account is displayed as verified." : "Môže trvať až 24 hodín než sa účet zobrazí ako overený.", + "Link https://…" : "Linka https://…", + "Change privacy level of Twitter profile" : "Zmeniť úroveň súkromia pre Twitterový profil", + "Twitter handle @…" : "Prezývka na Twitteri @…", + "Unable to update biography" : "Nie je možné aktualizovať životopis", + "Unable to update full name" : "Nie je možné aktualizovať vaše celé meno", + "No full name set" : "Nie je nastavené celé meno", + "Unable to update headline" : "Nie je možné aktualizovať titulok", + "Unable to update organisation" : "Nie je možné aktualizovať vašu organizáciu", + "Unable to update role" : "Nie je možné aktualizovať rolu", + "Change scope level of {accountProperty}" : "Zmeniť úroveň rozsahu pre {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Nie je možné aktualizovať rozsah federácie primárneho {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Nie je možné aktualizovať rozsah federácie dodatočného {accountProperty}" }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json index 4c870b11fd5..139c434d323 100644 --- a/apps/settings/l10n/sk.json +++ b/apps/settings/l10n/sk.json @@ -237,11 +237,11 @@ "Remove group" : "Odstrániť skupinu", "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte sa odstrániť skupinu {group}. Používatelia NEBUDÚ vymazaní.", "Please confirm the group removal " : "Prosím potvrďte vymazanie skupiny.", + "Current password" : "Aktuálne heslo", + "New password" : "Nové heslo", + "Change password" : "Zmeniť heslo", "Your biography" : "Váš životopis", - "Unable to update biography" : "Nie je možné aktualizovať životopis", "Your full name" : "Vaše celé meno", - "Unable to update full name" : "Nie je možné aktualizovať vaše celé meno", - "No full name set" : "Nie je nastavené celé meno", "Email options" : "Možnosti E-mailu", "Primary email for password reset and notifications" : "Primárny e-mail na obnovenie hesla a zasielanie upozornení", "Remove primary email" : "Odobrať primárny email", @@ -259,13 +259,12 @@ "No email address set" : "Emailová adresa nie je nastavená", "Additional emails" : "Ďalšie e-maily", "Your headline" : "Váš titulok", - "Unable to update headline" : "Nie je možné aktualizovať titulok", "Language" : "Jazyk", "Help translate" : "Pomôcť s prekladom", "Unable to update language" : "Nie je možné aktualizovať jazyk", "No language set" : "Nie je nastavený žiadny jazyk", "Your organisation" : "Vaša organizácia", - "Unable to update organisation" : "Nie je možné aktualizovať vašu organizáciu", + "Your phone number" : "Vaše telefónne číslo", "Edit your Profile visibility" : "Upraviť viditeľnosť vášho profilu", "Enable Profile" : "Povoliť Profil", "Unable to update profile enabled state" : "Nie je možné aktualizovať stav aktivácie profilu", @@ -273,9 +272,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Nie je možné aktualizovať viditeľnosť {displayId}", "Your role" : "Vaša rola", - "Unable to update role" : "Nie je možné aktualizovať rolu", - "Unable to update federation scope of the primary {accountProperty}" : "Nie je možné aktualizovať rozsah federácie primárneho {accountProperty}", - "Unable to update federation scope of additional {accountProperty}" : "Nie je možné aktualizovať rozsah federácie dodatočného {accountProperty}", + "Your Twitter handle" : "Vaša stránka na Twitteri", + "Your website" : "Vaša webstránka", "Add" : "Pridať", "You do not have permissions to see the details of this user" : "Nemáte oprávnenie vidieť detaily tohoto používateľa", "Add new password" : "Pridať nové heslo", @@ -353,7 +351,7 @@ "Not saved" : "Neuložené", "Sending…" : "Odosielam...", "Email sent" : "Email odoslaný", - "Address" : "Adresa", + "Location" : "Umiestnenie", "Avatar" : "Avatar", "About" : "O aplikácii", "Full name" : "Meno a priezvisko", @@ -456,19 +454,7 @@ "You are a member of the following groups:" : "Ste členom nasledovných skupín:", "You are using <strong>%s</strong>" : "Využívate <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Využívate <strong>%1$s</strong> z <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Change privacy level of phone number" : "Zmeniť úroveň súkromia pre telefónne číslo", - "Your phone number" : "Vaše telefónne číslo", - "Change privacy level of address" : "Zmeniť úroveň súkromia pre adresu", - "Your postal address" : "Vaša poštová adresa", - "Change privacy level of website" : "Zmeniť úroveň súkromia pre webstránku", - "It can take up to 24 hours before the account is displayed as verified." : "Môže trvať až 24 hodín než sa účet zobrazí ako overený.", - "Link https://…" : "Linka https://…", - "Change privacy level of Twitter profile" : "Zmeniť úroveň súkromia pre Twitterový profil", - "Twitter handle @…" : "Prezývka na Twitteri @…", "Locale" : "Miestne nastavenie", - "Current password" : "Aktuálne heslo", - "New password" : "Nové heslo", - "Change password" : "Zmeniť heslo", "Use a second factor besides your password to increase security for your account." : "Pre zlepšenie zabezpečenia vášho účtu použite okrem hesla aj druhý faktor.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Ak na pripojenie k NextCloudu používate aplikácie tretích strán, pred povolením dvojstupňového overovania totožnosti, nezabudnite pre každú z nich vytvoriť a nastaviť heslo aplikácie.", "Migration in progress. Please wait until the migration is finished" : "Prebieha migrácia. Počkajte prosím, kým sa skončí", @@ -501,6 +487,23 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Pri zadávaní celého mena alebo e-mailovej adresy povoliť automatické dopĺňanie mena užívateľa (ignoruje sa chýbajúca zhoda v telefónnom zozname a príslušnosť k rovnakej skupine)", "Change privacy level of full name" : "Zmeniť úroveň súkromia pre celé meno", "No display name set" : "Zobrazované meno nie je nastavené", - "Change scope level of {accountProperty}" : "Zmeniť úroveň rozsahu pre {accountProperty}" + "Change privacy level of phone number" : "Zmeniť úroveň súkromia pre telefónne číslo", + "Address" : "Adresa", + "Change privacy level of address" : "Zmeniť úroveň súkromia pre adresu", + "Your postal address" : "Vaša poštová adresa", + "Change privacy level of website" : "Zmeniť úroveň súkromia pre webstránku", + "It can take up to 24 hours before the account is displayed as verified." : "Môže trvať až 24 hodín než sa účet zobrazí ako overený.", + "Link https://…" : "Linka https://…", + "Change privacy level of Twitter profile" : "Zmeniť úroveň súkromia pre Twitterový profil", + "Twitter handle @…" : "Prezývka na Twitteri @…", + "Unable to update biography" : "Nie je možné aktualizovať životopis", + "Unable to update full name" : "Nie je možné aktualizovať vaše celé meno", + "No full name set" : "Nie je nastavené celé meno", + "Unable to update headline" : "Nie je možné aktualizovať titulok", + "Unable to update organisation" : "Nie je možné aktualizovať vašu organizáciu", + "Unable to update role" : "Nie je možné aktualizovať rolu", + "Change scope level of {accountProperty}" : "Zmeniť úroveň rozsahu pre {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Nie je možné aktualizovať rozsah federácie primárneho {accountProperty}", + "Unable to update federation scope of additional {accountProperty}" : "Nie je možné aktualizovať rozsah federácie dodatočného {accountProperty}" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js index fdaca8d50d7..02454567311 100644 --- a/apps/settings/l10n/sl.js +++ b/apps/settings/l10n/sl.js @@ -229,11 +229,11 @@ OC.L10N.register( "Remove group" : "Odstrani skupino", "You are about to remove the group {group}. The users will NOT be deleted." : "Odstranili boste skupino {group}. Uporabniki ne bodo odstranjeni.", "Please confirm the group removal " : "Potrditi je treba odstranjevanje skupine", + "Current password" : "Trenutno geslo", + "New password" : "Novo geslo", + "Change password" : "Spremeni geslo", "Your biography" : "Biografija", - "Unable to update biography" : "Ni mogoče posodobiti biografije", "Your full name" : "Polno ime", - "Unable to update full name" : "Ni mogoče posodobiti polnega imena", - "No full name set" : "Ni nastavljenega polnega imena", "Email options" : "Možnosti elektronske pošte", "Primary email for password reset and notifications" : "Osnovni elektronski naslov za obnavljanje gesla in obvestila", "Remove primary email" : "Odstrani osnovni elektronski naslov", @@ -251,20 +251,18 @@ OC.L10N.register( "No email address set" : "Poštni naslov ni nastavljen", "Additional emails" : "Dodatni elektronski naslovi", "Your headline" : "Vaš naslov", - "Unable to update headline" : "Ni mogoče posodobiti naslova", "Language" : "Jezik", "Help translate" : "Sodelujte pri prevajanju", "Unable to update language" : "Ni mogoče posodobiti jezika", "No language set" : "Jezik ni nastavljen", "Your organisation" : "Ustanova", - "Unable to update organisation" : "Ni mogoče posodobiti imena ustanove", + "Your phone number" : "Osebna telefonska številka", "Edit your Profile visibility" : "Prilagodi vidnost profila", "Enable Profile" : "Omogoči profil", "Unable to update profile enabled state" : "Ni mogoče posodobiti omogočenega stanja profila", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Ni mogoče posodobiti vidnosti {displayId}", "Your role" : "Vloga", - "Unable to update role" : "Ni mogoče posodobiti vloge", "Add additional email" : "Dodaj dodaten elektronski naslov", "Add" : "Dodaj", "You do not have permissions to see the details of this user" : "Ni ustreznih dovoljenj za pregled podatkov uporabnika", @@ -343,7 +341,7 @@ OC.L10N.register( "Not saved" : "Ni shranjeno", "Sending…" : "Poteka pošiljanje ...", "Email sent" : "Elektronsko sporočilo je poslano", - "Address" : "Naslov", + "Location" : "Trenutno mesto", "Avatar" : "Podoba", "About" : "O programu", "Full name" : "Polno ime", @@ -437,19 +435,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Omogočeno je članstvo v skupinah:", "You are using <strong>%s</strong>" : "Uporabljate <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "V uporabi je <strong>%1$s</strong> od <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Spremeni pravila zasebnosti za telefonsko številko", - "Your phone number" : "Osebna telefonska številka", - "Change privacy level of address" : "Spremeni pravila zasebnosti za naslov", - "Your postal address" : "Osebni poštni naslov", - "Change privacy level of website" : "Spremeni pravila zasebnosti za spletno stran", - "It can take up to 24 hours before the account is displayed as verified." : "Dokončno overjanje računa lahko traja tudi do 24 ur.", - "Link https://…" : "Povezava https:// …", - "Change privacy level of Twitter profile" : "Spremeni pravila zasebnosti za profil Twitter", - "Twitter handle @…" : "Twitter @ …", "Locale" : "Jezikovne nastavitve", - "Current password" : "Trenutno geslo", - "New password" : "Novo geslo", - "Change password" : "Spremeni geslo", "Use a second factor besides your password to increase security for your account." : "Ob geslu je priporočljivo uporabiti tudi drugo-stopenjsko overitev za večjo varnost računa.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Če uporabljate za povezavo z oblakom Nextcloud programe tretjih oseb, najprej ustvarite in nastavite gesla za vsak program, preden omogočite dvostopenjsko overitev.", "Migration in progress. Please wait until the migration is finished" : "V teku je preselitev. Počakajte, da se zaključi.", @@ -481,6 +467,21 @@ OC.L10N.register( "days" : "dneh.", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Dovoli samodejno dokončanje uporabniškega imena pri vpisu polnega imena ali elektronskega naslova (prezrta je zahteva telefonskega imenika in iste skupine).", "Change privacy level of full name" : "Spremeni pravila zasebnosti za polno ime", - "No display name set" : "Prikazno ime ni nastavljeno" + "No display name set" : "Prikazno ime ni nastavljeno", + "Change privacy level of phone number" : "Spremeni pravila zasebnosti za telefonsko številko", + "Address" : "Naslov", + "Change privacy level of address" : "Spremeni pravila zasebnosti za naslov", + "Your postal address" : "Osebni poštni naslov", + "Change privacy level of website" : "Spremeni pravila zasebnosti za spletno stran", + "It can take up to 24 hours before the account is displayed as verified." : "Dokončno overjanje računa lahko traja tudi do 24 ur.", + "Link https://…" : "Povezava https:// …", + "Change privacy level of Twitter profile" : "Spremeni pravila zasebnosti za profil Twitter", + "Twitter handle @…" : "Twitter @ …", + "Unable to update biography" : "Ni mogoče posodobiti biografije", + "Unable to update full name" : "Ni mogoče posodobiti polnega imena", + "No full name set" : "Ni nastavljenega polnega imena", + "Unable to update headline" : "Ni mogoče posodobiti naslova", + "Unable to update organisation" : "Ni mogoče posodobiti imena ustanove", + "Unable to update role" : "Ni mogoče posodobiti vloge" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json index 8b7267cb5f1..f603ec4d8ec 100644 --- a/apps/settings/l10n/sl.json +++ b/apps/settings/l10n/sl.json @@ -227,11 +227,11 @@ "Remove group" : "Odstrani skupino", "You are about to remove the group {group}. The users will NOT be deleted." : "Odstranili boste skupino {group}. Uporabniki ne bodo odstranjeni.", "Please confirm the group removal " : "Potrditi je treba odstranjevanje skupine", + "Current password" : "Trenutno geslo", + "New password" : "Novo geslo", + "Change password" : "Spremeni geslo", "Your biography" : "Biografija", - "Unable to update biography" : "Ni mogoče posodobiti biografije", "Your full name" : "Polno ime", - "Unable to update full name" : "Ni mogoče posodobiti polnega imena", - "No full name set" : "Ni nastavljenega polnega imena", "Email options" : "Možnosti elektronske pošte", "Primary email for password reset and notifications" : "Osnovni elektronski naslov za obnavljanje gesla in obvestila", "Remove primary email" : "Odstrani osnovni elektronski naslov", @@ -249,20 +249,18 @@ "No email address set" : "Poštni naslov ni nastavljen", "Additional emails" : "Dodatni elektronski naslovi", "Your headline" : "Vaš naslov", - "Unable to update headline" : "Ni mogoče posodobiti naslova", "Language" : "Jezik", "Help translate" : "Sodelujte pri prevajanju", "Unable to update language" : "Ni mogoče posodobiti jezika", "No language set" : "Jezik ni nastavljen", "Your organisation" : "Ustanova", - "Unable to update organisation" : "Ni mogoče posodobiti imena ustanove", + "Your phone number" : "Osebna telefonska številka", "Edit your Profile visibility" : "Prilagodi vidnost profila", "Enable Profile" : "Omogoči profil", "Unable to update profile enabled state" : "Ni mogoče posodobiti omogočenega stanja profila", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Ni mogoče posodobiti vidnosti {displayId}", "Your role" : "Vloga", - "Unable to update role" : "Ni mogoče posodobiti vloge", "Add additional email" : "Dodaj dodaten elektronski naslov", "Add" : "Dodaj", "You do not have permissions to see the details of this user" : "Ni ustreznih dovoljenj za pregled podatkov uporabnika", @@ -341,7 +339,7 @@ "Not saved" : "Ni shranjeno", "Sending…" : "Poteka pošiljanje ...", "Email sent" : "Elektronsko sporočilo je poslano", - "Address" : "Naslov", + "Location" : "Trenutno mesto", "Avatar" : "Podoba", "About" : "O programu", "Full name" : "Polno ime", @@ -435,19 +433,7 @@ "You are a member of the following groups:" : "Omogočeno je članstvo v skupinah:", "You are using <strong>%s</strong>" : "Uporabljate <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "V uporabi je <strong>%1$s</strong> od <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Spremeni pravila zasebnosti za telefonsko številko", - "Your phone number" : "Osebna telefonska številka", - "Change privacy level of address" : "Spremeni pravila zasebnosti za naslov", - "Your postal address" : "Osebni poštni naslov", - "Change privacy level of website" : "Spremeni pravila zasebnosti za spletno stran", - "It can take up to 24 hours before the account is displayed as verified." : "Dokončno overjanje računa lahko traja tudi do 24 ur.", - "Link https://…" : "Povezava https:// …", - "Change privacy level of Twitter profile" : "Spremeni pravila zasebnosti za profil Twitter", - "Twitter handle @…" : "Twitter @ …", "Locale" : "Jezikovne nastavitve", - "Current password" : "Trenutno geslo", - "New password" : "Novo geslo", - "Change password" : "Spremeni geslo", "Use a second factor besides your password to increase security for your account." : "Ob geslu je priporočljivo uporabiti tudi drugo-stopenjsko overitev za večjo varnost računa.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Če uporabljate za povezavo z oblakom Nextcloud programe tretjih oseb, najprej ustvarite in nastavite gesla za vsak program, preden omogočite dvostopenjsko overitev.", "Migration in progress. Please wait until the migration is finished" : "V teku je preselitev. Počakajte, da se zaključi.", @@ -479,6 +465,21 @@ "days" : "dneh.", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Dovoli samodejno dokončanje uporabniškega imena pri vpisu polnega imena ali elektronskega naslova (prezrta je zahteva telefonskega imenika in iste skupine).", "Change privacy level of full name" : "Spremeni pravila zasebnosti za polno ime", - "No display name set" : "Prikazno ime ni nastavljeno" + "No display name set" : "Prikazno ime ni nastavljeno", + "Change privacy level of phone number" : "Spremeni pravila zasebnosti za telefonsko številko", + "Address" : "Naslov", + "Change privacy level of address" : "Spremeni pravila zasebnosti za naslov", + "Your postal address" : "Osebni poštni naslov", + "Change privacy level of website" : "Spremeni pravila zasebnosti za spletno stran", + "It can take up to 24 hours before the account is displayed as verified." : "Dokončno overjanje računa lahko traja tudi do 24 ur.", + "Link https://…" : "Povezava https:// …", + "Change privacy level of Twitter profile" : "Spremeni pravila zasebnosti za profil Twitter", + "Twitter handle @…" : "Twitter @ …", + "Unable to update biography" : "Ni mogoče posodobiti biografije", + "Unable to update full name" : "Ni mogoče posodobiti polnega imena", + "No full name set" : "Ni nastavljenega polnega imena", + "Unable to update headline" : "Ni mogoče posodobiti naslova", + "Unable to update organisation" : "Ni mogoče posodobiti imena ustanove", + "Unable to update role" : "Ni mogoče posodobiti vloge" },"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/settings/l10n/sq.js b/apps/settings/l10n/sq.js index 415b44b337e..34bc0e0ac0e 100644 --- a/apps/settings/l10n/sq.js +++ b/apps/settings/l10n/sq.js @@ -136,10 +136,16 @@ OC.L10N.register( "No encryption module loaded, please enable an encryption module in the app menu." : "S’ka të ngarkuar modul fshehtëzimi, ju lutemi, aktivizoni një modul fshehtëzimi që nga menuja e aplikacionit.", "Select default encryption module:" : "Përzgjidhni modul parazgjedhje fshehtëzimi:", "Remove group" : "Hiq grupin", + "Current password" : "Fjalëkalimi i tanishëm", + "New password" : "Fjalëkalimi i ri", + "Change password" : "Ndrysho fjalëkalimin", "Your email address" : "Adresa juaj email", "No email address set" : "S’është caktuar adresë email", "Language" : "Gjuhë", "Help translate" : "Ndihmoni në përkthim", + "Your phone number" : "Numri juaj i telefonit", + "Your Twitter handle" : "Emri i përdoruesit tuaj në Twitter", + "Your website" : "Website-i juaj", "Add" : "Shto", "Cancel" : "Anuloje", "{size} used" : "{madhësia} e përdorur", @@ -172,7 +178,7 @@ OC.L10N.register( "Not saved" : "Nuk u ruajt", "Sending…" : "dërgim", "Email sent" : "Email-i u dërgua", - "Address" : "Adresa", + "Location" : "Vendndodhje", "Avatar" : "Avatari", "About" : "Rreth ", "Full name" : "Emër i plotë", @@ -232,14 +238,6 @@ OC.L10N.register( "Picture provided by original account" : "Foto e prurë nga llogaria origjinale", "Choose as profile picture" : "Zgjidhni një foto profili", "You are using <strong>%s</strong>" : "Ju po përdorni <strong>%s</strong>", - "Your phone number" : "Numri juaj i telefonit", - "Your postal address" : "Adresa juaj postale", - "It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.", - "Link https://…" : "Linku https://…", - "Twitter handle @…" : "Përdoruesi i Twitter @ ...", - "Current password" : "Fjalëkalimi i tanishëm", - "New password" : "Fjalëkalimi i ri", - "Change password" : "Ndrysho fjalëkalimin", "Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon", "Migration started …" : "Migrimi filloi …", "Couldn't remove app." : "S’hoqi dot aplikacionin.", @@ -260,6 +258,11 @@ OC.L10N.register( "Recommended" : "E rekomanduar", "The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".", "days" : "ditësh", - "No display name set" : "S’është caktuar emër për në ekran" + "No display name set" : "S’është caktuar emër për në ekran", + "Address" : "Adresa", + "Your postal address" : "Adresa juaj postale", + "It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.", + "Link https://…" : "Linku https://…", + "Twitter handle @…" : "Përdoruesi i Twitter @ ..." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json index 045150b3bfc..d7e153ade2e 100644 --- a/apps/settings/l10n/sq.json +++ b/apps/settings/l10n/sq.json @@ -134,10 +134,16 @@ "No encryption module loaded, please enable an encryption module in the app menu." : "S’ka të ngarkuar modul fshehtëzimi, ju lutemi, aktivizoni një modul fshehtëzimi që nga menuja e aplikacionit.", "Select default encryption module:" : "Përzgjidhni modul parazgjedhje fshehtëzimi:", "Remove group" : "Hiq grupin", + "Current password" : "Fjalëkalimi i tanishëm", + "New password" : "Fjalëkalimi i ri", + "Change password" : "Ndrysho fjalëkalimin", "Your email address" : "Adresa juaj email", "No email address set" : "S’është caktuar adresë email", "Language" : "Gjuhë", "Help translate" : "Ndihmoni në përkthim", + "Your phone number" : "Numri juaj i telefonit", + "Your Twitter handle" : "Emri i përdoruesit tuaj në Twitter", + "Your website" : "Website-i juaj", "Add" : "Shto", "Cancel" : "Anuloje", "{size} used" : "{madhësia} e përdorur", @@ -170,7 +176,7 @@ "Not saved" : "Nuk u ruajt", "Sending…" : "dërgim", "Email sent" : "Email-i u dërgua", - "Address" : "Adresa", + "Location" : "Vendndodhje", "Avatar" : "Avatari", "About" : "Rreth ", "Full name" : "Emër i plotë", @@ -230,14 +236,6 @@ "Picture provided by original account" : "Foto e prurë nga llogaria origjinale", "Choose as profile picture" : "Zgjidhni një foto profili", "You are using <strong>%s</strong>" : "Ju po përdorni <strong>%s</strong>", - "Your phone number" : "Numri juaj i telefonit", - "Your postal address" : "Adresa juaj postale", - "It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.", - "Link https://…" : "Linku https://…", - "Twitter handle @…" : "Përdoruesi i Twitter @ ...", - "Current password" : "Fjalëkalimi i tanishëm", - "New password" : "Fjalëkalimi i ri", - "Change password" : "Ndrysho fjalëkalimin", "Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon", "Migration started …" : "Migrimi filloi …", "Couldn't remove app." : "S’hoqi dot aplikacionin.", @@ -258,6 +256,11 @@ "Recommended" : "E rekomanduar", "The cron.php needs to be executed by the system user \"%s\"." : "con.php duhet të ekzekutohet bga përdoruesi i sistemit \"%s\".", "days" : "ditësh", - "No display name set" : "S’është caktuar emër për në ekran" + "No display name set" : "S’është caktuar emër për në ekran", + "Address" : "Adresa", + "Your postal address" : "Adresa juaj postale", + "It can take up to 24 hours before the account is displayed as verified." : "Kjo mund të marrë mbi 24 orë, përpara se llogaria të shfaqet si e verifikuar.", + "Link https://…" : "Linku https://…", + "Twitter handle @…" : "Përdoruesi i Twitter @ ..." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js index 9ed779d9929..a7fbd548709 100644 --- a/apps/settings/l10n/sr.js +++ b/apps/settings/l10n/sr.js @@ -205,11 +205,17 @@ OC.L10N.register( "Remove group" : "Уклони групу", "You are about to remove the group {group}. The users will NOT be deleted." : "Управо ћете уклонити групу {group}. Корисници НЕЋЕ бити избрисани.", "Please confirm the group removal " : "Потврдите уклањање групе", + "Current password" : "Тренутна лозинка", + "New password" : "Нова лозинка", + "Change password" : "Измени лозинку", "Your email address" : "Адреса Ваше е-поште", "No email address set" : "Није постављена адреса е-поште", "Language" : "Језик", "Help translate" : " Помозите у превођењу", "No language set" : "Ниједан језик није постављен", + "Your phone number" : "Ваш број телефона", + "Your Twitter handle" : "Ваш Твитер надимак", + "Your website" : "Ваш веб сајт", "Add" : "Додај", "You do not have permissions to see the details of this user" : "Немате дозволе да видите детаље о овом кориснику", "Add new password" : "Додај нову лозинку", @@ -285,7 +291,7 @@ OC.L10N.register( "Not saved" : "Несачувано", "Sending…" : "Шаљем…", "Email sent" : "Порука је послата", - "Address" : "Адреса", + "Location" : "Локација", "Avatar" : "Аватар", "About" : "О програму", "Full name" : "Пуно име", @@ -364,15 +370,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Члан сте следећих група:", "You are using <strong>%s</strong>" : "Користите <strong>%s</strong>.", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "Ваш број телефона", - "Your postal address" : "Ваша адреса становања", - "It can take up to 24 hours before the account is displayed as verified." : "Може да прође и до 24h пре него што налог буде потврђен.", - "Link https://…" : "Веза https://…", - "Twitter handle @…" : "Твитер надимак @…", "Locale" : "Локалитет", - "Current password" : "Тренутна лозинка", - "New password" : "Нова лозинка", - "Change password" : "Измени лозинку", "Use a second factor besides your password to increase security for your account." : "Поред лозинке, користите и други фактор да повећате безбедност Вашег налога.", "Migration in progress. Please wait until the migration is finished" : "Пресељење је у току. Сачекајте док се не заврши", "Migration started …" : "Пресељење покренуто...", @@ -398,6 +396,11 @@ OC.L10N.register( "Recommended" : "Препоручено", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.", "days" : "дана", - "No display name set" : "Није постављено име за приказ" + "No display name set" : "Није постављено име за приказ", + "Address" : "Адреса", + "Your postal address" : "Ваша адреса становања", + "It can take up to 24 hours before the account is displayed as verified." : "Може да прође и до 24h пре него што налог буде потврђен.", + "Link https://…" : "Веза https://…", + "Twitter handle @…" : "Твитер надимак @…" }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json index 4ce73c15962..57bf3c76d02 100644 --- a/apps/settings/l10n/sr.json +++ b/apps/settings/l10n/sr.json @@ -203,11 +203,17 @@ "Remove group" : "Уклони групу", "You are about to remove the group {group}. The users will NOT be deleted." : "Управо ћете уклонити групу {group}. Корисници НЕЋЕ бити избрисани.", "Please confirm the group removal " : "Потврдите уклањање групе", + "Current password" : "Тренутна лозинка", + "New password" : "Нова лозинка", + "Change password" : "Измени лозинку", "Your email address" : "Адреса Ваше е-поште", "No email address set" : "Није постављена адреса е-поште", "Language" : "Језик", "Help translate" : " Помозите у превођењу", "No language set" : "Ниједан језик није постављен", + "Your phone number" : "Ваш број телефона", + "Your Twitter handle" : "Ваш Твитер надимак", + "Your website" : "Ваш веб сајт", "Add" : "Додај", "You do not have permissions to see the details of this user" : "Немате дозволе да видите детаље о овом кориснику", "Add new password" : "Додај нову лозинку", @@ -283,7 +289,7 @@ "Not saved" : "Несачувано", "Sending…" : "Шаљем…", "Email sent" : "Порука је послата", - "Address" : "Адреса", + "Location" : "Локација", "Avatar" : "Аватар", "About" : "О програму", "Full name" : "Пуно име", @@ -362,15 +368,7 @@ "You are a member of the following groups:" : "Члан сте следећих група:", "You are using <strong>%s</strong>" : "Користите <strong>%s</strong>.", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Користите <strong>%1$s</strong> од <strong>%2$s</strong> (<strong>%3$s%%</strong>)", - "Your phone number" : "Ваш број телефона", - "Your postal address" : "Ваша адреса становања", - "It can take up to 24 hours before the account is displayed as verified." : "Може да прође и до 24h пре него што налог буде потврђен.", - "Link https://…" : "Веза https://…", - "Twitter handle @…" : "Твитер надимак @…", "Locale" : "Локалитет", - "Current password" : "Тренутна лозинка", - "New password" : "Нова лозинка", - "Change password" : "Измени лозинку", "Use a second factor besides your password to increase security for your account." : "Поред лозинке, користите и други фактор да повећате безбедност Вашег налога.", "Migration in progress. Please wait until the migration is finished" : "Пресељење је у току. Сачекајте док се не заврши", "Migration started …" : "Пресељење покренуто...", @@ -396,6 +394,11 @@ "Recommended" : "Препоручено", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.", "days" : "дана", - "No display name set" : "Није постављено име за приказ" + "No display name set" : "Није постављено име за приказ", + "Address" : "Адреса", + "Your postal address" : "Ваша адреса становања", + "It can take up to 24 hours before the account is displayed as verified." : "Може да прође и до 24h пре него што налог буде потврђен.", + "Link https://…" : "Веза https://…", + "Twitter handle @…" : "Твитер надимак @…" },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js index d464675b2c7..c3d8911a3ab 100644 --- a/apps/settings/l10n/sv.js +++ b/apps/settings/l10n/sv.js @@ -222,11 +222,11 @@ OC.L10N.register( "Remove group" : "Ta bort grupp", "You are about to remove the group {group}. The users will NOT be deleted." : "Du håller på att ta bort gruppen {group}. Användarna kommer INTE att raderas.", "Please confirm the group removal " : "Bekräfta borttagning av gruppen", + "Current password" : "Nuvarande lösenord", + "New password" : "Nytt lösenord", + "Change password" : "Ändra lösenord", "Your biography" : "Din biografi", - "Unable to update biography" : "Kunde inte uppdatera biografi", "Your full name" : "Ditt fullständiga namn", - "Unable to update full name" : "Kunde inte uppdatera fullständigt namn", - "No full name set" : "Inget fullständigt namn angivet", "Email options" : "E-postinställningar", "Primary email for password reset and notifications" : "Primär e-postadress för notifikationer och återställning av lösenord", "Remove primary email" : "Ta bort primär e-postadress", @@ -244,20 +244,20 @@ OC.L10N.register( "No email address set" : "Ingen e-postadress angiven", "Additional emails" : "Ytterligare e-postadresser", "Your headline" : "Din rubrik", - "Unable to update headline" : "Kunde inte uppdatera rubrik", "Language" : "Språk", "Help translate" : "Hjälp till med översättningarna", "Unable to update language" : "Kunde inte uppdatera språk", "No language set" : "Inget språk angivet", "Your organisation" : "Din organisation", - "Unable to update organisation" : "Kunde inte uppdatera organisation", + "Your phone number" : "Ditt telefonnummer", "Edit your Profile visibility" : "Ändra synligheten för din profil", "Enable Profile" : "Aktivera profil", "Unable to update profile enabled state" : "Kunde inte uppdatera profilaktivering", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Kunde inte uppdatera synlighet för {displayId}", "Your role" : "Din roll", - "Unable to update role" : "Kunde inte uppdatera roll", + "Your Twitter handle" : "Ditt Twitterkonto", + "Your website" : "Din webbsida", "Add" : "Lägg till", "You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren", "Add new password" : "Lägg till nytt lösenord", @@ -335,7 +335,7 @@ OC.L10N.register( "Not saved" : "Inte sparad", "Sending…" : "Skickar...", "Email sent" : "E-post skickad", - "Address" : "Ort/Stad", + "Location" : "Plats", "Avatar" : "Avatar", "About" : "Om", "Full name" : "Namn", @@ -436,19 +436,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Du är medlem i följande grupper:", "You are using <strong>%s</strong>" : "Du använder <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du använder <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Ända hemlighetsnivå för telefonnummer", - "Your phone number" : "Ditt telefonnummer", - "Change privacy level of address" : "Ända hemlighetsnivå för adress", - "Your postal address" : "Ort/Stad", - "Change privacy level of website" : "Ända hemlighetsnivå för hemsida", - "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta upp till 24 timmar innan kontot visas som verifierat.", - "Link https://…" : "Länk https://...", - "Change privacy level of Twitter profile" : "Ända hemlighetsnivå för Twitterprofil", - "Twitter handle @…" : "Twitter handle @…", "Locale" : "Plats", - "Current password" : "Nuvarande lösenord", - "New password" : "Nytt lösenord", - "Change password" : "Ändra lösenord", "Use a second factor besides your password to increase security for your account." : "Använd en andra faktor förutom ditt lösenord för att öka säkerheten för ditt konto.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Om du använder tredje-parts applikationer för att ansluta till Nextcloud vänligen skapa och konfigurera ett applösenord för varje innan två-faktor autentisering aktiveras.", "Migration in progress. Please wait until the migration is finished" : "Migration pågår. Vänta tills migrationen är klar", @@ -480,6 +468,21 @@ OC.L10N.register( "days" : "dagar", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tillåt komplettering av användarnamn vid ifyllning av fullständigt namn eller e-postadress (bortser från saknande matchning i telefonboken eller grupptillhörighet i samma grupp)", "Change privacy level of full name" : "Ändra hemlighetsnivå för helt namn", - "No display name set" : "Inget visningsnamn angivet" + "No display name set" : "Inget visningsnamn angivet", + "Change privacy level of phone number" : "Ända hemlighetsnivå för telefonnummer", + "Address" : "Ort/Stad", + "Change privacy level of address" : "Ända hemlighetsnivå för adress", + "Your postal address" : "Ort/Stad", + "Change privacy level of website" : "Ända hemlighetsnivå för hemsida", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta upp till 24 timmar innan kontot visas som verifierat.", + "Link https://…" : "Länk https://...", + "Change privacy level of Twitter profile" : "Ända hemlighetsnivå för Twitterprofil", + "Twitter handle @…" : "Twitter handle @…", + "Unable to update biography" : "Kunde inte uppdatera biografi", + "Unable to update full name" : "Kunde inte uppdatera fullständigt namn", + "No full name set" : "Inget fullständigt namn angivet", + "Unable to update headline" : "Kunde inte uppdatera rubrik", + "Unable to update organisation" : "Kunde inte uppdatera organisation", + "Unable to update role" : "Kunde inte uppdatera roll" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json index 735b354016b..f973db5301c 100644 --- a/apps/settings/l10n/sv.json +++ b/apps/settings/l10n/sv.json @@ -220,11 +220,11 @@ "Remove group" : "Ta bort grupp", "You are about to remove the group {group}. The users will NOT be deleted." : "Du håller på att ta bort gruppen {group}. Användarna kommer INTE att raderas.", "Please confirm the group removal " : "Bekräfta borttagning av gruppen", + "Current password" : "Nuvarande lösenord", + "New password" : "Nytt lösenord", + "Change password" : "Ändra lösenord", "Your biography" : "Din biografi", - "Unable to update biography" : "Kunde inte uppdatera biografi", "Your full name" : "Ditt fullständiga namn", - "Unable to update full name" : "Kunde inte uppdatera fullständigt namn", - "No full name set" : "Inget fullständigt namn angivet", "Email options" : "E-postinställningar", "Primary email for password reset and notifications" : "Primär e-postadress för notifikationer och återställning av lösenord", "Remove primary email" : "Ta bort primär e-postadress", @@ -242,20 +242,20 @@ "No email address set" : "Ingen e-postadress angiven", "Additional emails" : "Ytterligare e-postadresser", "Your headline" : "Din rubrik", - "Unable to update headline" : "Kunde inte uppdatera rubrik", "Language" : "Språk", "Help translate" : "Hjälp till med översättningarna", "Unable to update language" : "Kunde inte uppdatera språk", "No language set" : "Inget språk angivet", "Your organisation" : "Din organisation", - "Unable to update organisation" : "Kunde inte uppdatera organisation", + "Your phone number" : "Ditt telefonnummer", "Edit your Profile visibility" : "Ändra synligheten för din profil", "Enable Profile" : "Aktivera profil", "Unable to update profile enabled state" : "Kunde inte uppdatera profilaktivering", "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "Kunde inte uppdatera synlighet för {displayId}", "Your role" : "Din roll", - "Unable to update role" : "Kunde inte uppdatera roll", + "Your Twitter handle" : "Ditt Twitterkonto", + "Your website" : "Din webbsida", "Add" : "Lägg till", "You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren", "Add new password" : "Lägg till nytt lösenord", @@ -333,7 +333,7 @@ "Not saved" : "Inte sparad", "Sending…" : "Skickar...", "Email sent" : "E-post skickad", - "Address" : "Ort/Stad", + "Location" : "Plats", "Avatar" : "Avatar", "About" : "Om", "Full name" : "Namn", @@ -434,19 +434,7 @@ "You are a member of the following groups:" : "Du är medlem i följande grupper:", "You are using <strong>%s</strong>" : "Du använder <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Du använder <strong>%1$s</strong> av <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Ända hemlighetsnivå för telefonnummer", - "Your phone number" : "Ditt telefonnummer", - "Change privacy level of address" : "Ända hemlighetsnivå för adress", - "Your postal address" : "Ort/Stad", - "Change privacy level of website" : "Ända hemlighetsnivå för hemsida", - "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta upp till 24 timmar innan kontot visas som verifierat.", - "Link https://…" : "Länk https://...", - "Change privacy level of Twitter profile" : "Ända hemlighetsnivå för Twitterprofil", - "Twitter handle @…" : "Twitter handle @…", "Locale" : "Plats", - "Current password" : "Nuvarande lösenord", - "New password" : "Nytt lösenord", - "Change password" : "Ändra lösenord", "Use a second factor besides your password to increase security for your account." : "Använd en andra faktor förutom ditt lösenord för att öka säkerheten för ditt konto.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Om du använder tredje-parts applikationer för att ansluta till Nextcloud vänligen skapa och konfigurera ett applösenord för varje innan två-faktor autentisering aktiveras.", "Migration in progress. Please wait until the migration is finished" : "Migration pågår. Vänta tills migrationen är klar", @@ -478,6 +466,21 @@ "days" : "dagar", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tillåt komplettering av användarnamn vid ifyllning av fullständigt namn eller e-postadress (bortser från saknande matchning i telefonboken eller grupptillhörighet i samma grupp)", "Change privacy level of full name" : "Ändra hemlighetsnivå för helt namn", - "No display name set" : "Inget visningsnamn angivet" + "No display name set" : "Inget visningsnamn angivet", + "Change privacy level of phone number" : "Ända hemlighetsnivå för telefonnummer", + "Address" : "Ort/Stad", + "Change privacy level of address" : "Ända hemlighetsnivå för adress", + "Your postal address" : "Ort/Stad", + "Change privacy level of website" : "Ända hemlighetsnivå för hemsida", + "It can take up to 24 hours before the account is displayed as verified." : "Det kan ta upp till 24 timmar innan kontot visas som verifierat.", + "Link https://…" : "Länk https://...", + "Change privacy level of Twitter profile" : "Ända hemlighetsnivå för Twitterprofil", + "Twitter handle @…" : "Twitter handle @…", + "Unable to update biography" : "Kunde inte uppdatera biografi", + "Unable to update full name" : "Kunde inte uppdatera fullständigt namn", + "No full name set" : "Inget fullständigt namn angivet", + "Unable to update headline" : "Kunde inte uppdatera rubrik", + "Unable to update organisation" : "Kunde inte uppdatera organisation", + "Unable to update role" : "Kunde inte uppdatera roll" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js index 0b40f056f9f..cd9062c66b9 100644 --- a/apps/settings/l10n/th.js +++ b/apps/settings/l10n/th.js @@ -158,6 +158,9 @@ OC.L10N.register( "Remove group" : "ลบกลุ่ม", "You are about to remove the group {group}. The users will NOT be deleted." : "คุณกำลังจะลบกลุ่ม {group} ผู้ใช้ที่อยู่ในกลุ่มจะไม่ถูกลบไปด้วย", "Please confirm the group removal " : "กรุณายืนยันการลบกลุ่ม", + "Current password" : "รหัสผ่านปัจจุบัน", + "New password" : "รหัสผ่านใหม่", + "Change password" : "เปลี่ยนรหัสผ่าน", "Email options" : "ตัวเลือกอีเมล", "Primary email for password reset and notifications" : "อีเมลหลักสำหรับการตั้งรหัสผ่านใหม่และการแจ้งเตือน", "Remove primary email" : "ลบอีเมลหลักออก", @@ -244,7 +247,7 @@ OC.L10N.register( "Not saved" : "ไม่ได้บันทึก", "Sending…" : "กำลังส่ง....", "Email sent" : "ส่งอีเมลแล้ว", - "Address" : "ที่อยู่", + "Location" : "ตำแหน่งที่อยู่", "Avatar" : "ภาพแทนตัว", "About" : "เกี่ยวกับ", "Full name" : "ชื่อเต็ม", @@ -317,9 +320,6 @@ OC.L10N.register( "Picture provided by original account" : "ใช้รูปภาพจากบัญชีเดิม", "Choose as profile picture" : "เลือกเป็นรูปภาพโปรไฟล์", "Locale" : "ตำแหน่งที่ตั้ง", - "Current password" : "รหัสผ่านปัจจุบัน", - "New password" : "รหัสผ่านใหม่", - "Change password" : "เปลี่ยนรหัสผ่าน", "Migration in progress. Please wait until the migration is finished" : "การโยกย้ายกำลังทำงาน กรุณารอสักครู่จนกว่าการโยกย้ายจะเสร็จสิ้น", "Migration started …" : "เริ่มต้นการโยกย้าย …", "Couldn't remove app." : "ไม่สามารถลบแอป", @@ -337,6 +337,7 @@ OC.L10N.register( "Start migration" : "เริ่มการโยกย้าย", "Recommended" : "แนะนำ", "days" : "วัน", - "No display name set" : "ไม่มีชื่อที่แสดง" + "No display name set" : "ไม่มีชื่อที่แสดง", + "Address" : "ที่อยู่" }, "nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json index b0e37d2e01d..d003995e8eb 100644 --- a/apps/settings/l10n/th.json +++ b/apps/settings/l10n/th.json @@ -156,6 +156,9 @@ "Remove group" : "ลบกลุ่ม", "You are about to remove the group {group}. The users will NOT be deleted." : "คุณกำลังจะลบกลุ่ม {group} ผู้ใช้ที่อยู่ในกลุ่มจะไม่ถูกลบไปด้วย", "Please confirm the group removal " : "กรุณายืนยันการลบกลุ่ม", + "Current password" : "รหัสผ่านปัจจุบัน", + "New password" : "รหัสผ่านใหม่", + "Change password" : "เปลี่ยนรหัสผ่าน", "Email options" : "ตัวเลือกอีเมล", "Primary email for password reset and notifications" : "อีเมลหลักสำหรับการตั้งรหัสผ่านใหม่และการแจ้งเตือน", "Remove primary email" : "ลบอีเมลหลักออก", @@ -242,7 +245,7 @@ "Not saved" : "ไม่ได้บันทึก", "Sending…" : "กำลังส่ง....", "Email sent" : "ส่งอีเมลแล้ว", - "Address" : "ที่อยู่", + "Location" : "ตำแหน่งที่อยู่", "Avatar" : "ภาพแทนตัว", "About" : "เกี่ยวกับ", "Full name" : "ชื่อเต็ม", @@ -315,9 +318,6 @@ "Picture provided by original account" : "ใช้รูปภาพจากบัญชีเดิม", "Choose as profile picture" : "เลือกเป็นรูปภาพโปรไฟล์", "Locale" : "ตำแหน่งที่ตั้ง", - "Current password" : "รหัสผ่านปัจจุบัน", - "New password" : "รหัสผ่านใหม่", - "Change password" : "เปลี่ยนรหัสผ่าน", "Migration in progress. Please wait until the migration is finished" : "การโยกย้ายกำลังทำงาน กรุณารอสักครู่จนกว่าการโยกย้ายจะเสร็จสิ้น", "Migration started …" : "เริ่มต้นการโยกย้าย …", "Couldn't remove app." : "ไม่สามารถลบแอป", @@ -335,6 +335,7 @@ "Start migration" : "เริ่มการโยกย้าย", "Recommended" : "แนะนำ", "days" : "วัน", - "No display name set" : "ไม่มีชื่อที่แสดง" + "No display name set" : "ไม่มีชื่อที่แสดง", + "Address" : "ที่อยู่" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js index 4a731cee4a5..c5be2145d63 100644 --- a/apps/settings/l10n/tr.js +++ b/apps/settings/l10n/tr.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "Grubu sil", "You are about to remove the group {group}. The users will NOT be deleted." : "{group} grubunu silmek üzeresiniz. Kullanıcılar SİLİNMEYECEK.", "Please confirm the group removal " : "Grubu silme işlemini onaylayın", + "Current password" : "Geçerli parola", + "New password" : "Yeni parola", + "Change password" : "Parola değiştir", "Your biography" : "Özgeçmişiniz", - "Unable to update biography" : "Özgeçmiş güncellenemedi", "Your full name" : "Tam adınız", - "Unable to update full name" : "Tam ad güncellenemedi", - "No full name set" : "Tam ad belirtilmemiş", "Email options" : "E-posta seçenekleri", "Primary email for password reset and notifications" : "Parola sıfırlama ve bildirimler için birincil e-posta adresi", "Remove primary email" : "Birincil e-posta adresini sil", @@ -287,13 +287,13 @@ OC.L10N.register( "No email address set" : "E-posta adresi belirtilmemiş", "Additional emails" : "Ek e-posta adresleri", "Your headline" : "Başlığınız", - "Unable to update headline" : "Başlık güncellenemedi", "Language" : "Dil", "Help translate" : "Çeviriye yardım edin", "Unable to update language" : "Dil güncellenemedi", "No language set" : "Herhangi bir dil ayarlanmamış", + "Your location" : "Konumunuz", "Your organisation" : "Kuruluşunuz", - "Unable to update organisation" : "Kuruluş güncellenemedi", + "Your phone number" : "Telefon numaranız", "Edit your Profile visibility" : "Profilinizin görünürlüğü değiştirin", "Enable Profile" : "Profili etkinleştir", "Unable to update profile enabled state" : "Profilin etkinleştirilme durumu güncellenemedi", @@ -301,10 +301,13 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "{displayId} görünürlüğü güncellenemedi", "Your role" : "Pozisyonunuz", - "Unable to update role" : "Pozisyon güncellenemedi", - "Change scope level of {accountProperty}, current scope is {scope}" : "{accountProperty} kapsam düzeyini değiştir. Geçerli kapsam: {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Birincil {accountProperty} birleşik kapsamı güncellenemedi", - "Unable to update federation scope of additional {accountProperty}" : "Ek {accountProperty} birleşik kapsamı güncellenemedi", + "Your Twitter handle" : "Twitter adresiniz", + "Your website" : "Web sitesi adresiniz", + "No {property} set" : "Herhangi bir {property} ayarlanmamış", + "Unable to update {property}" : "{property} güncellenemedi", + "Change scope level of {property}, current scope is {scope}" : "{property} kapsam düzeyini değiştir. Geçerli kapsam: {scope}", + "Unable to update federation scope of the primary {property}" : "Birincil {property} birleşik kapsamı güncellenemedi", + "Unable to update federation scope of additional {property}" : "Ek {property} birleşik kapsamı güncellenemedi", "Add additional email" : "Ek e-posta adresi ekle", "Add" : "Ekle", "You do not have permissions to see the details of this user" : "Bu kullanıcının ayrıntılarını görüntüleme izniniz yok", @@ -383,7 +386,7 @@ OC.L10N.register( "Not saved" : "Kaydedilmedi", "Sending…" : "Gönderiliyor …", "Email sent" : "E-posta gönderildi", - "Address" : "Adres", + "Location" : "Konum", "Avatar" : "Avatar", "About" : "Hakkında", "Full name" : "Tam ad", @@ -403,7 +406,7 @@ OC.L10N.register( "Download and enable" : "İndir ve etkinleştir", "Enable untested app" : "Denenmemiş uygulamalar kullanılabilsin", "The app will be downloaded from the App Store" : "Uygulama uygulama mağazasından indirilecek", - "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Bu uygulamanın kullandığınız Nextcloud sürümü ile uyumluluğu denetlenmemiş. İşlemi sürdürürseniz uygulamayı kurabilirsiniz. Ancak uygulama beklendiği gibi çalışmayabilir.", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Bu uygulamanın kullandığınız Nextcloud sürümü ile uyumluluğu denetlenmemiş. İşlemi sürdürerek uygulamayı kurabilirsiniz. Ancak uygulama beklendiği gibi çalışmayabilir.", "Never" : "Asla", "An error occured during the request. Unable to proceed." : "İstek sırasında bir sorun çıktı. İşlem sürdürülemiyor.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Uygulama etkinleştirilmiş fakat güncellenmesi gerekiyor. 5 saniye içinde güncelleme sayfasına yönlendirileceksiniz.", @@ -446,7 +449,7 @@ OC.L10N.register( "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Yönetici olarak paylaşma davranışı ile ilgili ince ayarları yapabilirsiniz. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.", "Allow apps to use the Share API" : "Uygulamalar Paylaşım API kullanabilsin", "Set default expiration date for shares" : "Paylaşımların varsayılan kullanma süresi sonu", - "Expire after" : "Kullanım süresi", + "Expire after" : "Geçerlilik süresi sonu", "day(s)" : "gün", "Enforce expiration date" : "Son kullanma tarihi dayatılsın", "Set default expiration date for shares to other servers" : "Diğer sunuculara yapılan paylaşımların varsayılan kullanma süresi sonu", @@ -490,19 +493,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Şu gruplara üyesiniz:", "You are using <strong>%s</strong>" : "<strong>%s</strong> kullanıyorsunuz", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Kullandığınız: <strong>%1$s</strong> Kullanabileceğiniz: <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Telefon numarasının gizlilik düzeyini değiştir", - "Your phone number" : "Telefon numaranız", - "Change privacy level of address" : "Adresin gizlilik düzeyini değiştir", - "Your postal address" : "Posta adresiniz", - "Change privacy level of website" : "Web sitesinin gizlilik düzeyini değiştir", - "It can take up to 24 hours before the account is displayed as verified." : "Hesabın doğrulanması ve görüntülenmesi 24 saate kadar zaman alabilir.", - "Link https://…" : "Bağlantı https://…", - "Change privacy level of Twitter profile" : "Twitter profilinin gizlilik düzeyini değiştir", - "Twitter handle @…" : "Twitter kodu @…", "Locale" : "Yerel Ayar", - "Current password" : "Geçerli parola", - "New password" : "Yeni parola", - "Change password" : "Parola değiştir", "Use a second factor besides your password to increase security for your account." : "Parolanızın yanında ikinci bir doğrulama kullanarak hesabınızın güvenliğini arttırabilirsiniz.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Nextcloud bağlantısı kurmak için üçüncü taraf uygulamaları kullanıyorsanız, lütfen iki aşamalı kimlik doğrulamasını etkinleştirmeden önce her biri için bir uygulama parolası oluşturduğunuzdan ve yapılandırdığınızdan emin olun.", "Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin", @@ -536,7 +527,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tam ad ya da e-posta adresi yazılırken kullanıcı adı otomatik olarak tamamlanabilsin (aynı grupta olma ya da telefon defteri eşleşmesi yok sayılarak)", "Change privacy level of full name" : "Tam adın gizlilik düzeyini değiştir", "No display name set" : "Görüntülenecek ad belirtilmemiş", + "Change privacy level of phone number" : "Telefon numarasının gizlilik düzeyini değiştir", + "Address" : "Adres", + "Change privacy level of address" : "Adresin gizlilik düzeyini değiştir", + "Your postal address" : "Posta adresiniz", + "Change privacy level of website" : "Web sitesinin gizlilik düzeyini değiştir", + "It can take up to 24 hours before the account is displayed as verified." : "Hesabın doğrulanması ve görüntülenmesi 24 saate kadar zaman alabilir.", + "Link https://…" : "Bağlantı https://…", + "Change privacy level of Twitter profile" : "Twitter profilinin gizlilik düzeyini değiştir", + "Twitter handle @…" : "Twitter kodu @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "En fazla OPcache anahtar sayısına neredeyse erişildi. Tüm betik dosyalarının ön bellekte tutulabilmesini sağlamak için, PHP yapılandırmanıza <code>%s</code> üzerinde bir değerle <code>opcache.max_accelerated_files</code> uygulamanız önerilir.", - "Change scope level of {accountProperty}" : "{accountProperty} kapsam düzeyini değiştir" + "Unable to update biography" : "Özgeçmiş güncellenemedi", + "Unable to update full name" : "Tam ad güncellenemedi", + "No full name set" : "Tam ad belirtilmemiş", + "Unable to update headline" : "Başlık güncellenemedi", + "Unable to update organisation" : "Kuruluş güncellenemedi", + "Unable to update role" : "Pozisyon güncellenemedi", + "Change scope level of {accountProperty}" : "{accountProperty} kapsam düzeyini değiştir", + "Unable to update federation scope of the primary {accountProperty}" : "Birincil {accountProperty} birleşik kapsamı güncellenemedi", + "Unable to update federation scope of additional {accountProperty}" : "Ek {accountProperty} birleşik kapsamı güncellenemedi" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json index 533cda88625..71ecb33f908 100644 --- a/apps/settings/l10n/tr.json +++ b/apps/settings/l10n/tr.json @@ -263,11 +263,11 @@ "Remove group" : "Grubu sil", "You are about to remove the group {group}. The users will NOT be deleted." : "{group} grubunu silmek üzeresiniz. Kullanıcılar SİLİNMEYECEK.", "Please confirm the group removal " : "Grubu silme işlemini onaylayın", + "Current password" : "Geçerli parola", + "New password" : "Yeni parola", + "Change password" : "Parola değiştir", "Your biography" : "Özgeçmişiniz", - "Unable to update biography" : "Özgeçmiş güncellenemedi", "Your full name" : "Tam adınız", - "Unable to update full name" : "Tam ad güncellenemedi", - "No full name set" : "Tam ad belirtilmemiş", "Email options" : "E-posta seçenekleri", "Primary email for password reset and notifications" : "Parola sıfırlama ve bildirimler için birincil e-posta adresi", "Remove primary email" : "Birincil e-posta adresini sil", @@ -285,13 +285,13 @@ "No email address set" : "E-posta adresi belirtilmemiş", "Additional emails" : "Ek e-posta adresleri", "Your headline" : "Başlığınız", - "Unable to update headline" : "Başlık güncellenemedi", "Language" : "Dil", "Help translate" : "Çeviriye yardım edin", "Unable to update language" : "Dil güncellenemedi", "No language set" : "Herhangi bir dil ayarlanmamış", + "Your location" : "Konumunuz", "Your organisation" : "Kuruluşunuz", - "Unable to update organisation" : "Kuruluş güncellenemedi", + "Your phone number" : "Telefon numaranız", "Edit your Profile visibility" : "Profilinizin görünürlüğü değiştirin", "Enable Profile" : "Profili etkinleştir", "Unable to update profile enabled state" : "Profilin etkinleştirilme durumu güncellenemedi", @@ -299,10 +299,13 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "{displayId} görünürlüğü güncellenemedi", "Your role" : "Pozisyonunuz", - "Unable to update role" : "Pozisyon güncellenemedi", - "Change scope level of {accountProperty}, current scope is {scope}" : "{accountProperty} kapsam düzeyini değiştir. Geçerli kapsam: {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "Birincil {accountProperty} birleşik kapsamı güncellenemedi", - "Unable to update federation scope of additional {accountProperty}" : "Ek {accountProperty} birleşik kapsamı güncellenemedi", + "Your Twitter handle" : "Twitter adresiniz", + "Your website" : "Web sitesi adresiniz", + "No {property} set" : "Herhangi bir {property} ayarlanmamış", + "Unable to update {property}" : "{property} güncellenemedi", + "Change scope level of {property}, current scope is {scope}" : "{property} kapsam düzeyini değiştir. Geçerli kapsam: {scope}", + "Unable to update federation scope of the primary {property}" : "Birincil {property} birleşik kapsamı güncellenemedi", + "Unable to update federation scope of additional {property}" : "Ek {property} birleşik kapsamı güncellenemedi", "Add additional email" : "Ek e-posta adresi ekle", "Add" : "Ekle", "You do not have permissions to see the details of this user" : "Bu kullanıcının ayrıntılarını görüntüleme izniniz yok", @@ -381,7 +384,7 @@ "Not saved" : "Kaydedilmedi", "Sending…" : "Gönderiliyor …", "Email sent" : "E-posta gönderildi", - "Address" : "Adres", + "Location" : "Konum", "Avatar" : "Avatar", "About" : "Hakkında", "Full name" : "Tam ad", @@ -401,7 +404,7 @@ "Download and enable" : "İndir ve etkinleştir", "Enable untested app" : "Denenmemiş uygulamalar kullanılabilsin", "The app will be downloaded from the App Store" : "Uygulama uygulama mağazasından indirilecek", - "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Bu uygulamanın kullandığınız Nextcloud sürümü ile uyumluluğu denetlenmemiş. İşlemi sürdürürseniz uygulamayı kurabilirsiniz. Ancak uygulama beklendiği gibi çalışmayabilir.", + "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Bu uygulamanın kullandığınız Nextcloud sürümü ile uyumluluğu denetlenmemiş. İşlemi sürdürerek uygulamayı kurabilirsiniz. Ancak uygulama beklendiği gibi çalışmayabilir.", "Never" : "Asla", "An error occured during the request. Unable to proceed." : "İstek sırasında bir sorun çıktı. İşlem sürdürülemiyor.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Uygulama etkinleştirilmiş fakat güncellenmesi gerekiyor. 5 saniye içinde güncelleme sayfasına yönlendirileceksiniz.", @@ -444,7 +447,7 @@ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Yönetici olarak paylaşma davranışı ile ilgili ince ayarları yapabilirsiniz. Ayrıntılı bilgi almak için belgelere bakabilirsiniz.", "Allow apps to use the Share API" : "Uygulamalar Paylaşım API kullanabilsin", "Set default expiration date for shares" : "Paylaşımların varsayılan kullanma süresi sonu", - "Expire after" : "Kullanım süresi", + "Expire after" : "Geçerlilik süresi sonu", "day(s)" : "gün", "Enforce expiration date" : "Son kullanma tarihi dayatılsın", "Set default expiration date for shares to other servers" : "Diğer sunuculara yapılan paylaşımların varsayılan kullanma süresi sonu", @@ -488,19 +491,7 @@ "You are a member of the following groups:" : "Şu gruplara üyesiniz:", "You are using <strong>%s</strong>" : "<strong>%s</strong> kullanıyorsunuz", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Kullandığınız: <strong>%1$s</strong> Kullanabileceğiniz: <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "Telefon numarasının gizlilik düzeyini değiştir", - "Your phone number" : "Telefon numaranız", - "Change privacy level of address" : "Adresin gizlilik düzeyini değiştir", - "Your postal address" : "Posta adresiniz", - "Change privacy level of website" : "Web sitesinin gizlilik düzeyini değiştir", - "It can take up to 24 hours before the account is displayed as verified." : "Hesabın doğrulanması ve görüntülenmesi 24 saate kadar zaman alabilir.", - "Link https://…" : "Bağlantı https://…", - "Change privacy level of Twitter profile" : "Twitter profilinin gizlilik düzeyini değiştir", - "Twitter handle @…" : "Twitter kodu @…", "Locale" : "Yerel Ayar", - "Current password" : "Geçerli parola", - "New password" : "Yeni parola", - "Change password" : "Parola değiştir", "Use a second factor besides your password to increase security for your account." : "Parolanızın yanında ikinci bir doğrulama kullanarak hesabınızın güvenliğini arttırabilirsiniz.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Nextcloud bağlantısı kurmak için üçüncü taraf uygulamaları kullanıyorsanız, lütfen iki aşamalı kimlik doğrulamasını etkinleştirmeden önce her biri için bir uygulama parolası oluşturduğunuzdan ve yapılandırdığınızdan emin olun.", "Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin", @@ -534,7 +525,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tam ad ya da e-posta adresi yazılırken kullanıcı adı otomatik olarak tamamlanabilsin (aynı grupta olma ya da telefon defteri eşleşmesi yok sayılarak)", "Change privacy level of full name" : "Tam adın gizlilik düzeyini değiştir", "No display name set" : "Görüntülenecek ad belirtilmemiş", + "Change privacy level of phone number" : "Telefon numarasının gizlilik düzeyini değiştir", + "Address" : "Adres", + "Change privacy level of address" : "Adresin gizlilik düzeyini değiştir", + "Your postal address" : "Posta adresiniz", + "Change privacy level of website" : "Web sitesinin gizlilik düzeyini değiştir", + "It can take up to 24 hours before the account is displayed as verified." : "Hesabın doğrulanması ve görüntülenmesi 24 saate kadar zaman alabilir.", + "Link https://…" : "Bağlantı https://…", + "Change privacy level of Twitter profile" : "Twitter profilinin gizlilik düzeyini değiştir", + "Twitter handle @…" : "Twitter kodu @…", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "En fazla OPcache anahtar sayısına neredeyse erişildi. Tüm betik dosyalarının ön bellekte tutulabilmesini sağlamak için, PHP yapılandırmanıza <code>%s</code> üzerinde bir değerle <code>opcache.max_accelerated_files</code> uygulamanız önerilir.", - "Change scope level of {accountProperty}" : "{accountProperty} kapsam düzeyini değiştir" + "Unable to update biography" : "Özgeçmiş güncellenemedi", + "Unable to update full name" : "Tam ad güncellenemedi", + "No full name set" : "Tam ad belirtilmemiş", + "Unable to update headline" : "Başlık güncellenemedi", + "Unable to update organisation" : "Kuruluş güncellenemedi", + "Unable to update role" : "Pozisyon güncellenemedi", + "Change scope level of {accountProperty}" : "{accountProperty} kapsam düzeyini değiştir", + "Unable to update federation scope of the primary {accountProperty}" : "Birincil {accountProperty} birleşik kapsamı güncellenemedi", + "Unable to update federation scope of additional {accountProperty}" : "Ek {accountProperty} birleşik kapsamı güncellenemedi" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js index 3829998f573..62d211a6d16 100644 --- a/apps/settings/l10n/uk.js +++ b/apps/settings/l10n/uk.js @@ -115,6 +115,8 @@ OC.L10N.register( "Update to {version}" : "Оновити до {version}", "Remove" : "Вилучити", "Disable" : "Вимкнути", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Цій програмі не призначено мінімальної версії Nextcloud. Це буде помилка в майбутньому.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Цьому додатку не призначено максимальну версію Nextcloud. Це буде помилка в майбутньому.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Цей застосунок не буде встановлено, оскільки такі залежності неможливо виконати:", "View in store" : "Переглянути у крамниці застосунків", "Visit website" : "Перейти на вебсайт", @@ -156,6 +158,7 @@ OC.L10N.register( "Error while deleting the token" : "Помилка при вилученні токену", "App name" : "Ім'я застосунку", "Create new app password" : "Створіть новий пароль застосунку", + "Use the credentials below to configure your app or device." : "Використовуйте наведені нижче облікові дані, щоб налаштувати програму або пристрій.", "Username" : "Ім'я користувача", "Password" : "Пароль", "Done" : "Готово", @@ -169,15 +172,22 @@ OC.L10N.register( "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Після активації шифрування, всі файли завантажені на сервер з цього моменту, будуть зашифровані на сервері. Відключити шифрування пізніше можна буде тільки якщо активний модуль шифрування підтримує цю функцію, і при виконанні певних умов (наприклад, налаштований ключ відновлення).", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Саме по собі шифрування не гарантує безпеку системи. Будь ласка, перегляньте документацію, щоб отримати додаткову інформацію про те, як працює застосунок для шифрування, та про приклади його використання.", "Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Завжди корисно регулярно створювати резервні копії ваших даних, у разі шифрування обов’язково зробіть резервну копію ключів шифрування разом із вашими даними.", + "This is the final warning: Do you really want to enable encryption?" : "Це останнє попередження: Ви справді хочете ввімкнути шифрування?", + "No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрування не завантажено, увімкніть модуль шифрування в меню програми.", "Select default encryption module:" : "Обрати модуль шифрування за замовчуванням:", "Remove group" : "Вилучити групу", "You are about to remove the group {group}. The users will NOT be deleted." : "Ви збираєтеся вилучити групу {group}. Зауважте, користувачів групи НЕ буде вилучено.", "Please confirm the group removal " : "Будь ласка, підтвердіть вилучення групи", + "Current password" : "Поточний пароль", + "New password" : "Новий пароль", + "Change password" : "Змінити пароль", "Your email address" : "Ваша адреса електронної пошти", "No email address set" : "E-mail не вказано", "Language" : "Мова", "Help translate" : "Допомогти з перекладом", "No language set" : "Мова не встановлена", + "Your phone number" : "Ваш номер телефону", "Add" : "Додати", "You do not have permissions to see the details of this user" : "Ви не маєте прав для перегляду деталей про цього користувача", "Add new password" : "Встановити новий пароль", @@ -243,7 +253,7 @@ OC.L10N.register( "Not saved" : "Не збережено", "Sending…" : "Відправка...", "Email sent" : "Лист надіслано", - "Address" : "Адреса", + "Location" : "Місце", "Avatar" : "Світлина", "About" : "Про систему", "Full name" : "Повне ім'я", @@ -310,15 +320,7 @@ OC.L10N.register( "You are a member of the following groups:" : "Ви є членом наступних груп:", "You are using <strong>%s</strong>" : "Ви використовуєте <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Ви використовуєте <strong>%1$s</strong> з <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Ваш номер телефону", - "Your postal address" : "Ваша поштова адреса", - "It can take up to 24 hours before the account is displayed as verified." : "Підтвердження облікового запису може тривати до 24 годин.", - "Link https://…" : "Посилання https://…", - "Twitter handle @…" : "Ім'я в Twitter @…", "Locale" : "Локаль", - "Current password" : "Поточний пароль", - "New password" : "Новий пароль", - "Change password" : "Змінити пароль", "Migration in progress. Please wait until the migration is finished" : "Міграція триває. Будь ласка, зачекайте доки процес міграції завершиться", "Migration started …" : "Міграцію розпочато ...", "Couldn't remove app." : "Неможливо вилучити застосунок.", @@ -330,10 +332,17 @@ OC.L10N.register( "Test email settings" : "Тестувати налаштування ел. пошти", "Please read carefully before activating server-side encryption: " : "Будьте обережні під час активування шифрування на сервері:", "Enable encryption" : "Увімкнути шифрування", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Вам потрібно перенести ключі шифрування зі старого шифрування (ownCloud <= 8.0) на нове. Увімкніть «Модуль шифрування за замовчуванням» і запустіть «occ encryption:migrate»", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Вам потрібно перенести ключі шифрування зі старого шифрування (ownCloud <= 8.0) на нове.", "Start migration" : "Розпочати міграцію", "Last job ran %s." : "Останнє завдання запускалось %s.", "Recommended" : "Рекомендуємо", "days" : "днів", - "No display name set" : "Ім'я для відображення не вказано" + "No display name set" : "Ім'я для відображення не вказано", + "Address" : "Адреса", + "Your postal address" : "Ваша поштова адреса", + "It can take up to 24 hours before the account is displayed as verified." : "Підтвердження облікового запису може тривати до 24 годин.", + "Link https://…" : "Посилання https://…", + "Twitter handle @…" : "Ім'я в Twitter @…" }, "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json index a829d589266..f3d05de6f07 100644 --- a/apps/settings/l10n/uk.json +++ b/apps/settings/l10n/uk.json @@ -113,6 +113,8 @@ "Update to {version}" : "Оновити до {version}", "Remove" : "Вилучити", "Disable" : "Вимкнути", + "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Цій програмі не призначено мінімальної версії Nextcloud. Це буде помилка в майбутньому.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Цьому додатку не призначено максимальну версію Nextcloud. Це буде помилка в майбутньому.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Цей застосунок не буде встановлено, оскільки такі залежності неможливо виконати:", "View in store" : "Переглянути у крамниці застосунків", "Visit website" : "Перейти на вебсайт", @@ -154,6 +156,7 @@ "Error while deleting the token" : "Помилка при вилученні токену", "App name" : "Ім'я застосунку", "Create new app password" : "Створіть новий пароль застосунку", + "Use the credentials below to configure your app or device." : "Використовуйте наведені нижче облікові дані, щоб налаштувати програму або пристрій.", "Username" : "Ім'я користувача", "Password" : "Пароль", "Done" : "Готово", @@ -167,15 +170,22 @@ "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Після активації шифрування, всі файли завантажені на сервер з цього моменту, будуть зашифровані на сервері. Відключити шифрування пізніше можна буде тільки якщо активний модуль шифрування підтримує цю функцію, і при виконанні певних умов (наприклад, налаштований ключ відновлення).", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Саме по собі шифрування не гарантує безпеку системи. Будь ласка, перегляньте документацію, щоб отримати додаткову інформацію про те, як працює застосунок для шифрування, та про приклади його використання.", "Be aware that encryption always increases the file size." : "Майте на увазі, що шифрування завжди збільшує розмір файлів.", + "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Завжди корисно регулярно створювати резервні копії ваших даних, у разі шифрування обов’язково зробіть резервну копію ключів шифрування разом із вашими даними.", + "This is the final warning: Do you really want to enable encryption?" : "Це останнє попередження: Ви справді хочете ввімкнути шифрування?", + "No encryption module loaded, please enable an encryption module in the app menu." : "Модуль шифрування не завантажено, увімкніть модуль шифрування в меню програми.", "Select default encryption module:" : "Обрати модуль шифрування за замовчуванням:", "Remove group" : "Вилучити групу", "You are about to remove the group {group}. The users will NOT be deleted." : "Ви збираєтеся вилучити групу {group}. Зауважте, користувачів групи НЕ буде вилучено.", "Please confirm the group removal " : "Будь ласка, підтвердіть вилучення групи", + "Current password" : "Поточний пароль", + "New password" : "Новий пароль", + "Change password" : "Змінити пароль", "Your email address" : "Ваша адреса електронної пошти", "No email address set" : "E-mail не вказано", "Language" : "Мова", "Help translate" : "Допомогти з перекладом", "No language set" : "Мова не встановлена", + "Your phone number" : "Ваш номер телефону", "Add" : "Додати", "You do not have permissions to see the details of this user" : "Ви не маєте прав для перегляду деталей про цього користувача", "Add new password" : "Встановити новий пароль", @@ -241,7 +251,7 @@ "Not saved" : "Не збережено", "Sending…" : "Відправка...", "Email sent" : "Лист надіслано", - "Address" : "Адреса", + "Location" : "Місце", "Avatar" : "Світлина", "About" : "Про систему", "Full name" : "Повне ім'я", @@ -308,15 +318,7 @@ "You are a member of the following groups:" : "Ви є членом наступних груп:", "You are using <strong>%s</strong>" : "Ви використовуєте <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Ви використовуєте <strong>%1$s</strong> з <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Your phone number" : "Ваш номер телефону", - "Your postal address" : "Ваша поштова адреса", - "It can take up to 24 hours before the account is displayed as verified." : "Підтвердження облікового запису може тривати до 24 годин.", - "Link https://…" : "Посилання https://…", - "Twitter handle @…" : "Ім'я в Twitter @…", "Locale" : "Локаль", - "Current password" : "Поточний пароль", - "New password" : "Новий пароль", - "Change password" : "Змінити пароль", "Migration in progress. Please wait until the migration is finished" : "Міграція триває. Будь ласка, зачекайте доки процес міграції завершиться", "Migration started …" : "Міграцію розпочато ...", "Couldn't remove app." : "Неможливо вилучити застосунок.", @@ -328,10 +330,17 @@ "Test email settings" : "Тестувати налаштування ел. пошти", "Please read carefully before activating server-side encryption: " : "Будьте обережні під час активування шифрування на сервері:", "Enable encryption" : "Увімкнути шифрування", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Вам потрібно перенести ключі шифрування зі старого шифрування (ownCloud <= 8.0) на нове. Увімкніть «Модуль шифрування за замовчуванням» і запустіть «occ encryption:migrate»", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Вам потрібно перенести ключі шифрування зі старого шифрування (ownCloud <= 8.0) на нове.", "Start migration" : "Розпочати міграцію", "Last job ran %s." : "Останнє завдання запускалось %s.", "Recommended" : "Рекомендуємо", "days" : "днів", - "No display name set" : "Ім'я для відображення не вказано" + "No display name set" : "Ім'я для відображення не вказано", + "Address" : "Адреса", + "Your postal address" : "Ваша поштова адреса", + "It can take up to 24 hours before the account is displayed as verified." : "Підтвердження облікового запису може тривати до 24 годин.", + "Link https://…" : "Посилання https://…", + "Twitter handle @…" : "Ім'я в Twitter @…" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (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/settings/l10n/vi.js b/apps/settings/l10n/vi.js index e09b0eed383..ecc6a50f895 100644 --- a/apps/settings/l10n/vi.js +++ b/apps/settings/l10n/vi.js @@ -161,6 +161,9 @@ OC.L10N.register( "Remove group" : "Xóa nhóm", "You are about to remove the group {group}. The users will NOT be deleted." : "Bạn sắp xóa nhóm {group}. Người dùng sẽ KHÔNG bị xóa.", "Please confirm the group removal " : "Vui lòng xác nhận xóa nhóm", + "Current password" : "Mật khẩu cũ", + "New password" : "Mật khẩu mới", + "Change password" : "Đổi mật khẩu", "Your email address" : "Email của bạn", "Language" : "Ngôn ngữ", "Help translate" : "Hỗ trợ dịch thuật", @@ -212,7 +215,7 @@ OC.L10N.register( "Not saved" : "Chưa được lưu", "Sending…" : "Đang gửi...", "Email sent" : "Email đã được gửi", - "Address" : "Địa chỉ", + "Location" : "Vị trí", "Avatar" : "Hình đại diện", "About" : "Giới thiệu", "Full name" : "Tên đầy đủ", @@ -246,9 +249,6 @@ OC.L10N.register( "Allow resharing" : "Cho phép chia sẻ lại", "Upload new" : "Tải lên", "Remove image" : "Xóa ", - "Current password" : "Mật khẩu cũ", - "New password" : "Mật khẩu mới", - "Change password" : "Đổi mật khẩu", "Migration in progress. Please wait until the migration is finished" : "Chuyển đổi dữ liệu đang tiến hành. Vui lòng đợi cho đến khi quá trình di chuyển kết thúc", "Migration started …" : "Chuyển đổi dữ liệu đã bắt đầu ...", "Couldn't remove app." : "Không thể xóa ứng dụng", @@ -259,6 +259,7 @@ OC.L10N.register( "All languages" : "Tất cả ngôn ngữ", "Everyone" : "Tất cả mọi người", "Enable encryption" : "Bật mã hóa", - "days" : "ngày" + "days" : "ngày", + "Address" : "Địa chỉ" }, "nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json index ebac1da0337..cd8f6568533 100644 --- a/apps/settings/l10n/vi.json +++ b/apps/settings/l10n/vi.json @@ -159,6 +159,9 @@ "Remove group" : "Xóa nhóm", "You are about to remove the group {group}. The users will NOT be deleted." : "Bạn sắp xóa nhóm {group}. Người dùng sẽ KHÔNG bị xóa.", "Please confirm the group removal " : "Vui lòng xác nhận xóa nhóm", + "Current password" : "Mật khẩu cũ", + "New password" : "Mật khẩu mới", + "Change password" : "Đổi mật khẩu", "Your email address" : "Email của bạn", "Language" : "Ngôn ngữ", "Help translate" : "Hỗ trợ dịch thuật", @@ -210,7 +213,7 @@ "Not saved" : "Chưa được lưu", "Sending…" : "Đang gửi...", "Email sent" : "Email đã được gửi", - "Address" : "Địa chỉ", + "Location" : "Vị trí", "Avatar" : "Hình đại diện", "About" : "Giới thiệu", "Full name" : "Tên đầy đủ", @@ -244,9 +247,6 @@ "Allow resharing" : "Cho phép chia sẻ lại", "Upload new" : "Tải lên", "Remove image" : "Xóa ", - "Current password" : "Mật khẩu cũ", - "New password" : "Mật khẩu mới", - "Change password" : "Đổi mật khẩu", "Migration in progress. Please wait until the migration is finished" : "Chuyển đổi dữ liệu đang tiến hành. Vui lòng đợi cho đến khi quá trình di chuyển kết thúc", "Migration started …" : "Chuyển đổi dữ liệu đã bắt đầu ...", "Couldn't remove app." : "Không thể xóa ứng dụng", @@ -257,6 +257,7 @@ "All languages" : "Tất cả ngôn ngữ", "Everyone" : "Tất cả mọi người", "Enable encryption" : "Bật mã hóa", - "days" : "ngày" + "days" : "ngày", + "Address" : "Địa chỉ" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js index 4da37d9e33e..7707cbdca1e 100644 --- a/apps/settings/l10n/zh_CN.js +++ b/apps/settings/l10n/zh_CN.js @@ -161,6 +161,7 @@ OC.L10N.register( "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "特色应用由社区并在社区内开发。 它们提供了中心功能,并准备投入生产使用。", "Featured" : "精选", "Update to {update}" : "更新至 {update}", + "All apps are up-to-date." : "所有的应用程序都是最新的。", "Results from other categories" : "来自其他类别的结果", "No apps found for your version" : "未找到适合当前版本的应用", "Disable all" : "禁用全部", @@ -209,8 +210,13 @@ OC.L10N.register( "Copied!" : "已复制!", "Copy" : "复制", "Could not copy app password. Please copy it manually." : "无法复制应用密码。请手动复制。", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "为了使服务器正常工作,正确配置后台作业是很重要的。Cron 是推荐的设置。更多信息请参见文档。", + "Execute one task with each page loaded. Use case: Single user instance." : "每加载一个页面就执行一个任务。使用场景:单一用户实例。", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php 注册在一个 webcron 服务上,每 5 分钟通过 HTTP 调用 cron.php。使用场景:非常小的实例(1-5 个用户,取决于使用情况)。", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "为了运行该功能,您需要 PHP posix 扩展。请参考 {linkstart}PHP 文档{linkend} 获取更多信息。", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "使用系统 cron 服务,每 5 分钟调用 cron.php 文件。建议在所有实例中使用。", "Profile" : "个人资料", + "Enable or disable profile by default for new users." : "对新用户默认启用或禁用简介。", "Enable" : "启用", "Server-side encryption" : "服务器端加密", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "服务器端加密可以加密上传到此服务器的文件。这带来了诸如性能损失的限制,因此仅在需要时启用此功能。", @@ -226,11 +232,11 @@ OC.L10N.register( "Remove group" : "删除分组", "You are about to remove the group {group}. The users will NOT be deleted." : "您将要移除群组 {group}。组中的用户不会被删除。", "Please confirm the group removal " : "请确认移除群组", + "Current password" : "当前密码", + "New password" : "新密码", + "Change password" : "修改密码", "Your biography" : "个人小传", - "Unable to update biography" : "无法更新小传", "Your full name" : "你的全名", - "Unable to update full name" : "无法更新全名", - "No full name set" : "未设置全名", "Email options" : "电子邮件选项", "Primary email for password reset and notifications" : "用于重设密码和通知的主邮件", "Remove primary email" : "删除主邮件地址", @@ -248,13 +254,12 @@ OC.L10N.register( "No email address set" : "尚未设置 Email 地址", "Additional emails" : "附加邮箱地址", "Your headline" : "你的标题", - "Unable to update headline" : "无法更新标题", "Language" : "语言", "Help translate" : "帮助翻译", "Unable to update language" : "无法更新语言", "No language set" : "没有设置语言", "Your organisation" : "你的组织", - "Unable to update organisation" : "无法更新组织", + "Your phone number" : "您的电话号码", "Edit your Profile visibility" : "编辑个人资料可见性", "Enable Profile" : "编辑个人资料", "Unable to update profile enabled state" : "无法更新个人资料启用状态", @@ -262,9 +267,8 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "无法更新 {displayId} 的可见性", "Your role" : "你的角色", - "Unable to update role" : "无法更新角色", - "Unable to update federation scope of the primary {accountProperty}" : "无法更新主 {accountProperty} 的联盟范围", - "Unable to update federation scope of additional {accountProperty}" : "无法更新附加 {accountProperty} 的联盟范围", + "Your Twitter handle" : "您的 Twitter 账号", + "Your website" : "您的网站", "Add" : "添加", "You do not have permissions to see the details of this user" : "您没有权限查看该用户的详细信息", "Add new password" : "添加新的密码", @@ -342,7 +346,7 @@ OC.L10N.register( "Not saved" : "未保存", "Sending…" : "正在发送…", "Email sent" : "邮件已发送", - "Address" : "地址", + "Location" : "位置", "Avatar" : "头像", "About" : "关于", "Full name" : "全名", @@ -444,19 +448,7 @@ OC.L10N.register( "You are a member of the following groups:" : "您是以下群组的成员:", "You are using <strong>%s</strong>" : "您已经使用了 <strong>%s</strong> 存储空间", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您正在使用 <strong>%1$s</strong> ,来自 <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "更改电话号码的隐私级别", - "Your phone number" : "您的电话号码", - "Change privacy level of address" : "更改地址的隐私级别", - "Your postal address" : "您的邮寄地址", - "Change privacy level of website" : "更改网站的隐私级别", - "It can take up to 24 hours before the account is displayed as verified." : "在账号显示为已验证之前最多可能需要 24 小时。", - "Link https://…" : "链接 https://…", - "Change privacy level of Twitter profile" : "更改推特资料的隐私权限", - "Twitter handle @…" : "Twitter 用户名 @…", "Locale" : "本地", - "Current password" : "当前密码", - "New password" : "新密码", - "Change password" : "修改密码", "Use a second factor besides your password to increase security for your account." : "使用除您密码之外的第二种方法来增强您账号的安全性。", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "如果您使用第三方应用程序连接到 Nextcloud,请确保在启用第二因素身份验证之前为每个应用程序创建和配置应用程序密码。", "Migration in progress. Please wait until the migration is finished" : "正在进行迁移。请稍等,直到迁移完成", @@ -482,6 +474,7 @@ OC.L10N.register( "Some jobs didn’t execute since %s. Please consider switching to system cron." : "自 %s 以来,有些作业没有执行。 请考虑切换到系统计划任务。", "Last job ran %s." : "上次定时任务执行于:%s。", "Background job didn’t run yet!" : "后台任务当前没有运行!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "为了使服务器正常工作,正确配置后台作业是很重要的。\"Cron\" 是推荐的设置。更多信息请参见文档。", "Pick background job setting" : "选择后台任务设置", "Recommended" : "推荐", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。", @@ -489,6 +482,23 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "在输入全名或电子邮件地址时允许用户名自动完成 (忽略丢失的电话簿匹配和同属一个小组的匹配)", "Change privacy level of full name" : "更改全名的隐私级别", "No display name set" : "不显示名称设置", - "Change scope level of {accountProperty}" : "更改 {accountProperty} 的范围" + "Change privacy level of phone number" : "更改电话号码的隐私级别", + "Address" : "地址", + "Change privacy level of address" : "更改地址的隐私级别", + "Your postal address" : "您的邮寄地址", + "Change privacy level of website" : "更改网站的隐私级别", + "It can take up to 24 hours before the account is displayed as verified." : "在账号显示为已验证之前最多可能需要 24 小时。", + "Link https://…" : "链接 https://…", + "Change privacy level of Twitter profile" : "更改推特资料的隐私权限", + "Twitter handle @…" : "Twitter 用户名 @…", + "Unable to update biography" : "无法更新小传", + "Unable to update full name" : "无法更新全名", + "No full name set" : "未设置全名", + "Unable to update headline" : "无法更新标题", + "Unable to update organisation" : "无法更新组织", + "Unable to update role" : "无法更新角色", + "Change scope level of {accountProperty}" : "更改 {accountProperty} 的范围", + "Unable to update federation scope of the primary {accountProperty}" : "无法更新主 {accountProperty} 的联盟范围", + "Unable to update federation scope of additional {accountProperty}" : "无法更新附加 {accountProperty} 的联盟范围" }, "nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json index c6305fcdb82..a04b3a7ceb0 100644 --- a/apps/settings/l10n/zh_CN.json +++ b/apps/settings/l10n/zh_CN.json @@ -159,6 +159,7 @@ "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "特色应用由社区并在社区内开发。 它们提供了中心功能,并准备投入生产使用。", "Featured" : "精选", "Update to {update}" : "更新至 {update}", + "All apps are up-to-date." : "所有的应用程序都是最新的。", "Results from other categories" : "来自其他类别的结果", "No apps found for your version" : "未找到适合当前版本的应用", "Disable all" : "禁用全部", @@ -207,8 +208,13 @@ "Copied!" : "已复制!", "Copy" : "复制", "Could not copy app password. Please copy it manually." : "无法复制应用密码。请手动复制。", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "为了使服务器正常工作,正确配置后台作业是很重要的。Cron 是推荐的设置。更多信息请参见文档。", + "Execute one task with each page loaded. Use case: Single user instance." : "每加载一个页面就执行一个任务。使用场景:单一用户实例。", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php 注册在一个 webcron 服务上,每 5 分钟通过 HTTP 调用 cron.php。使用场景:非常小的实例(1-5 个用户,取决于使用情况)。", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "为了运行该功能,您需要 PHP posix 扩展。请参考 {linkstart}PHP 文档{linkend} 获取更多信息。", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "使用系统 cron 服务,每 5 分钟调用 cron.php 文件。建议在所有实例中使用。", "Profile" : "个人资料", + "Enable or disable profile by default for new users." : "对新用户默认启用或禁用简介。", "Enable" : "启用", "Server-side encryption" : "服务器端加密", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "服务器端加密可以加密上传到此服务器的文件。这带来了诸如性能损失的限制,因此仅在需要时启用此功能。", @@ -224,11 +230,11 @@ "Remove group" : "删除分组", "You are about to remove the group {group}. The users will NOT be deleted." : "您将要移除群组 {group}。组中的用户不会被删除。", "Please confirm the group removal " : "请确认移除群组", + "Current password" : "当前密码", + "New password" : "新密码", + "Change password" : "修改密码", "Your biography" : "个人小传", - "Unable to update biography" : "无法更新小传", "Your full name" : "你的全名", - "Unable to update full name" : "无法更新全名", - "No full name set" : "未设置全名", "Email options" : "电子邮件选项", "Primary email for password reset and notifications" : "用于重设密码和通知的主邮件", "Remove primary email" : "删除主邮件地址", @@ -246,13 +252,12 @@ "No email address set" : "尚未设置 Email 地址", "Additional emails" : "附加邮箱地址", "Your headline" : "你的标题", - "Unable to update headline" : "无法更新标题", "Language" : "语言", "Help translate" : "帮助翻译", "Unable to update language" : "无法更新语言", "No language set" : "没有设置语言", "Your organisation" : "你的组织", - "Unable to update organisation" : "无法更新组织", + "Your phone number" : "您的电话号码", "Edit your Profile visibility" : "编辑个人资料可见性", "Enable Profile" : "编辑个人资料", "Unable to update profile enabled state" : "无法更新个人资料启用状态", @@ -260,9 +265,8 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "无法更新 {displayId} 的可见性", "Your role" : "你的角色", - "Unable to update role" : "无法更新角色", - "Unable to update federation scope of the primary {accountProperty}" : "无法更新主 {accountProperty} 的联盟范围", - "Unable to update federation scope of additional {accountProperty}" : "无法更新附加 {accountProperty} 的联盟范围", + "Your Twitter handle" : "您的 Twitter 账号", + "Your website" : "您的网站", "Add" : "添加", "You do not have permissions to see the details of this user" : "您没有权限查看该用户的详细信息", "Add new password" : "添加新的密码", @@ -340,7 +344,7 @@ "Not saved" : "未保存", "Sending…" : "正在发送…", "Email sent" : "邮件已发送", - "Address" : "地址", + "Location" : "位置", "Avatar" : "头像", "About" : "关于", "Full name" : "全名", @@ -442,19 +446,7 @@ "You are a member of the following groups:" : "您是以下群组的成员:", "You are using <strong>%s</strong>" : "您已经使用了 <strong>%s</strong> 存储空间", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您正在使用 <strong>%1$s</strong> ,来自 <strong>%2$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "更改电话号码的隐私级别", - "Your phone number" : "您的电话号码", - "Change privacy level of address" : "更改地址的隐私级别", - "Your postal address" : "您的邮寄地址", - "Change privacy level of website" : "更改网站的隐私级别", - "It can take up to 24 hours before the account is displayed as verified." : "在账号显示为已验证之前最多可能需要 24 小时。", - "Link https://…" : "链接 https://…", - "Change privacy level of Twitter profile" : "更改推特资料的隐私权限", - "Twitter handle @…" : "Twitter 用户名 @…", "Locale" : "本地", - "Current password" : "当前密码", - "New password" : "新密码", - "Change password" : "修改密码", "Use a second factor besides your password to increase security for your account." : "使用除您密码之外的第二种方法来增强您账号的安全性。", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "如果您使用第三方应用程序连接到 Nextcloud,请确保在启用第二因素身份验证之前为每个应用程序创建和配置应用程序密码。", "Migration in progress. Please wait until the migration is finished" : "正在进行迁移。请稍等,直到迁移完成", @@ -480,6 +472,7 @@ "Some jobs didn’t execute since %s. Please consider switching to system cron." : "自 %s 以来,有些作业没有执行。 请考虑切换到系统计划任务。", "Last job ran %s." : "上次定时任务执行于:%s。", "Background job didn’t run yet!" : "后台任务当前没有运行!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "为了使服务器正常工作,正确配置后台作业是很重要的。\"Cron\" 是推荐的设置。更多信息请参见文档。", "Pick background job setting" : "选择后台任务设置", "Recommended" : "推荐", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。", @@ -487,6 +480,23 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "在输入全名或电子邮件地址时允许用户名自动完成 (忽略丢失的电话簿匹配和同属一个小组的匹配)", "Change privacy level of full name" : "更改全名的隐私级别", "No display name set" : "不显示名称设置", - "Change scope level of {accountProperty}" : "更改 {accountProperty} 的范围" + "Change privacy level of phone number" : "更改电话号码的隐私级别", + "Address" : "地址", + "Change privacy level of address" : "更改地址的隐私级别", + "Your postal address" : "您的邮寄地址", + "Change privacy level of website" : "更改网站的隐私级别", + "It can take up to 24 hours before the account is displayed as verified." : "在账号显示为已验证之前最多可能需要 24 小时。", + "Link https://…" : "链接 https://…", + "Change privacy level of Twitter profile" : "更改推特资料的隐私权限", + "Twitter handle @…" : "Twitter 用户名 @…", + "Unable to update biography" : "无法更新小传", + "Unable to update full name" : "无法更新全名", + "No full name set" : "未设置全名", + "Unable to update headline" : "无法更新标题", + "Unable to update organisation" : "无法更新组织", + "Unable to update role" : "无法更新角色", + "Change scope level of {accountProperty}" : "更改 {accountProperty} 的范围", + "Unable to update federation scope of the primary {accountProperty}" : "无法更新主 {accountProperty} 的联盟范围", + "Unable to update federation scope of additional {accountProperty}" : "无法更新附加 {accountProperty} 的联盟范围" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js index 0515b8b0b09..38a5083ffbf 100644 --- a/apps/settings/l10n/zh_HK.js +++ b/apps/settings/l10n/zh_HK.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "移除群組", "You are about to remove the group {group}. The users will NOT be deleted." : "您將要移除群組 {group}。用戶將不會被刪除。", "Please confirm the group removal " : "請確認移除群組", + "Current password" : "目前密碼", + "New password" : "新密碼", + "Change password" : "更改密碼", "Your biography" : "個人小傳", - "Unable to update biography" : "無法更新小傳", "Your full name" : "您的全名", - "Unable to update full name" : "無法更新全名", - "No full name set" : "未設定全名", "Email options" : "電子郵件通知選項", "Primary email for password reset and notifications" : "用於密碼重設和通告信件的主要電郵地址", "Remove primary email" : "刪除主要電郵地址", @@ -287,13 +287,13 @@ OC.L10N.register( "No email address set" : "未設定電郵地址", "Additional emails" : "其他電郵地址", "Your headline" : "您的標題", - "Unable to update headline" : "無法更新標題", "Language" : "語言", "Help translate" : "協助翻譯", "Unable to update language" : "無法更新語言", "No language set" : "未設定語言", + "Your location" : "您的位置", "Your organisation" : "您的機構", - "Unable to update organisation" : "無法更新機構", + "Your phone number" : "您的電話號碼", "Edit your Profile visibility" : "編輯個人檔案能見度", "Enable Profile" : "啟用簡介", "Unable to update profile enabled state" : "無法更新個人資料啟用狀態", @@ -301,10 +301,13 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "無法更新 {displayId} 的可見性", "Your role" : "你的角色", - "Unable to update role" : "無法更新角色", - "Change scope level of {accountProperty}, current scope is {scope}" : "更改 {accountProperty} 的範圍級別,當前範圍為 {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "無法更新主要 {accountProperty} 的聯盟範圍", - "Unable to update federation scope of additional {accountProperty}" : "無法更新額外 {accountProperty} 的聯盟範圍", + "Your Twitter handle" : "您的 Twitter 帳號", + "Your website" : "您的網站", + "No {property} set" : "沒有設置 {property} ", + "Unable to update {property}" : "無法更新 (property)", + "Change scope level of {property}, current scope is {scope}" : "更改 {property} 的範圍級別,當前範圍為 {scope}", + "Unable to update federation scope of the primary {property}" : "無法更新主要 {property} 的聯盟範圍", + "Unable to update federation scope of additional {property}" : "無法更新額外 {property} 的聯盟範圍", "Add additional email" : "添加額外電郵地址", "Add" : "新增", "You do not have permissions to see the details of this user" : "您沒有檢視此用戶詳細資料的權限", @@ -383,7 +386,7 @@ OC.L10N.register( "Not saved" : "未儲存", "Sending…" : "正在傳送……", "Email sent" : "電子郵件已寄出", - "Address" : "地址", + "Location" : "位置", "Avatar" : "頭像", "About" : "關於", "Full name" : "全名", @@ -490,19 +493,7 @@ OC.L10N.register( "You are a member of the following groups:" : "你是下列群組的成員︰", "You are using <strong>%s</strong>" : "您已使用了 <strong>%s</strong> 的存儲空間", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您已使用了 <strong>%2$s</strong> 中的 <strong>%1$s</strong>(<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "更改電話號碼的私隱級別", - "Your phone number" : "您的電話號碼", - "Change privacy level of address" : "更改地址的私隱級別", - "Your postal address" : "您的郵遞地址", - "Change privacy level of website" : "更改網站的私隱級別", - "It can take up to 24 hours before the account is displayed as verified." : "該賬戶最多可能需要24小時才能顯示為已驗證。", - "Link https://…" : "連結 https://…", - "Change privacy level of Twitter profile" : "更改 Twitter proile 的私隱級別", - "Twitter handle @…" : "Twitter 用戶名稱 @...", "Locale" : "地區設定", - "Current password" : "目前密碼", - "New password" : "新密碼", - "Change password" : "更改密碼", "Use a second factor besides your password to increase security for your account." : "使用密碼以外的第二因數來增強您賬戶的安全性。", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "如果您使用第三方應用程式來連線到 Nextcloud,請確保在啟用雙重認證前為每個應用程式設定應用程式密碼。", "Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束", @@ -536,7 +527,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電郵地址時,允許用戶名自動完成(忽略缺少的電話簿匹配項,並且位於同一群組中)", "Change privacy level of full name" : "更改全名的私隱級別", "No display name set" : "未設定顯示名稱", + "Change privacy level of phone number" : "更改電話號碼的私隱級別", + "Address" : "地址", + "Change privacy level of address" : "更改地址的私隱級別", + "Your postal address" : "您的郵遞地址", + "Change privacy level of website" : "更改網站的私隱級別", + "It can take up to 24 hours before the account is displayed as verified." : "該賬戶最多可能需要24小時才能顯示為已驗證。", + "Link https://…" : "連結 https://…", + "Change privacy level of Twitter profile" : "更改 Twitter proile 的私隱級別", + "Twitter handle @…" : "Twitter 用戶名稱 @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "幾乎超過了可用的 OPcache 密鑰的最大數量。為確保所有腳本都可以保存在緩存中,建議將 <code>opcache.max_accelerated_files</code> 應用於您的 PHP 配置,其值高於 <code>%s</code>。", - "Change scope level of {accountProperty}" : "更改 {accountProperty} 的範圍" + "Unable to update biography" : "無法更新小傳", + "Unable to update full name" : "無法更新全名", + "No full name set" : "未設定全名", + "Unable to update headline" : "無法更新標題", + "Unable to update organisation" : "無法更新機構", + "Unable to update role" : "無法更新角色", + "Change scope level of {accountProperty}" : "更改 {accountProperty} 的範圍", + "Unable to update federation scope of the primary {accountProperty}" : "無法更新主要 {accountProperty} 的聯盟範圍", + "Unable to update federation scope of additional {accountProperty}" : "無法更新額外 {accountProperty} 的聯盟範圍" }, "nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json index a5ffcbd8ae6..c46e315201b 100644 --- a/apps/settings/l10n/zh_HK.json +++ b/apps/settings/l10n/zh_HK.json @@ -263,11 +263,11 @@ "Remove group" : "移除群組", "You are about to remove the group {group}. The users will NOT be deleted." : "您將要移除群組 {group}。用戶將不會被刪除。", "Please confirm the group removal " : "請確認移除群組", + "Current password" : "目前密碼", + "New password" : "新密碼", + "Change password" : "更改密碼", "Your biography" : "個人小傳", - "Unable to update biography" : "無法更新小傳", "Your full name" : "您的全名", - "Unable to update full name" : "無法更新全名", - "No full name set" : "未設定全名", "Email options" : "電子郵件通知選項", "Primary email for password reset and notifications" : "用於密碼重設和通告信件的主要電郵地址", "Remove primary email" : "刪除主要電郵地址", @@ -285,13 +285,13 @@ "No email address set" : "未設定電郵地址", "Additional emails" : "其他電郵地址", "Your headline" : "您的標題", - "Unable to update headline" : "無法更新標題", "Language" : "語言", "Help translate" : "協助翻譯", "Unable to update language" : "無法更新語言", "No language set" : "未設定語言", + "Your location" : "您的位置", "Your organisation" : "您的機構", - "Unable to update organisation" : "無法更新機構", + "Your phone number" : "您的電話號碼", "Edit your Profile visibility" : "編輯個人檔案能見度", "Enable Profile" : "啟用簡介", "Unable to update profile enabled state" : "無法更新個人資料啟用狀態", @@ -299,10 +299,13 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "無法更新 {displayId} 的可見性", "Your role" : "你的角色", - "Unable to update role" : "無法更新角色", - "Change scope level of {accountProperty}, current scope is {scope}" : "更改 {accountProperty} 的範圍級別,當前範圍為 {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "無法更新主要 {accountProperty} 的聯盟範圍", - "Unable to update federation scope of additional {accountProperty}" : "無法更新額外 {accountProperty} 的聯盟範圍", + "Your Twitter handle" : "您的 Twitter 帳號", + "Your website" : "您的網站", + "No {property} set" : "沒有設置 {property} ", + "Unable to update {property}" : "無法更新 (property)", + "Change scope level of {property}, current scope is {scope}" : "更改 {property} 的範圍級別,當前範圍為 {scope}", + "Unable to update federation scope of the primary {property}" : "無法更新主要 {property} 的聯盟範圍", + "Unable to update federation scope of additional {property}" : "無法更新額外 {property} 的聯盟範圍", "Add additional email" : "添加額外電郵地址", "Add" : "新增", "You do not have permissions to see the details of this user" : "您沒有檢視此用戶詳細資料的權限", @@ -381,7 +384,7 @@ "Not saved" : "未儲存", "Sending…" : "正在傳送……", "Email sent" : "電子郵件已寄出", - "Address" : "地址", + "Location" : "位置", "Avatar" : "頭像", "About" : "關於", "Full name" : "全名", @@ -488,19 +491,7 @@ "You are a member of the following groups:" : "你是下列群組的成員︰", "You are using <strong>%s</strong>" : "您已使用了 <strong>%s</strong> 的存儲空間", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您已使用了 <strong>%2$s</strong> 中的 <strong>%1$s</strong>(<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "更改電話號碼的私隱級別", - "Your phone number" : "您的電話號碼", - "Change privacy level of address" : "更改地址的私隱級別", - "Your postal address" : "您的郵遞地址", - "Change privacy level of website" : "更改網站的私隱級別", - "It can take up to 24 hours before the account is displayed as verified." : "該賬戶最多可能需要24小時才能顯示為已驗證。", - "Link https://…" : "連結 https://…", - "Change privacy level of Twitter profile" : "更改 Twitter proile 的私隱級別", - "Twitter handle @…" : "Twitter 用戶名稱 @...", "Locale" : "地區設定", - "Current password" : "目前密碼", - "New password" : "新密碼", - "Change password" : "更改密碼", "Use a second factor besides your password to increase security for your account." : "使用密碼以外的第二因數來增強您賬戶的安全性。", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "如果您使用第三方應用程式來連線到 Nextcloud,請確保在啟用雙重認證前為每個應用程式設定應用程式密碼。", "Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束", @@ -534,7 +525,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電郵地址時,允許用戶名自動完成(忽略缺少的電話簿匹配項,並且位於同一群組中)", "Change privacy level of full name" : "更改全名的私隱級別", "No display name set" : "未設定顯示名稱", + "Change privacy level of phone number" : "更改電話號碼的私隱級別", + "Address" : "地址", + "Change privacy level of address" : "更改地址的私隱級別", + "Your postal address" : "您的郵遞地址", + "Change privacy level of website" : "更改網站的私隱級別", + "It can take up to 24 hours before the account is displayed as verified." : "該賬戶最多可能需要24小時才能顯示為已驗證。", + "Link https://…" : "連結 https://…", + "Change privacy level of Twitter profile" : "更改 Twitter proile 的私隱級別", + "Twitter handle @…" : "Twitter 用戶名稱 @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "幾乎超過了可用的 OPcache 密鑰的最大數量。為確保所有腳本都可以保存在緩存中,建議將 <code>opcache.max_accelerated_files</code> 應用於您的 PHP 配置,其值高於 <code>%s</code>。", - "Change scope level of {accountProperty}" : "更改 {accountProperty} 的範圍" + "Unable to update biography" : "無法更新小傳", + "Unable to update full name" : "無法更新全名", + "No full name set" : "未設定全名", + "Unable to update headline" : "無法更新標題", + "Unable to update organisation" : "無法更新機構", + "Unable to update role" : "無法更新角色", + "Change scope level of {accountProperty}" : "更改 {accountProperty} 的範圍", + "Unable to update federation scope of the primary {accountProperty}" : "無法更新主要 {accountProperty} 的聯盟範圍", + "Unable to update federation scope of additional {accountProperty}" : "無法更新額外 {accountProperty} 的聯盟範圍" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js index add9cbf95fa..fd24f94fb70 100644 --- a/apps/settings/l10n/zh_TW.js +++ b/apps/settings/l10n/zh_TW.js @@ -265,11 +265,11 @@ OC.L10N.register( "Remove group" : "移除群組", "You are about to remove the group {group}. The users will NOT be deleted." : "您將要移除群組 {group}。使用者將不會被刪除。", "Please confirm the group removal " : "請確認移除群組", + "Current password" : "目前密碼", + "New password" : "新密碼", + "Change password" : "變更密碼", "Your biography" : "您的自傳", - "Unable to update biography" : "無法更新自傳", "Your full name" : "您的全名", - "Unable to update full name" : "無法更新全名", - "No full name set" : "未設定全名", "Email options" : "電子郵件選項", "Primary email for password reset and notifications" : "用於密碼重設與通知的主要電子郵件地址", "Remove primary email" : "移除主要電子郵件地址", @@ -287,13 +287,13 @@ OC.L10N.register( "No email address set" : "未設定電子郵件信箱", "Additional emails" : "額外的電子郵件", "Your headline" : "您的標題", - "Unable to update headline" : "無法更新標題", "Language" : "語言", "Help translate" : "協助翻譯", "Unable to update language" : "無法更新語言", "No language set" : "未設定語言", + "Your location" : "您的位置", "Your organisation" : "您的組織", - "Unable to update organisation" : "無法更新組織", + "Your phone number" : "您的電話號碼", "Edit your Profile visibility" : "編輯您的個人資料能見度", "Enable Profile" : "啟用個人檔案", "Unable to update profile enabled state" : "無法更新個人檔案啟用狀態", @@ -301,10 +301,13 @@ OC.L10N.register( "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "無法更新 {displayId} 的能見度", "Your role" : "您的角色", - "Unable to update role" : "無法更新角色", - "Change scope level of {accountProperty}, current scope is {scope}" : "變更 {accountProperty} 的範圍層級,目前的範圍為 {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "無法更新主要 {accountProperty} 的聯盟範圍", - "Unable to update federation scope of additional {accountProperty}" : "無法更新額外 {accountProperty} 的聯盟範圍", + "Your Twitter handle" : "您的 Twitter 帳號", + "Your website" : "您的網站", + "No {property} set" : "未設定 {property}", + "Unable to update {property}" : "無法更新 {property}", + "Change scope level of {property}, current scope is {scope}" : "變更 {property} 的範圍層級,目前的範圍是 {scope}", + "Unable to update federation scope of the primary {property}" : "無法更新主要 {property} 的聯盟範圍", + "Unable to update federation scope of additional {property}" : "無法更新額外 {property} 的聯盟範圍", "Add additional email" : "新增額外電子郵件", "Add" : "新增", "You do not have permissions to see the details of this user" : "您沒有檢視此使用者詳細資料的權限", @@ -383,7 +386,7 @@ OC.L10N.register( "Not saved" : "未儲存", "Sending…" : "正在傳送……", "Email sent" : "電子郵件已寄出", - "Address" : "地址", + "Location" : "路徑", "Avatar" : "大頭照", "About" : "關於", "Full name" : "全名", @@ -490,19 +493,7 @@ OC.L10N.register( "You are a member of the following groups:" : "你是下列群組的成員︰", "You are using <strong>%s</strong>" : "您正在使用 <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您已使用 <strong>%2$s</strong> 中的 <strong>%1$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "變更電話號碼的隱私等級", - "Your phone number" : "您的電話號碼", - "Change privacy level of address" : "變更地址的隱私等級", - "Your postal address" : "您的郵遞地址", - "Change privacy level of website" : "變更網站的隱私等級", - "It can take up to 24 hours before the account is displayed as verified." : "帳號在顯示為已驗證前可能需要最多24小時。", - "Link https://…" : "連結 https://...", - "Change privacy level of Twitter profile" : "變更 Twitter 個人資料的隱私等級", - "Twitter handle @…" : "Twitter 使用者名稱 @...", "Locale" : "地區設定", - "Current password" : "目前密碼", - "New password" : "新密碼", - "Change password" : "變更密碼", "Use a second factor besides your password to increase security for your account." : "使用密碼以外的第二因素來增強您帳號的安全性。", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "如果您使用第三方應用程式來連線到 Nextcloud,請確保在啟用雙因素驗證前為每個應用程式設定應用程式密碼。", "Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束", @@ -536,7 +527,24 @@ OC.L10N.register( "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電子郵件地址時,允許使用者名稱自動完成(忽略缺少的通訊錄相符,以及在同一個群組中的)", "Change privacy level of full name" : "變更全名的隱私等級", "No display name set" : "未設定顯示名稱", + "Change privacy level of phone number" : "變更電話號碼的隱私等級", + "Address" : "地址", + "Change privacy level of address" : "變更地址的隱私等級", + "Your postal address" : "您的郵遞地址", + "Change privacy level of website" : "變更網站的隱私等級", + "It can take up to 24 hours before the account is displayed as verified." : "帳號在顯示為已驗證前可能需要最多24小時。", + "Link https://…" : "連結 https://...", + "Change privacy level of Twitter profile" : "變更 Twitter 個人資料的隱私等級", + "Twitter handle @…" : "Twitter 使用者名稱 @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "幾乎超過了 OPcache 鍵的最大數量。為確保幾乎所有指令稿都可以保留在快取中,建議在您的 PHP 設定中的 <code>opcache.max_accelerated_files</code> 套用高於 <code>%s</code> 的值。", - "Change scope level of {accountProperty}" : "變更 {accountProperty} 的範圍層級" + "Unable to update biography" : "無法更新自傳", + "Unable to update full name" : "無法更新全名", + "No full name set" : "未設定全名", + "Unable to update headline" : "無法更新標題", + "Unable to update organisation" : "無法更新組織", + "Unable to update role" : "無法更新角色", + "Change scope level of {accountProperty}" : "變更 {accountProperty} 的範圍層級", + "Unable to update federation scope of the primary {accountProperty}" : "無法更新主要 {accountProperty} 的聯盟範圍", + "Unable to update federation scope of additional {accountProperty}" : "無法更新額外 {accountProperty} 的聯盟範圍" }, "nplurals=1; plural=0;"); diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json index 9a9139ffdff..2b161a32946 100644 --- a/apps/settings/l10n/zh_TW.json +++ b/apps/settings/l10n/zh_TW.json @@ -263,11 +263,11 @@ "Remove group" : "移除群組", "You are about to remove the group {group}. The users will NOT be deleted." : "您將要移除群組 {group}。使用者將不會被刪除。", "Please confirm the group removal " : "請確認移除群組", + "Current password" : "目前密碼", + "New password" : "新密碼", + "Change password" : "變更密碼", "Your biography" : "您的自傳", - "Unable to update biography" : "無法更新自傳", "Your full name" : "您的全名", - "Unable to update full name" : "無法更新全名", - "No full name set" : "未設定全名", "Email options" : "電子郵件選項", "Primary email for password reset and notifications" : "用於密碼重設與通知的主要電子郵件地址", "Remove primary email" : "移除主要電子郵件地址", @@ -285,13 +285,13 @@ "No email address set" : "未設定電子郵件信箱", "Additional emails" : "額外的電子郵件", "Your headline" : "您的標題", - "Unable to update headline" : "無法更新標題", "Language" : "語言", "Help translate" : "協助翻譯", "Unable to update language" : "無法更新語言", "No language set" : "未設定語言", + "Your location" : "您的位置", "Your organisation" : "您的組織", - "Unable to update organisation" : "無法更新組織", + "Your phone number" : "您的電話號碼", "Edit your Profile visibility" : "編輯您的個人資料能見度", "Enable Profile" : "啟用個人檔案", "Unable to update profile enabled state" : "無法更新個人檔案啟用狀態", @@ -299,10 +299,13 @@ "{displayId}" : "{displayId}", "Unable to update visibility of {displayId}" : "無法更新 {displayId} 的能見度", "Your role" : "您的角色", - "Unable to update role" : "無法更新角色", - "Change scope level of {accountProperty}, current scope is {scope}" : "變更 {accountProperty} 的範圍層級,目前的範圍為 {scope}", - "Unable to update federation scope of the primary {accountProperty}" : "無法更新主要 {accountProperty} 的聯盟範圍", - "Unable to update federation scope of additional {accountProperty}" : "無法更新額外 {accountProperty} 的聯盟範圍", + "Your Twitter handle" : "您的 Twitter 帳號", + "Your website" : "您的網站", + "No {property} set" : "未設定 {property}", + "Unable to update {property}" : "無法更新 {property}", + "Change scope level of {property}, current scope is {scope}" : "變更 {property} 的範圍層級,目前的範圍是 {scope}", + "Unable to update federation scope of the primary {property}" : "無法更新主要 {property} 的聯盟範圍", + "Unable to update federation scope of additional {property}" : "無法更新額外 {property} 的聯盟範圍", "Add additional email" : "新增額外電子郵件", "Add" : "新增", "You do not have permissions to see the details of this user" : "您沒有檢視此使用者詳細資料的權限", @@ -381,7 +384,7 @@ "Not saved" : "未儲存", "Sending…" : "正在傳送……", "Email sent" : "電子郵件已寄出", - "Address" : "地址", + "Location" : "路徑", "Avatar" : "大頭照", "About" : "關於", "Full name" : "全名", @@ -488,19 +491,7 @@ "You are a member of the following groups:" : "你是下列群組的成員︰", "You are using <strong>%s</strong>" : "您正在使用 <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "您已使用 <strong>%2$s</strong> 中的 <strong>%1$s</strong> (<strong>%3$s %%</strong>)", - "Change privacy level of phone number" : "變更電話號碼的隱私等級", - "Your phone number" : "您的電話號碼", - "Change privacy level of address" : "變更地址的隱私等級", - "Your postal address" : "您的郵遞地址", - "Change privacy level of website" : "變更網站的隱私等級", - "It can take up to 24 hours before the account is displayed as verified." : "帳號在顯示為已驗證前可能需要最多24小時。", - "Link https://…" : "連結 https://...", - "Change privacy level of Twitter profile" : "變更 Twitter 個人資料的隱私等級", - "Twitter handle @…" : "Twitter 使用者名稱 @...", "Locale" : "地區設定", - "Current password" : "目前密碼", - "New password" : "新密碼", - "Change password" : "變更密碼", "Use a second factor besides your password to increase security for your account." : "使用密碼以外的第二因素來增強您帳號的安全性。", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "如果您使用第三方應用程式來連線到 Nextcloud,請確保在啟用雙因素驗證前為每個應用程式設定應用程式密碼。", "Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束", @@ -534,7 +525,24 @@ "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電子郵件地址時,允許使用者名稱自動完成(忽略缺少的通訊錄相符,以及在同一個群組中的)", "Change privacy level of full name" : "變更全名的隱私等級", "No display name set" : "未設定顯示名稱", + "Change privacy level of phone number" : "變更電話號碼的隱私等級", + "Address" : "地址", + "Change privacy level of address" : "變更地址的隱私等級", + "Your postal address" : "您的郵遞地址", + "Change privacy level of website" : "變更網站的隱私等級", + "It can take up to 24 hours before the account is displayed as verified." : "帳號在顯示為已驗證前可能需要最多24小時。", + "Link https://…" : "連結 https://...", + "Change privacy level of Twitter profile" : "變更 Twitter 個人資料的隱私等級", + "Twitter handle @…" : "Twitter 使用者名稱 @...", "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "幾乎超過了 OPcache 鍵的最大數量。為確保幾乎所有指令稿都可以保留在快取中,建議在您的 PHP 設定中的 <code>opcache.max_accelerated_files</code> 套用高於 <code>%s</code> 的值。", - "Change scope level of {accountProperty}" : "變更 {accountProperty} 的範圍層級" + "Unable to update biography" : "無法更新自傳", + "Unable to update full name" : "無法更新全名", + "No full name set" : "未設定全名", + "Unable to update headline" : "無法更新標題", + "Unable to update organisation" : "無法更新組織", + "Unable to update role" : "無法更新角色", + "Change scope level of {accountProperty}" : "變更 {accountProperty} 的範圍層級", + "Unable to update federation scope of the primary {accountProperty}" : "無法更新主要 {accountProperty} 的聯盟範圍", + "Unable to update federation scope of additional {accountProperty}" : "無法更新額外 {accountProperty} 的聯盟範圍" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/settings/lib/Activity/GroupProvider.php b/apps/settings/lib/Activity/GroupProvider.php index a1709de5c3f..466bb9abeee 100644 --- a/apps/settings/lib/Activity/GroupProvider.php +++ b/apps/settings/lib/Activity/GroupProvider.php @@ -51,8 +51,6 @@ class GroupProvider implements IProvider { /** @var string[] */ protected $groupDisplayNames = []; - /** @var string[] */ - protected $userDisplayNames = []; public function __construct(L10nFactory $l10n, @@ -169,32 +167,11 @@ class GroupProvider implements IProvider { return $gid; } - /** - * @param string $uid - * @return array - */ protected function generateUserParameter(string $uid): array { - if (!isset($this->displayNames[$uid])) { - $this->userDisplayNames[$uid] = $this->getDisplayName($uid); - } - return [ 'type' => 'user', 'id' => $uid, - 'name' => $this->userDisplayNames[$uid], + 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } - - /** - * @param string $uid - * @return string - */ - protected function getDisplayName(string $uid): string { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } else { - return $uid; - } - } } diff --git a/apps/settings/lib/Activity/Provider.php b/apps/settings/lib/Activity/Provider.php index a6314fdfb11..7d8a7f0da9a 100644 --- a/apps/settings/lib/Activity/Provider.php +++ b/apps/settings/lib/Activity/Provider.php @@ -66,9 +66,6 @@ class Provider implements IProvider { /** @var IManager */ private $activityManager; - /** @var string[] cached displayNames - key is the UID and value the displayname */ - protected $displayNames = []; - public function __construct(IFactory $languageFactory, IURLGenerator $url, IUserManager $userManager, @@ -206,23 +203,10 @@ class Provider implements IProvider { } protected function generateUserParameter(string $uid): array { - if (!isset($this->displayNames[$uid])) { - $this->displayNames[$uid] = $this->getDisplayName($uid); - } - return [ 'type' => 'user', 'id' => $uid, - 'name' => $this->displayNames[$uid], + 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } - - protected function getDisplayName(string $uid): string { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } - - return $uid; - } } diff --git a/apps/settings/lib/Controller/ChangePasswordController.php b/apps/settings/lib/Controller/ChangePasswordController.php index 41f2584721c..a25f0b0e59b 100644 --- a/apps/settings/lib/Controller/ChangePasswordController.php +++ b/apps/settings/lib/Controller/ChangePasswordController.php @@ -49,28 +49,16 @@ use OCP\IUserManager; use OCP\IUserSession; class ChangePasswordController extends Controller { - - /** @var string */ - private $userId; - - /** @var IUserManager */ - private $userManager; - - /** @var IL10N */ - private $l; - - /** @var GroupManager */ - private $groupManager; - - /** @var Session */ - private $userSession; - - /** @var IAppManager */ - private $appManager; + private ?string $userId; + private IUserManager $userManager; + private IL10N $l; + private GroupManager $groupManager; + private Session $userSession; + private IAppManager $appManager; public function __construct(string $appName, IRequest $request, - string $userId, + ?string $userId, IUserManager $userManager, IUserSession $userSession, IGroupManager $groupManager, diff --git a/apps/settings/lib/Controller/CommonSettingsTrait.php b/apps/settings/lib/Controller/CommonSettingsTrait.php index 2eb7b4ccf99..4a15b0c7a32 100644 --- a/apps/settings/lib/Controller/CommonSettingsTrait.php +++ b/apps/settings/lib/Controller/CommonSettingsTrait.php @@ -134,7 +134,12 @@ trait CommonSettingsTrait { } private function getIndexResponse($type, $section) { - $this->navigationManager->setActiveEntry('settings'); + if ($type === 'personal') { + $this->navigationManager->setActiveEntry('settings'); + } elseif ($type === 'admin') { + $this->navigationManager->setActiveEntry('admin_settings'); + } + $templateParams = []; $templateParams = array_merge($templateParams, $this->getNavigationParameters($type, $section)); $templateParams = array_merge($templateParams, $this->getSettings($section)); diff --git a/apps/settings/lib/Controller/HelpController.php b/apps/settings/lib/Controller/HelpController.php index 8a62fb9b58c..b8780ae40ba 100644 --- a/apps/settings/lib/Controller/HelpController.php +++ b/apps/settings/lib/Controller/HelpController.php @@ -79,7 +79,7 @@ class HelpController extends Controller { } $documentationUrl = $this->urlGenerator->getAbsoluteURL( - $this->urlGenerator->linkTo('core', 'doc/' . $mode . '/index.html') + $this->urlGenerator->linkTo('', 'core/doc/' . $mode . '/index.html') ); $urlUserDocs = $this->urlGenerator->linkToRoute('settings.Help.help', ['mode' => 'user']); diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php index 4bac8e67fb7..11d3f8b1e09 100644 --- a/apps/settings/lib/Settings/Personal/PersonalInfo.php +++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php @@ -135,7 +135,6 @@ class PersonalInfo implements ISettings { $totalSpace = \OC_Helper::humanFileSize($storageInfo['total']); } - $languageParameters = $this->getLanguageMap($user); $localeParameters = $this->getLocales($user); $messageParameters = $this->getMessageParameters($account); @@ -148,38 +147,26 @@ class PersonalInfo implements ISettings { 'federationEnabled' => $federationEnabled, 'lookupServerUploadEnabled' => $lookupServerUploadEnabled, 'avatarScope' => $account->getProperty(IAccountManager::PROPERTY_AVATAR)->getScope(), - 'displayNameChangeSupported' => $user->canChangeDisplayName(), - 'displayName' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getValue(), - 'displayNameScope' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getScope(), - 'email' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getValue(), - 'emailScope' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getScope(), - 'emailVerification' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getVerified(), - 'phone' => $account->getProperty(IAccountManager::PROPERTY_PHONE)->getValue(), - 'phoneScope' => $account->getProperty(IAccountManager::PROPERTY_PHONE)->getScope(), - 'address' => $account->getProperty(IAccountManager::PROPERTY_ADDRESS)->getValue(), - 'addressScope' => $account->getProperty(IAccountManager::PROPERTY_ADDRESS)->getScope(), - 'website' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getValue(), - 'websiteScope' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getScope(), - 'websiteVerification' => $account->getProperty(IAccountManager::PROPERTY_WEBSITE)->getVerified(), - 'twitter' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getValue(), - 'twitterScope' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getScope(), - 'twitterVerification' => $account->getProperty(IAccountManager::PROPERTY_TWITTER)->getVerified(), 'groups' => $this->getGroups($user), 'isFairUseOfFreePushService' => $this->isFairUseOfFreePushService(), 'profileEnabledGlobally' => $this->profileManager->isProfileEnabled(), - ] + $messageParameters + $languageParameters + $localeParameters; + ] + $messageParameters + $localeParameters; $personalInfoParameters = [ 'userId' => $uid, - 'displayNameMap' => $this->getDisplayNameMap($account), + 'displayName' => $this->getProperty($account, IAccountManager::PROPERTY_DISPLAYNAME), 'emailMap' => $this->getEmailMap($account), + 'phone' => $this->getProperty($account, IAccountManager::PROPERTY_PHONE), + 'location' => $this->getProperty($account, IAccountManager::PROPERTY_ADDRESS), + 'website' => $this->getProperty($account, IAccountManager::PROPERTY_WEBSITE), + 'twitter' => $this->getProperty($account, IAccountManager::PROPERTY_TWITTER), 'languageMap' => $this->getLanguageMap($user), 'profileEnabledGlobally' => $this->profileManager->isProfileEnabled(), 'profileEnabled' => $this->profileManager->isProfileEnabled($user), - 'organisationMap' => $this->getOrganisationMap($account), - 'roleMap' => $this->getRoleMap($account), - 'headlineMap' => $this->getHeadlineMap($account), - 'biographyMap' => $this->getBiographyMap($account), + 'organisation' => $this->getProperty($account, IAccountManager::PROPERTY_ORGANISATION), + 'role' => $this->getProperty($account, IAccountManager::PROPERTY_ROLE), + 'headline' => $this->getProperty($account, IAccountManager::PROPERTY_HEADLINE), + 'biography' => $this->getProperty($account, IAccountManager::PROPERTY_BIOGRAPHY), ]; $accountParameters = [ @@ -208,75 +195,18 @@ class PersonalInfo implements ISettings { } /** - * returns the primary biography in an - * associative array - */ - private function getBiographyMap(IAccount $account): array { - $primaryBiography = [ - 'value' => $account->getProperty(IAccountManager::PROPERTY_BIOGRAPHY)->getValue(), - 'scope' => $account->getProperty(IAccountManager::PROPERTY_BIOGRAPHY)->getScope(), - 'verified' => $account->getProperty(IAccountManager::PROPERTY_BIOGRAPHY)->getVerified(), - ]; - - $biographyMap = [ - 'primaryBiography' => $primaryBiography, - ]; - - return $biographyMap; - } - - /** - * returns the primary organisation in an - * associative array - */ - private function getOrganisationMap(IAccount $account): array { - $primaryOrganisation = [ - 'value' => $account->getProperty(IAccountManager::PROPERTY_ORGANISATION)->getValue(), - 'scope' => $account->getProperty(IAccountManager::PROPERTY_ORGANISATION)->getScope(), - 'verified' => $account->getProperty(IAccountManager::PROPERTY_ORGANISATION)->getVerified(), - ]; - - $organisationMap = [ - 'primaryOrganisation' => $primaryOrganisation, - ]; - - return $organisationMap; - } - - /** - * returns the primary headline in an - * associative array - */ - private function getHeadlineMap(IAccount $account): array { - $primaryHeadline = [ - 'value' => $account->getProperty(IAccountManager::PROPERTY_HEADLINE)->getValue(), - 'scope' => $account->getProperty(IAccountManager::PROPERTY_HEADLINE)->getScope(), - 'verified' => $account->getProperty(IAccountManager::PROPERTY_HEADLINE)->getVerified(), - ]; - - $headlineMap = [ - 'primaryHeadline' => $primaryHeadline, - ]; - - return $headlineMap; - } - - /** - * returns the primary role in an + * returns the property data in an * associative array */ - private function getRoleMap(IAccount $account): array { - $primaryRole = [ - 'value' => $account->getProperty(IAccountManager::PROPERTY_ROLE)->getValue(), - 'scope' => $account->getProperty(IAccountManager::PROPERTY_ROLE)->getScope(), - 'verified' => $account->getProperty(IAccountManager::PROPERTY_ROLE)->getVerified(), - ]; - - $roleMap = [ - 'primaryRole' => $primaryRole, + private function getProperty(IAccount $account, string $property): array { + $property = [ + 'name' => $account->getProperty($property)->getName(), + 'value' => $account->getProperty($property)->getValue(), + 'scope' => $account->getProperty($property)->getScope(), + 'verified' => $account->getProperty($property)->getVerified(), ]; - return $roleMap; + return $property; } /** @@ -315,31 +245,12 @@ class PersonalInfo implements ISettings { } /** - * returns the primary display name in an - * associative array - * - * NOTE may be extended to provide additional display names (i.e. aliases) in the future - */ - private function getDisplayNameMap(IAccount $account): array { - $primaryDisplayName = [ - 'value' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getValue(), - 'scope' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getScope(), - 'verified' => $account->getProperty(IAccountManager::PROPERTY_DISPLAYNAME)->getVerified(), - ]; - - $displayNameMap = [ - 'primaryDisplayName' => $primaryDisplayName, - ]; - - return $displayNameMap; - } - - /** * returns the primary email and additional emails in an * associative array */ private function getEmailMap(IAccount $account): array { $systemEmail = [ + 'name' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getName(), 'value' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getValue(), 'scope' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getScope(), 'verified' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getVerified(), @@ -348,6 +259,7 @@ class PersonalInfo implements ISettings { $additionalEmails = array_map( function (IAccountProperty $property) { return [ + 'name' => $property->getName(), 'value' => $property->getValue(), 'scope' => $property->getScope(), 'verified' => $property->getVerified(), diff --git a/apps/settings/src/components/AdminDelegating.vue b/apps/settings/src/components/AdminDelegating.vue index 9dd0d66cc31..90f42f73ab5 100644 --- a/apps/settings/src/components/AdminDelegating.vue +++ b/apps/settings/src/components/AdminDelegating.vue @@ -1,5 +1,5 @@ <template> - <SettingsSection :title="t('settings', 'Administration privileges')" + <NcSettingsSection :title="t('settings', 'Administration privileges')" :description="t('settings', 'Here you can decide which group can access certain sections of the administration settings.')" :doc-url="authorizedSettingsDocLink"> <div class="setting-list"> @@ -8,19 +8,19 @@ <GroupSelect :available-groups="availableGroups" :authorized-groups="authorizedGroups" :setting="setting" /> </div> </div> - </SettingsSection> + </NcSettingsSection> </template> <script> import GroupSelect from './AdminDelegation/GroupSelect' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' import { loadState } from '@nextcloud/initial-state' export default { name: 'AdminDelegating', components: { GroupSelect, - SettingsSection, + NcSettingsSection, }, data() { return { diff --git a/apps/settings/src/components/AdminDelegation/GroupSelect.vue b/apps/settings/src/components/AdminDelegation/GroupSelect.vue index f9db50b3cc6..52ecd6c4846 100644 --- a/apps/settings/src/components/AdminDelegation/GroupSelect.vue +++ b/apps/settings/src/components/AdminDelegation/GroupSelect.vue @@ -1,5 +1,5 @@ <template> - <Multiselect v-model="selected" + <NcMultiselect v-model="selected" class="group-multiselect" :placeholder="t('settings', 'None')" track-by="gid" @@ -11,7 +11,7 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import { generateUrl } from '@nextcloud/router' import axios from '@nextcloud/axios' import { showError } from '@nextcloud/dialogs' @@ -20,7 +20,7 @@ import logger from '../../logger' export default { name: 'GroupSelect', components: { - Multiselect, + NcMultiselect, }, props: { availableGroups: { diff --git a/apps/settings/src/components/AdminTwoFactor.vue b/apps/settings/src/components/AdminTwoFactor.vue index 435348f30ab..950b857b07a 100644 --- a/apps/settings/src/components/AdminTwoFactor.vue +++ b/apps/settings/src/components/AdminTwoFactor.vue @@ -1,17 +1,17 @@ <template> - <SettingsSection :title="t('settings', 'Two-Factor Authentication')" + <NcSettingsSection :title="t('settings', 'Two-Factor Authentication')" :description="t('settings', 'Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system.')" :doc-url="twoFactorAdminDoc"> <p v-if="loading"> <span class="icon-loading-small two-factor-loading" /> <span>{{ t('settings', 'Enforce two-factor authentication') }}</span> </p> - <CheckboxRadioSwitch v-else + <NcCheckboxRadioSwitch v-else id="two-factor-enforced" :checked.sync="enforced" type="switch"> {{ t('settings', 'Enforce two-factor authentication') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <template v-if="enforced"> <h3>{{ t('settings', 'Limit to groups') }}</h3> {{ t('settings', 'Enforcement of two-factor authentication can be set for certain groups only.') }} @@ -19,7 +19,7 @@ {{ t('settings', 'Two-factor authentication is enforced for all members of the following groups.') }} </p> <p> - <Multiselect v-model="enforcedGroups" + <NcMultiselect v-model="enforcedGroups" :options="groups" :placeholder="t('settings', 'Enforced groups')" :disabled="loading" @@ -34,7 +34,7 @@ {{ t('settings', 'Two-factor authentication is not enforced for members of the following groups.') }} </p> <p> - <Multiselect v-model="excludedGroups" + <NcMultiselect v-model="excludedGroups" :options="groups" :placeholder="t('settings', 'Excluded groups')" :disabled="loading" @@ -53,22 +53,22 @@ </p> </template> <p class="top-margin"> - <Button v-if="dirty" + <NcButton v-if="dirty" type="primary" :disabled="loading" @click="saveChanges"> {{ t('settings', 'Save changes') }} - </Button> + </NcButton> </p> - </SettingsSection> + </NcSettingsSection> </template> <script> import axios from '@nextcloud/axios' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' -import Button from '@nextcloud/vue/dist/Components/Button' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' import { loadState } from '@nextcloud/initial-state' import _ from 'lodash' @@ -77,10 +77,10 @@ import { generateUrl, generateOcsUrl } from '@nextcloud/router' export default { name: 'AdminTwoFactor', components: { - Multiselect, - Button, - CheckboxRadioSwitch, - SettingsSection, + NcMultiselect, + NcButton, + NcCheckboxRadioSwitch, + NcSettingsSection, }, data() { return { diff --git a/apps/settings/src/components/AppDetails.vue b/apps/settings/src/components/AppDetails.vue index f4faa36eed4..93ccf253ac5 100644 --- a/apps/settings/src/components/AppDetails.vue +++ b/apps/settings/src/components/AppDetails.vue @@ -35,7 +35,7 @@ class="group_select" :title="t('settings', 'All')" value=""> - <Multiselect v-if="isLimitedToGroups(app)" + <NcMultiselect v-if="isLimitedToGroups(app)" :options="groups" :value="appGroups" :options-limit="5" @@ -50,7 +50,7 @@ @remove="removeGroupLimitation" @search-change="asyncFindGroup"> <span slot="noResult">{{ t('settings', 'No results') }}</span> - </Multiselect> + </NcMultiselect> </div> <div class="app-details__actions-manage"> <input v-if="app.update" @@ -144,7 +144,7 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import AppManagement from '../mixins/AppManagement' import PrefixMixin from './PrefixMixin' @@ -154,7 +154,7 @@ export default { name: 'AppDetails', components: { - Multiselect, + NcMultiselect, Markdown, }, mixins: [AppManagement, PrefixMixin], diff --git a/apps/settings/src/components/AppList.vue b/apps/settings/src/components/AppList.vue index 3a0c1fe51d0..bb7c932613e 100644 --- a/apps/settings/src/components/AppList.vue +++ b/apps/settings/src/components/AppList.vue @@ -26,12 +26,12 @@ <template v-if="useListView"> <div v-if="showUpdateAll" class="toolbar"> {{ n('settings', '%n app has an update available', '%n apps have an update available', counter) }} - <Button v-if="showUpdateAll" + <NcButton v-if="showUpdateAll" id="app-list-update-all" type="primary" @click="updateAll"> {{ n('settings', 'Update', 'Update all', counter) }} - </Button> + </NcButton> </div> <div v-if="!showUpdateAll" class="toolbar"> @@ -107,13 +107,13 @@ import AppItem from './AppList/AppItem' import PrefixMixin from './PrefixMixin' import pLimit from 'p-limit' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' export default { name: 'AppList', components: { AppItem, - Button, + NcButton, }, mixins: [PrefixMixin], props: ['category', 'app', 'search'], diff --git a/apps/settings/src/components/AuthToken.vue b/apps/settings/src/components/AuthToken.vue index fa89ed65260..5a48f5d0d8c 100644 --- a/apps/settings/src/components/AuthToken.vue +++ b/apps/settings/src/components/AuthToken.vue @@ -40,55 +40,55 @@ <span v-tooltip="lastActivity" class="last-activity">{{ lastActivityRelative }}</span> </td> <td class="more"> - <Actions v-if="!token.current" + <NcActions v-if="!token.current" v-tooltip.auto="{ content: t('settings', 'Device settings'), container: 'body' }" :open.sync="actionOpen"> - <ActionCheckbox v-if="token.type === 1" + <NcActionCheckbox v-if="token.type === 1" :checked="token.scope.filesystem" @change.stop.prevent="$emit('toggle-scope', token, 'filesystem', !token.scope.filesystem)"> <!-- TODO: add text/longtext with some description --> {{ t('settings', 'Allow filesystem access') }} - </ActionCheckbox> - <ActionButton v-if="token.canRename" + </NcActionCheckbox> + <NcActionButton v-if="token.canRename" icon="icon-rename" @click.stop.prevent="startRename"> <!-- TODO: add text/longtext with some description --> {{ t('settings', 'Rename') }} - </ActionButton> + </NcActionButton> <!-- revoke & wipe --> <template v-if="token.canDelete"> <template v-if="token.type !== 2"> - <ActionButton icon="icon-delete" + <NcActionButton icon="icon-delete" @click.stop.prevent="revoke"> <!-- TODO: add text/longtext with some description --> {{ t('settings', 'Revoke') }} - </ActionButton> - <ActionButton icon="icon-delete" + </NcActionButton> + <NcActionButton icon="icon-delete" @click.stop.prevent="wipe"> {{ t('settings', 'Wipe device') }} - </ActionButton> + </NcActionButton> </template> - <ActionButton v-else-if="token.type === 2" + <NcActionButton v-else-if="token.type === 2" icon="icon-delete" :title="t('settings', 'Revoke')" @click.stop.prevent="revoke"> {{ t('settings', 'Revoking this token might prevent the wiping of your device if it has not started the wipe yet.') }} - </ActionButton> + </NcActionButton> </template> - </Actions> + </NcActions> </td> </tr> </template> <script> import { - Actions, - ActionButton, - ActionCheckbox, + NcActions, + NcActionButton, + NcActionCheckbox, } from '@nextcloud/vue' // When using capture groups the following parts are extracted the first is used as the version number, the second as the OS @@ -158,9 +158,9 @@ const iconMap = { export default { name: 'AuthToken', components: { - Actions, - ActionButton, - ActionCheckbox, + NcActions, + NcActionButton, + NcActionCheckbox, }, props: { token: { diff --git a/apps/settings/src/components/AuthTokenSetupDialogue.vue b/apps/settings/src/components/AuthTokenSetupDialogue.vue index 6500f533881..5a706b153b9 100644 --- a/apps/settings/src/components/AuthTokenSetupDialogue.vue +++ b/apps/settings/src/components/AuthTokenSetupDialogue.vue @@ -20,32 +20,36 @@ --> <template> - <div v-if="!adding"> + <div v-if="!adding" class="row spacing"> + <!-- Port to TextField component when available --> <input v-model="deviceName" type="text" :maxlength="120" :disabled="loading" :placeholder="t('settings', 'App name')" @keydown.enter="submit"> - <Button :disabled="loading" + <NcButton :disabled="loading || deviceName.length === 0" + type="primary" @click="submit"> {{ t('settings', 'Create new app password') }} - </Button> + </NcButton> </div> - <div v-else> + <div v-else class="spacing"> {{ t('settings', 'Use the credentials below to configure your app or device.') }} {{ t('settings', 'For security reasons this password will only be shown once.') }} <div class="app-password-row"> - <span class="app-password-label">{{ t('settings', 'Username') }}</span> - <input :value="loginName" + <label for="app-username" class="app-password-label">{{ t('settings', 'Username') }}</label> + <input id="app-username" + :value="loginName" type="text" class="monospaced" readonly="readonly" @focus="selectInput"> </div> <div class="app-password-row"> - <span class="app-password-label">{{ t('settings', 'Password') }}</span> - <input ref="appPassword" + <label for="app-password" class="app-password-label">{{ t('settings', 'Password') }}</label> + <input id="app-password" + ref="appPassword" :value="appPassword" type="text" class="monospaced" @@ -59,9 +63,9 @@ class="icon icon-clippy" @mouseover="hoveringCopyButton = true" @mouseleave="hoveringCopyButton = false" /> - <Button @click="reset"> + <NcButton @click="reset"> {{ t('settings', 'Done') }} - </Button> + </NcButton> </div> <div class="app-password-row"> <span class="app-password-label" /> @@ -79,13 +83,13 @@ import QR from '@chenfengyuan/vue-qrcode' import confirmPassword from '@nextcloud/password-confirmation' import { getRootUrl } from '@nextcloud/router' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' export default { name: 'AuthTokenSetupDialogue', components: { QR, - Button, + NcButton, }, props: { add: { @@ -180,7 +184,8 @@ export default { <style lang="scss" scoped> .app-password-row { - display: table-row; + display: flex; + align-items: center; .icon { background-size: 16px 16px; @@ -198,6 +203,14 @@ export default { padding-right: 1em; text-align: right; vertical-align: middle; + width: 100px; + } + + .row input { + height: 44px !important; + padding: 7px 12px; + margin-right: 12px; + width: 200px; } .monospaced { @@ -210,4 +223,12 @@ export default { margin: 3px 3px 3px 3px; } + .row { + display: flex; + align-items: center; + } + + .spacing { + padding-top: 16px; + } </style> diff --git a/apps/settings/src/components/BasicSettings/BackgroundJob.vue b/apps/settings/src/components/BasicSettings/BackgroundJob.vue index 07f5c5cab4c..3b3c0c08342 100644 --- a/apps/settings/src/components/BasicSettings/BackgroundJob.vue +++ b/apps/settings/src/components/BasicSettings/BackgroundJob.vue @@ -21,7 +21,7 @@ --> <template> - <SettingsSection :title="t('settings', 'Background jobs')" + <NcSettingsSection :title="t('settings', 'Background jobs')" :description="t('settings', 'For the server to work properly, it\'s important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information.')" :doc-url="backgroundJobsDocUrl"> <template v-if="lastCron !== 0"> @@ -46,33 +46,33 @@ {{ t('settings', 'Background job did not run yet!') }} </span> - <CheckboxRadioSwitch type="radio" + <NcCheckboxRadioSwitch type="radio" :checked.sync="backgroundJobsMode" name="backgroundJobsMode" value="ajax" class="ajaxSwitch" @update:checked="onBackgroundJobModeChanged"> {{ t('settings', 'AJAX') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <em>{{ t('settings', 'Execute one task with each page loaded. Use case: Single user instance.') }}</em> - <CheckboxRadioSwitch type="radio" + <NcCheckboxRadioSwitch type="radio" :checked.sync="backgroundJobsMode" name="backgroundJobsMode" value="webcron" @update:checked="onBackgroundJobModeChanged"> {{ t('settings', 'Webcron') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <em>{{ t('settings', 'cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage).') }}</em> - <CheckboxRadioSwitch v-if="cliBasedCronPossible" + <NcCheckboxRadioSwitch v-if="cliBasedCronPossible" type="radio" :checked.sync="backgroundJobsMode" value="cron" name="backgroundJobsMode" @update:checked="onBackgroundJobModeChanged"> {{ t('settings', 'Cron (Recommended)') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <em v-if="cliBasedCronPossible">{{ cronLabel }}</em> <em v-else> {{ t('settings', 'To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.', { @@ -80,14 +80,14 @@ linkend: '</a>', }) }} </em> - </SettingsSection> + </NcSettingsSection> </template> <script> import { loadState } from '@nextcloud/initial-state' import { showError } from '@nextcloud/dialogs' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' import moment from '@nextcloud/moment' import axios from '@nextcloud/axios' import { generateOcsUrl } from '@nextcloud/router' @@ -104,8 +104,8 @@ export default { name: 'BackgroundJob', components: { - CheckboxRadioSwitch, - SettingsSection, + NcCheckboxRadioSwitch, + NcSettingsSection, }, data() { diff --git a/apps/settings/src/components/BasicSettings/ProfileSettings.vue b/apps/settings/src/components/BasicSettings/ProfileSettings.vue index 8a487e4e1ea..0519e60a30b 100644 --- a/apps/settings/src/components/BasicSettings/ProfileSettings.vue +++ b/apps/settings/src/components/BasicSettings/ProfileSettings.vue @@ -31,11 +31,11 @@ {{ t('settings', 'Enable or disable profile by default for new users.') }} </p> - <CheckboxRadioSwitch type="switch" + <NcCheckboxRadioSwitch type="switch" :checked.sync="initialProfileEnabledByDefault" @update:checked="onProfileDefaultChange"> {{ t('settings', 'Enable') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> </div> </template> @@ -47,7 +47,7 @@ import { saveProfileDefault } from '../../service/ProfileService' import { validateBoolean } from '../../utils/validate' import logger from '../../logger' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' const profileEnabledByDefault = loadState('settings', 'profileEnabledByDefault', true) @@ -55,7 +55,7 @@ export default { name: 'ProfileSettings', components: { - CheckboxRadioSwitch, + NcCheckboxRadioSwitch, }, data() { diff --git a/apps/settings/src/components/Encryption.vue b/apps/settings/src/components/Encryption.vue index aef44164e2f..834f9b1c79b 100644 --- a/apps/settings/src/components/Encryption.vue +++ b/apps/settings/src/components/Encryption.vue @@ -21,15 +21,15 @@ --> <template> - <SettingsSection :title="t('settings', 'Server-side encryption')" + <NcSettingsSection :title="t('settings', 'Server-side encryption')" :description="t('settings', 'Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed.')" :doc-url="encryptionAdminDoc"> - <CheckboxRadioSwitch :checked="encryptionEnabled || shouldDisplayWarning" + <NcCheckboxRadioSwitch :checked="encryptionEnabled || shouldDisplayWarning" :disabled="encryptionEnabled" type="switch" @update:checked="displayWarning"> {{ t('settings', 'Enable server-side encryption') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> <div v-if="shouldDisplayWarning && !encryptionEnabled" class="notecard warning" role="alert"> <p>{{ t('settings', 'Please read carefully before activating server-side encryption:') }}</p> @@ -43,10 +43,10 @@ <p class="margin-bottom"> {{ t('settings', 'This is the final warning: Do you really want to enable encryption?') }} </p> - <Button type="primary" + <NcButton type="primary" @click="enableEncryption()"> {{ t('settings', "Enable encryption") }} - </Button> + </NcButton> </div> <div v-if="encryptionEnabled"> @@ -57,7 +57,7 @@ <template v-else> <h3>{{ t('settings', 'Select default encryption module:') }}</h3> <fieldset> - <CheckboxRadioSwitch v-for="(module, id) in encryptionModules" + <NcCheckboxRadioSwitch v-for="(module, id) in encryptionModules" :key="id" :checked.sync="defaultCheckedModule" :value="id" @@ -65,21 +65,21 @@ name="default_encryption_module" @update:checked="checkDefaultModule"> {{ module.displayName }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> </fieldset> </template> </div> <div v-else-if="externalBackendsEnabled" v-html="migrationMessage" /> </div> - </SettingsSection> + </NcSettingsSection> </template> <script> import axios from '@nextcloud/axios' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' -import Button from '@nextcloud/vue/dist/Components/Button' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' import { loadState } from '@nextcloud/initial-state' import { getLoggerBuilder } from '@nextcloud/logger' @@ -95,9 +95,9 @@ const logger = getLoggerBuilder() export default { name: 'Encryption', components: { - CheckboxRadioSwitch, - SettingsSection, - Button, + NcCheckboxRadioSwitch, + NcSettingsSection, + NcButton, }, data() { const encryptionModules = loadState('settings', 'encryption-modules') diff --git a/apps/settings/src/components/GroupListItem.vue b/apps/settings/src/components/GroupListItem.vue index 173d3a45f5b..12bdcedcd8f 100644 --- a/apps/settings/src/components/GroupListItem.vue +++ b/apps/settings/src/components/GroupListItem.vue @@ -21,7 +21,7 @@ --> <template> - <AppNavigationItem :key="id" + <NcAppNavigationItem :key="id" :exact="true" :title="title" :to="{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }" @@ -30,41 +30,41 @@ :menu-open="openGroupMenu" @update:menuOpen="handleGroupMenuOpen"> <template #counter> - <CounterBubble v-if="count"> + <NcCounterBubble v-if="count"> {{ count }} - </CounterBubble> + </NcCounterBubble> </template> <template #actions> - <ActionInput v-if="id !== 'admin' && id !== 'disabled' && settings.isAdmin" + <NcActionInput v-if="id !== 'admin' && id !== 'disabled' && settings.isAdmin" ref="displayNameInput" icon="icon-edit" type="text" :value="title" @submit="renameGroup(id)"> {{ t('settings', 'Rename group') }} - </ActionInput> - <ActionButton v-if="id !== 'admin' && id !== 'disabled' && settings.isAdmin" + </NcActionInput> + <NcActionButton v-if="id !== 'admin' && id !== 'disabled' && settings.isAdmin" icon="icon-delete" @click="removeGroup(id)"> {{ t('settings', 'Remove group') }} - </ActionButton> + </NcActionButton> </template> - </AppNavigationItem> + </NcAppNavigationItem> </template> <script> -import ActionInput from '@nextcloud/vue/dist/Components/ActionInput' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import CounterBubble from '@nextcloud/vue/dist/Components/CounterBubble' -import AppNavigationItem from '@nextcloud/vue/dist/Components/AppNavigationItem' +import NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcCounterBubble from '@nextcloud/vue/dist/Components/NcCounterBubble' +import NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem' export default { name: 'GroupListItem', components: { - ActionInput, - ActionButton, - CounterBubble, - AppNavigationItem, + NcActionInput, + NcActionButton, + NcCounterBubble, + NcAppNavigationItem, }, props: { id: { diff --git a/apps/settings/src/components/PasswordSection.vue b/apps/settings/src/components/PasswordSection.vue new file mode 100644 index 00000000000..b68de0365e0 --- /dev/null +++ b/apps/settings/src/components/PasswordSection.vue @@ -0,0 +1,98 @@ +<!-- + - @copyright 2022 Carl Schwan <carl@carlschwan.eu> + - + - @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/>. + --> +<template> + <NcSettingsSection :title="t('settings', 'Password')"> + <form id="passwordform" method="POST" @submit.prevent="changePassword"> + <NcPasswordField id="old-pass" + :label="t('settings', 'Current password')" + :label-visible="true" + name="oldpassword" + :value.sync="oldPass" + autocomplete="current-password" + autocapitalize="none" + autocorrect="off" /> + + <NcPasswordField id="new-pass" + :label="t('settings', 'New password')" + :label-visible="true" + :value.sync="newPass" + :maxlength="469" + autocomplete="new-password" + autocapitalize="none" + autocorrect="off" + :check-password-strength="true" /> + + <NcButton type="primary" + native-type="submit" + :disabled="newPass.length === 0 || oldPass.length === 0"> + {{ t('settings', 'Change password') }} + </NcButton> + </form> + </NcSettingsSection> +</template> + +<script> +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js' +import NcButton from '@nextcloud/vue/dist/Components/NcButton.js' +import NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js' +import axios from '@nextcloud/axios' +import { generateUrl } from '@nextcloud/router' +import { showSuccess, showError } from '@nextcloud/dialogs' + +export default { + name: 'PasswordSection', + components: { + NcSettingsSection, + NcButton, + NcPasswordField, + }, + data() { + return { + oldPass: '', + newPass: '', + } + }, + methods: { + changePassword() { + axios.post(generateUrl('/settings/personal/changepassword'), { + oldpassword: this.oldPass, + newpassword: this.newPass, + }) + .then(res => res.data) + .then(data => { + if (data.status === 'error') { + this.errorMessage = data.data.message + showError(data.data.message) + } else { + showSuccess(data.data.message) + } + }) + }, + }, +} +</script> + +<style> + #passwordform { + display: flex; + flex-direction: column; + gap: 1rem; + max-width: 400px; + } +</style> diff --git a/apps/settings/src/components/PersonalInfo/BiographySection.vue b/apps/settings/src/components/PersonalInfo/BiographySection.vue new file mode 100644 index 00000000000..30c240dee1a --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/BiographySection.vue @@ -0,0 +1,51 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <AccountPropertySection v-bind.sync="biography" + :placeholder="t('settings', 'Your biography')" + :multi-line="true" /> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' + +import AccountPropertySection from './shared/AccountPropertySection.vue' + +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' + +const { biography } = loadState('settings', 'personalInfoParameters', {}) + +export default { + name: 'BiographySection', + + components: { + AccountPropertySection, + }, + + data() { + return { + biography: { ...biography, readable: NAME_READABLE_ENUM[biography.name] }, + } + }, +} +</script> diff --git a/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue b/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue deleted file mode 100644 index 48c2bf4ff77..00000000000 --- a/apps/settings/src/components/PersonalInfo/BiographySection/Biography.vue +++ /dev/null @@ -1,184 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <div class="biography"> - <textarea id="biography" - :placeholder="t('settings', 'Your biography')" - :value="biography" - rows="8" - autocapitalize="none" - autocomplete="off" - autocorrect="off" - @input="onBiographyChange" /> - - <div class="biography__actions-container"> - <transition name="fade"> - <span v-if="showCheckmarkIcon" class="icon-checkmark" /> - <span v-else-if="showErrorIcon" class="icon-error" /> - </transition> - </div> - </div> -</template> - -<script> -import { showError } from '@nextcloud/dialogs' -import { emit } from '@nextcloud/event-bus' -import debounce from 'debounce' - -import { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants' -import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService' -import logger from '../../../logger' - -export default { - name: 'Biography', - - props: { - biography: { - type: String, - required: true, - }, - scope: { - type: String, - required: true, - }, - }, - - data() { - return { - initialBiography: this.biography, - localScope: this.scope, - showCheckmarkIcon: false, - showErrorIcon: false, - } - }, - - methods: { - onBiographyChange(e) { - this.$emit('update:biography', e.target.value) - this.debounceBiographyChange(e.target.value.trim()) - }, - - debounceBiographyChange: debounce(async function(biography) { - await this.updatePrimaryBiography(biography) - }, 500), - - async updatePrimaryBiography(biography) { - try { - const responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.BIOGRAPHY, biography) - this.handleResponse({ - biography, - status: responseData.ocs?.meta?.status, - }) - } catch (e) { - this.handleResponse({ - errorMessage: t('settings', 'Unable to update biography'), - error: e, - }) - } - }, - - handleResponse({ biography, status, errorMessage, error }) { - if (status === 'ok') { - // Ensure that local state reflects server state - this.initialBiography = biography - emit('settings:biography:updated', biography) - this.showCheckmarkIcon = true - setTimeout(() => { this.showCheckmarkIcon = false }, 2000) - } else { - showError(errorMessage) - logger.error(errorMessage, error) - this.showErrorIcon = true - setTimeout(() => { this.showErrorIcon = false }, 2000) - } - }, - - onScopeChange(scope) { - this.$emit('update:scope', scope) - }, - }, -} -</script> - -<style lang="scss" scoped> -.biography { - display: grid; - align-items: center; - - textarea { - resize: vertical; - grid-area: 1 / 1; - width: 100%; - margin: 3px 3px 3px 0; - padding: 7px 6px; - color: var(--color-main-text); - border: 1px solid var(--color-border-dark); - border-radius: var(--border-radius); - background-color: var(--color-main-background); - font-family: var(--font-face); - cursor: text; - - &:hover, - &:focus, - &:active { - border-color: var(--color-primary-element) !important; - outline: none !important; - } - } - - .biography__actions-container { - grid-area: 1 / 1; - justify-self: flex-end; - align-self: flex-end; - height: 30px; - - display: flex; - gap: 0 2px; - margin-right: 5px; - margin-bottom: 5px; - - .icon-checkmark, - .icon-error { - height: 30px !important; - min-height: 30px !important; - width: 30px !important; - min-width: 30px !important; - top: 0; - right: 0; - float: none; - } - } -} - -.fade-enter, -.fade-leave-to { - opacity: 0; -} - -.fade-enter-active { - transition: opacity 200ms ease-out; -} - -.fade-leave-active { - transition: opacity 300ms ease-out; -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue b/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue deleted file mode 100644 index c8aacb03e9c..00000000000 --- a/apps/settings/src/components/PersonalInfo/BiographySection/BiographySection.vue +++ /dev/null @@ -1,69 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <section> - <HeaderBar :account-property="accountProperty" - label-for="biography" - :scope.sync="primaryBiography.scope" /> - - <Biography :biography.sync="primaryBiography.value" - :scope.sync="primaryBiography.scope" /> - </section> -</template> - -<script> -import { loadState } from '@nextcloud/initial-state' - -import Biography from './Biography' -import HeaderBar from '../shared/HeaderBar' - -import { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' - -const { biographyMap: { primaryBiography } } = loadState('settings', 'personalInfoParameters', {}) - -export default { - name: 'BiographySection', - - components: { - Biography, - HeaderBar, - }, - - data() { - return { - accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY, - primaryBiography, - } - }, -} -</script> - -<style lang="scss" scoped> -section { - padding: 10px 10px; - - &::v-deep button:disabled { - cursor: default; - } -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue b/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue new file mode 100644 index 00000000000..dd5f97966ac --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue @@ -0,0 +1,66 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <AccountPropertySection v-bind.sync="displayName" + :placeholder="t('settings', 'Your full name')" + :is-editable="displayNameChangeSupported" + :on-validate="onValidate" + :on-save="onSave" /> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' +import { emit } from '@nextcloud/event-bus' + +import AccountPropertySection from './shared/AccountPropertySection.vue' + +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' + +const { displayName } = loadState('settings', 'personalInfoParameters', {}) +const { displayNameChangeSupported } = loadState('settings', 'accountParameters', {}) + +export default { + name: 'DisplayNameSection', + + components: { + AccountPropertySection, + }, + + data() { + return { + displayName: { ...displayName, readable: NAME_READABLE_ENUM[displayName.name] }, + displayNameChangeSupported, + } + }, + + methods: { + onValidate(value) { + return value !== '' + }, + + onSave(value) { + emit('settings:display-name:updated', value) + }, + } +} +</script> diff --git a/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue b/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue deleted file mode 100644 index 58252bfbd63..00000000000 --- a/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayName.vue +++ /dev/null @@ -1,180 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <div class="displayname"> - <input id="displayname" - type="text" - :placeholder="t('settings', 'Your full name')" - :value="displayName" - autocapitalize="none" - autocomplete="on" - autocorrect="off" - @input="onDisplayNameChange"> - - <div class="displayname__actions-container"> - <transition name="fade"> - <span v-if="showCheckmarkIcon" class="icon-checkmark" /> - <span v-else-if="showErrorIcon" class="icon-error" /> - </transition> - </div> - </div> -</template> - -<script> -import { showError } from '@nextcloud/dialogs' -import { emit } from '@nextcloud/event-bus' -import debounce from 'debounce' - -import { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants' -import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService' -import { validateStringInput } from '../../../utils/validate' -import logger from '../../../logger' - -// TODO Global avatar updating on events (e.g. updating the displayname) is currently being handled by global js, investigate using https://github.com/nextcloud/nextcloud-event-bus for global avatar updating - -export default { - name: 'DisplayName', - - props: { - displayName: { - type: String, - required: true, - }, - scope: { - type: String, - required: true, - }, - }, - - data() { - return { - initialDisplayName: this.displayName, - localScope: this.scope, - showCheckmarkIcon: false, - showErrorIcon: false, - } - }, - - methods: { - onDisplayNameChange(e) { - this.$emit('update:display-name', e.target.value) - this.debounceDisplayNameChange(e.target.value.trim()) - }, - - debounceDisplayNameChange: debounce(async function(displayName) { - if (validateStringInput(displayName)) { - await this.updatePrimaryDisplayName(displayName) - } - }, 500), - - async updatePrimaryDisplayName(displayName) { - try { - const responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.DISPLAYNAME, displayName) - this.handleResponse({ - displayName, - status: responseData.ocs?.meta?.status, - }) - } catch (e) { - this.handleResponse({ - errorMessage: t('settings', 'Unable to update full name'), - error: e, - }) - } - }, - - handleResponse({ displayName, status, errorMessage, error }) { - if (status === 'ok') { - // Ensure that local state reflects server state - this.initialDisplayName = displayName - emit('settings:display-name:updated', displayName) - this.showCheckmarkIcon = true - setTimeout(() => { this.showCheckmarkIcon = false }, 2000) - } else { - showError(errorMessage) - logger.error(errorMessage, error) - this.showErrorIcon = true - setTimeout(() => { this.showErrorIcon = false }, 2000) - } - }, - - onScopeChange(scope) { - this.$emit('update:scope', scope) - }, - }, -} -</script> - -<style lang="scss" scoped> -.displayname { - display: grid; - align-items: center; - - input { - grid-area: 1 / 1; - width: 100%; - height: 34px; - margin: 3px 3px 3px 0; - padding: 7px 6px; - color: var(--color-main-text); - border: 1px solid var(--color-border-dark); - border-radius: var(--border-radius); - background-color: var(--color-main-background); - font-family: var(--font-face); - cursor: text; - } - - .displayname__actions-container { - grid-area: 1 / 1; - justify-self: flex-end; - height: 30px; - - display: flex; - gap: 0 2px; - margin-right: 5px; - - .icon-checkmark, - .icon-error { - height: 30px !important; - min-height: 30px !important; - width: 30px !important; - min-width: 30px !important; - top: 0; - right: 0; - float: none; - } - } -} - -.fade-enter, -.fade-leave-to { - opacity: 0; -} - -.fade-enter-active { - transition: opacity 200ms ease-out; -} - -.fade-leave-active { - transition: opacity 300ms ease-out; -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue b/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue deleted file mode 100644 index caee7e7c68e..00000000000 --- a/apps/settings/src/components/PersonalInfo/DisplayNameSection/DisplayNameSection.vue +++ /dev/null @@ -1,86 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <section> - <HeaderBar :account-property="accountProperty" - label-for="displayname" - :is-editable="displayNameChangeSupported" - :is-valid-section="isValidSection" - :scope.sync="primaryDisplayName.scope" /> - - <template v-if="displayNameChangeSupported"> - <DisplayName :display-name.sync="primaryDisplayName.value" - :scope.sync="primaryDisplayName.scope" /> - </template> - - <span v-else> - {{ primaryDisplayName.value || t('settings', 'No full name set') }} - </span> - </section> -</template> - -<script> -import { loadState } from '@nextcloud/initial-state' - -import DisplayName from './DisplayName' -import HeaderBar from '../shared/HeaderBar' - -import { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' -import { validateStringInput } from '../../../utils/validate' - -const { displayNameMap: { primaryDisplayName } } = loadState('settings', 'personalInfoParameters', {}) -const { displayNameChangeSupported } = loadState('settings', 'accountParameters', {}) - -export default { - name: 'DisplayNameSection', - - components: { - DisplayName, - HeaderBar, - }, - - data() { - return { - accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME, - displayNameChangeSupported, - primaryDisplayName, - } - }, - - computed: { - isValidSection() { - return validateStringInput(this.primaryDisplayName.value) - }, - }, -} -</script> - -<style lang="scss" scoped> -section { - padding: 10px 10px; - - &::v-deep button:disabled { - cursor: default; - } -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue index 975da4327ee..0046492de07 100644 --- a/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue +++ b/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue @@ -40,7 +40,7 @@ </transition> <template v-if="!primary"> - <FederationControl :account-property="accountProperty" + <FederationControl :readable="propertyReadable" :additional="true" :additional-value="email" :disabled="federationDisabled" @@ -49,25 +49,25 @@ @update:scope="onScopeChange" /> </template> - <Actions class="email__actions" + <NcActions class="email__actions" :aria-label="t('settings', 'Email options')" :force-menu="true"> - <ActionButton :aria-label="deleteEmailLabel" + <NcActionButton :aria-label="deleteEmailLabel" :close-after-click="true" :disabled="deleteDisabled" icon="icon-delete" @click.stop.prevent="deleteEmail"> {{ deleteEmailLabel }} - </ActionButton> - <ActionButton v-if="!primary || !isNotificationEmail" + </NcActionButton> + <NcActionButton v-if="!primary || !isNotificationEmail" :aria-label="setNotificationMailLabel" :close-after-click="true" :disabled="setNotificationMailDisabled" icon="icon-favorite" @click.stop.prevent="setNotificationMail"> {{ setNotificationMailLabel }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> </div> </div> @@ -78,17 +78,17 @@ </template> <script> -import Actions from '@nextcloud/vue/dist/Components/Actions' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' import AlertOctagon from 'vue-material-design-icons/AlertOctagon' import Check from 'vue-material-design-icons/Check' import { showError } from '@nextcloud/dialogs' import debounce from 'debounce' -import FederationControl from '../shared/FederationControl' -import logger from '../../../logger' +import FederationControl from '../shared/FederationControl.vue' +import logger from '../../../logger.js' -import { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants' +import { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants.js' import { removeAdditionalEmail, saveAdditionalEmail, @@ -96,15 +96,15 @@ import { saveNotificationEmail, savePrimaryEmail, updateAdditionalEmail, -} from '../../../service/PersonalInfo/EmailService' -import { validateEmail } from '../../../utils/validate' +} from '../../../service/PersonalInfo/EmailService.js' +import { validateEmail } from '../../../utils/validate.js' export default { name: 'Email', components: { - Actions, - ActionButton, + NcActions, + NcActionButton, AlertOctagon, Check, FederationControl, @@ -139,7 +139,7 @@ export default { data() { return { - accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL, + propertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL, initialEmail: this.email, localScope: this.scope, saveAdditionalEmailScope, @@ -365,15 +365,6 @@ export default { input { grid-area: 1 / 1; width: 100%; - height: 34px; - margin: 3px 3px 3px 0; - padding: 7px 6px; - color: var(--color-main-text); - border: 1px solid var(--color-border-dark); - border-radius: var(--border-radius); - background-color: var(--color-main-background); - font-family: var(--font-face); - cursor: text; } .email__actions-container { diff --git a/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue b/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue index 3463daa5755..6bfb8bfee8b 100644 --- a/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue +++ b/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue @@ -22,8 +22,8 @@ <template> <section> - <HeaderBar :account-property="accountProperty" - label-for="email" + <HeaderBar :input-id="inputId" + :readable="primaryEmail.readable" :handle-scope-change="savePrimaryEmailScope" :is-editable="true" :is-multi-value-supported="true" @@ -65,13 +65,13 @@ import { loadState } from '@nextcloud/initial-state' import { showError } from '@nextcloud/dialogs' -import Email from './Email' -import HeaderBar from '../shared/HeaderBar' +import Email from './Email.vue' +import HeaderBar from '../shared/HeaderBar.vue' -import { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE } from '../../../constants/AccountPropertyConstants' -import { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService' -import { validateEmail } from '../../../utils/validate' -import logger from '../../../logger' +import { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE, NAME_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js' +import { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService.js' +import { validateEmail } from '../../../utils/validate.js' +import logger from '../../../logger.js' const { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {}) const { displayNameChangeSupported } = loadState('settings', 'accountParameters', {}) @@ -89,7 +89,7 @@ export default { accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL, additionalEmails: additionalEmails.map(properties => ({ ...properties, key: this.generateUniqueKey() })), displayNameChangeSupported, - primaryEmail, + primaryEmail: { ...primaryEmail, readable: NAME_READABLE_ENUM[primaryEmail.name] }, savePrimaryEmailScope, notificationEmail, } @@ -103,6 +103,10 @@ export default { return null }, + inputId() { + return `account-property-${this.primaryEmail.name}` + }, + isValidSection() { return validateEmail(this.primaryEmail.value) && this.additionalEmails.map(({ value }) => value).every(validateEmail) diff --git a/apps/settings/src/components/PersonalInfo/HeadlineSection.vue b/apps/settings/src/components/PersonalInfo/HeadlineSection.vue new file mode 100644 index 00000000000..0275c1df80b --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/HeadlineSection.vue @@ -0,0 +1,50 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <AccountPropertySection v-bind.sync="headline" + :placeholder="t('settings', 'Your headline')" /> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' + +import AccountPropertySection from './shared/AccountPropertySection.vue' + +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' + +const { headline } = loadState('settings', 'personalInfoParameters', {}) + +export default { + name: 'HeadlineSection', + + components: { + AccountPropertySection, + }, + + data() { + return { + headline: { ...headline, readable: NAME_READABLE_ENUM[headline.name] }, + } + }, +} +</script> diff --git a/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue b/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue deleted file mode 100644 index 4cb7d63b522..00000000000 --- a/apps/settings/src/components/PersonalInfo/HeadlineSection/Headline.vue +++ /dev/null @@ -1,175 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <div class="headline"> - <input id="headline" - type="text" - :placeholder="t('settings', 'Your headline')" - :value="headline" - autocapitalize="none" - autocomplete="on" - autocorrect="off" - @input="onHeadlineChange"> - - <div class="headline__actions-container"> - <transition name="fade"> - <span v-if="showCheckmarkIcon" class="icon-checkmark" /> - <span v-else-if="showErrorIcon" class="icon-error" /> - </transition> - </div> - </div> -</template> - -<script> -import { showError } from '@nextcloud/dialogs' -import { emit } from '@nextcloud/event-bus' -import debounce from 'debounce' - -import { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants' -import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService' -import logger from '../../../logger' - -export default { - name: 'Headline', - - props: { - headline: { - type: String, - required: true, - }, - scope: { - type: String, - required: true, - }, - }, - - data() { - return { - initialHeadline: this.headline, - localScope: this.scope, - showCheckmarkIcon: false, - showErrorIcon: false, - } - }, - - methods: { - onHeadlineChange(e) { - this.$emit('update:headline', e.target.value) - this.debounceHeadlineChange(e.target.value.trim()) - }, - - debounceHeadlineChange: debounce(async function(headline) { - await this.updatePrimaryHeadline(headline) - }, 500), - - async updatePrimaryHeadline(headline) { - try { - const responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.HEADLINE, headline) - this.handleResponse({ - headline, - status: responseData.ocs?.meta?.status, - }) - } catch (e) { - this.handleResponse({ - errorMessage: t('settings', 'Unable to update headline'), - error: e, - }) - } - }, - - handleResponse({ headline, status, errorMessage, error }) { - if (status === 'ok') { - // Ensure that local state reflects server state - this.initialHeadline = headline - emit('settings:headline:updated', headline) - this.showCheckmarkIcon = true - setTimeout(() => { this.showCheckmarkIcon = false }, 2000) - } else { - showError(errorMessage) - logger.error(errorMessage, error) - this.showErrorIcon = true - setTimeout(() => { this.showErrorIcon = false }, 2000) - } - }, - - onScopeChange(scope) { - this.$emit('update:scope', scope) - }, - }, -} -</script> - -<style lang="scss" scoped> -.headline { - display: grid; - align-items: center; - - input { - grid-area: 1 / 1; - width: 100%; - height: 34px; - margin: 3px 3px 3px 0; - padding: 7px 6px; - color: var(--color-main-text); - border: 1px solid var(--color-border-dark); - border-radius: var(--border-radius); - background-color: var(--color-main-background); - font-family: var(--font-face); - cursor: text; - } - - .headline__actions-container { - grid-area: 1 / 1; - justify-self: flex-end; - height: 30px; - - display: flex; - gap: 0 2px; - margin-right: 5px; - - .icon-checkmark, - .icon-error { - height: 30px !important; - min-height: 30px !important; - width: 30px !important; - min-width: 30px !important; - top: 0; - right: 0; - float: none; - } - } -} - -.fade-enter, -.fade-leave-to { - opacity: 0; -} - -.fade-enter-active { - transition: opacity 200ms ease-out; -} - -.fade-leave-active { - transition: opacity 300ms ease-out; -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue b/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue deleted file mode 100644 index 4f3714aa0ee..00000000000 --- a/apps/settings/src/components/PersonalInfo/HeadlineSection/HeadlineSection.vue +++ /dev/null @@ -1,69 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <section> - <HeaderBar :account-property="accountProperty" - label-for="headline" - :scope.sync="primaryHeadline.scope" /> - - <Headline :headline.sync="primaryHeadline.value" - :scope.sync="primaryHeadline.scope" /> - </section> -</template> - -<script> -import { loadState } from '@nextcloud/initial-state' - -import Headline from './Headline' -import HeaderBar from '../shared/HeaderBar' - -import { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' - -const { headlineMap: { primaryHeadline } } = loadState('settings', 'personalInfoParameters', {}) - -export default { - name: 'HeadlineSection', - - components: { - Headline, - HeaderBar, - }, - - data() { - return { - accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE, - primaryHeadline, - } - }, -} -</script> - -<style lang="scss" scoped> -section { - padding: 10px 10px; - - &::v-deep button:disabled { - cursor: default; - } -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue b/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue index 99dadd449ce..adff44b2565 100644 --- a/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue +++ b/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue @@ -22,7 +22,7 @@ <template> <div class="language"> - <select id="language" + <select :id="inputId" :placeholder="t('settings', 'Language')" @change="onLanguageChange"> <option v-for="commonLanguage in commonLanguages" @@ -53,15 +53,19 @@ <script> import { showError } from '@nextcloud/dialogs' -import { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants' -import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService' -import { validateLanguage } from '../../../utils/validate' -import logger from '../../../logger' +import { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js' +import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js' +import { validateLanguage } from '../../../utils/validate.js' +import logger from '../../../logger.js' export default { name: 'Language', props: { + inputId: { + type: String, + default: null, + }, commonLanguages: { type: Array, required: true, @@ -147,16 +151,6 @@ export default { select { width: 100%; - height: 34px; - margin: 3px 3px 3px 0; - padding: 6px 16px; - color: var(--color-main-text); - border: 1px solid var(--color-border-dark); - border-radius: var(--border-radius); - background: var(--icon-triangle-s-dark) no-repeat right 4px center; - font-family: var(--font-face); - appearance: none; - cursor: pointer; } a { diff --git a/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue b/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue index 90882b23869..fdc1d31d10c 100644 --- a/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue +++ b/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue @@ -22,11 +22,12 @@ <template> <section> - <HeaderBar :account-property="accountProperty" - label-for="language" /> + <HeaderBar :input-id="inputId" + :readable="propertyReadable" /> <template v-if="isEditable"> - <Language :common-languages="commonLanguages" + <Language :input-id="inputId" + :common-languages="commonLanguages" :other-languages="otherLanguages" :language.sync="language" /> </template> @@ -40,10 +41,10 @@ <script> import { loadState } from '@nextcloud/initial-state' -import Language from './Language' -import HeaderBar from '../shared/HeaderBar' +import Language from './Language.vue' +import HeaderBar from '../shared/HeaderBar.vue' -import { ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' +import { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js' const { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {}) @@ -57,7 +58,7 @@ export default { data() { return { - accountProperty: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE, + propertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE, commonLanguages, otherLanguages, language: activeLanguage, @@ -65,6 +66,10 @@ export default { }, computed: { + inputId() { + return `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE}` + }, + isEditable() { return Boolean(this.language) }, diff --git a/apps/settings/src/components/PersonalInfo/LocationSection.vue b/apps/settings/src/components/PersonalInfo/LocationSection.vue new file mode 100644 index 00000000000..e75075b6d1e --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/LocationSection.vue @@ -0,0 +1,50 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <AccountPropertySection v-bind.sync="location" + :placeholder="t('settings', 'Your location')" /> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' + +import AccountPropertySection from './shared/AccountPropertySection.vue' + +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' + +const { location } = loadState('settings', 'personalInfoParameters', {}) + +export default { + name: 'LocationSection', + + components: { + AccountPropertySection, + }, + + data() { + return { + location: { ...location, readable: NAME_READABLE_ENUM[location.name] }, + } + }, +} +</script> diff --git a/apps/settings/src/components/PersonalInfo/OrganisationSection.vue b/apps/settings/src/components/PersonalInfo/OrganisationSection.vue new file mode 100644 index 00000000000..7a85d2fd647 --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/OrganisationSection.vue @@ -0,0 +1,50 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <AccountPropertySection v-bind.sync="organisation" + :placeholder="t('settings', 'Your organisation')" /> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' + +import AccountPropertySection from './shared/AccountPropertySection.vue' + +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' + +const { organisation } = loadState('settings', 'personalInfoParameters', {}) + +export default { + name: 'OrganisationSection', + + components: { + AccountPropertySection, + }, + + data() { + return { + organisation: { ...organisation, readable: NAME_READABLE_ENUM[organisation.name] }, + } + }, +} +</script> diff --git a/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue b/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue deleted file mode 100644 index 4f69d7b6b9a..00000000000 --- a/apps/settings/src/components/PersonalInfo/OrganisationSection/Organisation.vue +++ /dev/null @@ -1,175 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <div class="organisation"> - <input id="organisation" - type="text" - :placeholder="t('settings', 'Your organisation')" - :value="organisation" - autocapitalize="none" - autocomplete="on" - autocorrect="off" - @input="onOrganisationChange"> - - <div class="organisation__actions-container"> - <transition name="fade"> - <span v-if="showCheckmarkIcon" class="icon-checkmark" /> - <span v-else-if="showErrorIcon" class="icon-error" /> - </transition> - </div> - </div> -</template> - -<script> -import { showError } from '@nextcloud/dialogs' -import { emit } from '@nextcloud/event-bus' -import debounce from 'debounce' - -import { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants' -import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService' -import logger from '../../../logger' - -export default { - name: 'Organisation', - - props: { - organisation: { - type: String, - required: true, - }, - scope: { - type: String, - required: true, - }, - }, - - data() { - return { - initialOrganisation: this.organisation, - localScope: this.scope, - showCheckmarkIcon: false, - showErrorIcon: false, - } - }, - - methods: { - onOrganisationChange(e) { - this.$emit('update:organisation', e.target.value) - this.debounceOrganisationChange(e.target.value.trim()) - }, - - debounceOrganisationChange: debounce(async function(organisation) { - await this.updatePrimaryOrganisation(organisation) - }, 500), - - async updatePrimaryOrganisation(organisation) { - try { - const responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ORGANISATION, organisation) - this.handleResponse({ - organisation, - status: responseData.ocs?.meta?.status, - }) - } catch (e) { - this.handleResponse({ - errorMessage: t('settings', 'Unable to update organisation'), - error: e, - }) - } - }, - - handleResponse({ organisation, status, errorMessage, error }) { - if (status === 'ok') { - // Ensure that local state reflects server state - this.initialOrganisation = organisation - emit('settings:organisation:updated', organisation) - this.showCheckmarkIcon = true - setTimeout(() => { this.showCheckmarkIcon = false }, 2000) - } else { - showError(errorMessage) - logger.error(errorMessage, error) - this.showErrorIcon = true - setTimeout(() => { this.showErrorIcon = false }, 2000) - } - }, - - onScopeChange(scope) { - this.$emit('update:scope', scope) - }, - }, -} -</script> - -<style lang="scss" scoped> -.organisation { - display: grid; - align-items: center; - - input { - grid-area: 1 / 1; - width: 100%; - height: 34px; - margin: 3px 3px 3px 0; - padding: 7px 6px; - color: var(--color-main-text); - border: 1px solid var(--color-border-dark); - border-radius: var(--border-radius); - background-color: var(--color-main-background); - font-family: var(--font-face); - cursor: text; - } - - .organisation__actions-container { - grid-area: 1 / 1; - justify-self: flex-end; - height: 30px; - - display: flex; - gap: 0 2px; - margin-right: 5px; - - .icon-checkmark, - .icon-error { - height: 30px !important; - min-height: 30px !important; - width: 30px !important; - min-width: 30px !important; - top: 0; - right: 0; - float: none; - } - } -} - -.fade-enter, -.fade-leave-to { - opacity: 0; -} - -.fade-enter-active { - transition: opacity 200ms ease-out; -} - -.fade-leave-active { - transition: opacity 300ms ease-out; -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue b/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue deleted file mode 100644 index 2a0b93d552f..00000000000 --- a/apps/settings/src/components/PersonalInfo/OrganisationSection/OrganisationSection.vue +++ /dev/null @@ -1,69 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <section> - <HeaderBar :account-property="accountProperty" - label-for="organisation" - :scope.sync="primaryOrganisation.scope" /> - - <Organisation :organisation.sync="primaryOrganisation.value" - :scope.sync="primaryOrganisation.scope" /> - </section> -</template> - -<script> -import { loadState } from '@nextcloud/initial-state' - -import Organisation from './Organisation' -import HeaderBar from '../shared/HeaderBar' - -import { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' - -const { organisationMap: { primaryOrganisation } } = loadState('settings', 'personalInfoParameters', {}) - -export default { - name: 'OrganisationSection', - - components: { - Organisation, - HeaderBar, - }, - - data() { - return { - accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION, - primaryOrganisation, - } - }, -} -</script> - -<style lang="scss" scoped> -section { - padding: 10px 10px; - - &::v-deep button:disabled { - cursor: default; - } -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/PhoneSection.vue b/apps/settings/src/components/PersonalInfo/PhoneSection.vue new file mode 100644 index 00000000000..45641cd8e14 --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/PhoneSection.vue @@ -0,0 +1,59 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <AccountPropertySection v-bind.sync="phone" + :placeholder="t('settings', 'Your phone number')" + type="tel" + :on-validate="onValidate" /> +</template> + +<script> +import { isValidPhoneNumber } from 'libphonenumber-js' +import { loadState } from '@nextcloud/initial-state' + +import AccountPropertySection from './shared/AccountPropertySection.vue' + +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' + +const { phone } = loadState('settings', 'personalInfoParameters', {}) + +export default { + name: 'PhoneSection', + + components: { + AccountPropertySection, + }, + + data() { + return { + phone: { ...phone, readable: NAME_READABLE_ENUM[phone.name] }, + } + }, + + methods: { + onValidate(value) { + return isValidPhoneNumber(value) + }, + }, +} +</script> diff --git a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue index da3d509c2f5..0ab9445e1f9 100644 --- a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue +++ b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue @@ -37,10 +37,10 @@ import { showError } from '@nextcloud/dialogs' import { emit } from '@nextcloud/event-bus' -import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService' -import { validateBoolean } from '../../../utils/validate' -import { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants' -import logger from '../../../logger' +import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js' +import { validateBoolean } from '../../../utils/validate.js' +import { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js' +import logger from '../../../logger.js' export default { name: 'ProfileCheckbox', diff --git a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue index afd85269720..586557e82a2 100644 --- a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue +++ b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue @@ -24,7 +24,7 @@ <a class="preview-card" :class="{ disabled }" :href="profilePageLink"> - <Avatar class="preview-card__avatar" + <NcAvatar class="preview-card__avatar" :user="userId" :size="48" :show-user-status="true" @@ -44,13 +44,13 @@ import { getCurrentUser } from '@nextcloud/auth' import { generateUrl } from '@nextcloud/router' -import Avatar from '@nextcloud/vue/dist/Components/Avatar' +import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' export default { name: 'ProfilePreviewCard', components: { - Avatar, + NcAvatar, }, props: { diff --git a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue index 46048e96c0e..2f1cc935f22 100644 --- a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue +++ b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue @@ -22,7 +22,7 @@ <template> <section> - <HeaderBar :account-property="accountProperty" /> + <HeaderBar :readable="propertyReadable" /> <ProfileCheckbox :profile-enabled.sync="profileEnabled" /> @@ -39,16 +39,16 @@ import { loadState } from '@nextcloud/initial-state' import { subscribe, unsubscribe } from '@nextcloud/event-bus' -import EditProfileAnchorLink from './EditProfileAnchorLink' -import HeaderBar from '../shared/HeaderBar' -import ProfileCheckbox from './ProfileCheckbox' -import ProfilePreviewCard from './ProfilePreviewCard' +import EditProfileAnchorLink from './EditProfileAnchorLink.vue' +import HeaderBar from '../shared/HeaderBar.vue' +import ProfileCheckbox from './ProfileCheckbox.vue' +import ProfilePreviewCard from './ProfilePreviewCard.vue' -import { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' +import { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js' const { - organisationMap: { primaryOrganisation: { value: organisation } }, - displayNameMap: { primaryDisplayName: { value: displayName } }, + organisation: { value: organisation }, + displayName: { value: displayName }, profileEnabled, userId, } = loadState('settings', 'personalInfoParameters', {}) @@ -65,7 +65,7 @@ export default { data() { return { - accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED, + propertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED, organisation, displayName, profileEnabled, diff --git a/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue b/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue index 16a46fee969..eab49f11f49 100644 --- a/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue +++ b/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue @@ -24,7 +24,7 @@ <!-- TODO remove this inline margin placeholder once the settings layout is updated --> <section id="profile-visibility" :style="{ marginLeft }"> - <HeaderBar :account-property="heading" /> + <HeaderBar :readable="heading" /> <em :class="{ disabled }"> {{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.') }} @@ -47,9 +47,9 @@ import { loadState } from '@nextcloud/initial-state' import { subscribe, unsubscribe } from '@nextcloud/event-bus' -import HeaderBar from '../shared/HeaderBar' -import VisibilityDropdown from './VisibilityDropdown' -import { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' +import HeaderBar from '../shared/HeaderBar.vue' +import VisibilityDropdown from './VisibilityDropdown.vue' +import { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js' const { profileConfig } = loadState('settings', 'profileParameters', {}) const { profileEnabled } = loadState('settings', 'personalInfoParameters', false) diff --git a/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue b/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue index 10b2e5cea81..b148fa97a4d 100644 --- a/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue +++ b/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue @@ -26,7 +26,7 @@ <label :for="inputId"> {{ t('settings', '{displayId}', { displayId }) }} </label> - <Multiselect :id="inputId" + <NcMultiselect :id="inputId" class="visibility-container__multiselect" :options="visibilityOptions" track-by="name" @@ -41,12 +41,11 @@ import { showError } from '@nextcloud/dialogs' import { loadState } from '@nextcloud/initial-state' import { subscribe, unsubscribe } from '@nextcloud/event-bus' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' -import { saveProfileParameterVisibility } from '../../../service/ProfileService' -import { validateStringInput } from '../../../utils/validate' -import { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants' -import logger from '../../../logger' +import { saveProfileParameterVisibility } from '../../../service/ProfileService.js' +import { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants.js' +import logger from '../../../logger.js' const { profileEnabled } = loadState('settings', 'personalInfoParameters', false) @@ -54,7 +53,7 @@ export default { name: 'VisibilityDropdown', components: { - Multiselect, + NcMultiselect, }, props: { @@ -112,7 +111,7 @@ export default { const { name: visibility } = visibilityObject this.$emit('update:visibility', visibility) - if (validateStringInput(visibility)) { + if (visibility !== '') { await this.updateVisibility(visibility) } } diff --git a/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue b/apps/settings/src/components/PersonalInfo/RoleSection.vue index 51026f4860c..ab9b9c910fe 100644 --- a/apps/settings/src/components/PersonalInfo/RoleSection/RoleSection.vue +++ b/apps/settings/src/components/PersonalInfo/RoleSection.vue @@ -1,9 +1,9 @@ <!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> + - @copyright 2022 Christopher Ng <chrng8@gmail.com> - - @author Christopher Ng <chrng8@gmail.com> - - - @license GNU AGPL version 3 or any later version + - @license AGPL-3.0-or-later - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as @@ -12,7 +12,7 @@ - - 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 + - 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 @@ -21,49 +21,30 @@ --> <template> - <section> - <HeaderBar :account-property="accountProperty" - label-for="role" - :scope.sync="primaryRole.scope" /> - - <Role :role.sync="primaryRole.value" - :scope.sync="primaryRole.scope" /> - </section> + <AccountPropertySection v-bind.sync="role" + :placeholder="t('settings', 'Your role')" /> </template> <script> import { loadState } from '@nextcloud/initial-state' -import Role from './Role' -import HeaderBar from '../shared/HeaderBar' +import AccountPropertySection from './shared/AccountPropertySection.vue' -import { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' -const { roleMap: { primaryRole } } = loadState('settings', 'personalInfoParameters', {}) +const { role } = loadState('settings', 'personalInfoParameters', {}) export default { name: 'RoleSection', components: { - Role, - HeaderBar, + AccountPropertySection, }, data() { return { - accountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE, - primaryRole, + role: { ...role, readable: NAME_READABLE_ENUM[role.name] }, } }, } </script> - -<style lang="scss" scoped> -section { - padding: 10px 10px; - - &::v-deep button:disabled { - cursor: default; - } -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue b/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue deleted file mode 100644 index 4add0d04d0d..00000000000 --- a/apps/settings/src/components/PersonalInfo/RoleSection/Role.vue +++ /dev/null @@ -1,175 +0,0 @@ -<!-- - - @copyright 2021, Christopher Ng <chrng8@gmail.com> - - - - @author Christopher Ng <chrng8@gmail.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/>. - - ---> - -<template> - <div class="role"> - <input id="role" - type="text" - :placeholder="t('settings', 'Your role')" - :value="role" - autocapitalize="none" - autocomplete="on" - autocorrect="off" - @input="onRoleChange"> - - <div class="role__actions-container"> - <transition name="fade"> - <span v-if="showCheckmarkIcon" class="icon-checkmark" /> - <span v-else-if="showErrorIcon" class="icon-error" /> - </transition> - </div> - </div> -</template> - -<script> -import { showError } from '@nextcloud/dialogs' -import { emit } from '@nextcloud/event-bus' -import debounce from 'debounce' - -import { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants' -import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService' -import logger from '../../../logger' - -export default { - name: 'Role', - - props: { - role: { - type: String, - required: true, - }, - scope: { - type: String, - required: true, - }, - }, - - data() { - return { - initialRole: this.role, - localScope: this.scope, - showCheckmarkIcon: false, - showErrorIcon: false, - } - }, - - methods: { - onRoleChange(e) { - this.$emit('update:role', e.target.value) - this.debounceRoleChange(e.target.value.trim()) - }, - - debounceRoleChange: debounce(async function(role) { - await this.updatePrimaryRole(role) - }, 500), - - async updatePrimaryRole(role) { - try { - const responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.ROLE, role) - this.handleResponse({ - role, - status: responseData.ocs?.meta?.status, - }) - } catch (e) { - this.handleResponse({ - errorMessage: t('settings', 'Unable to update role'), - error: e, - }) - } - }, - - handleResponse({ role, status, errorMessage, error }) { - if (status === 'ok') { - // Ensure that local state reflects server state - this.initialRole = role - emit('settings:role:updated', role) - this.showCheckmarkIcon = true - setTimeout(() => { this.showCheckmarkIcon = false }, 2000) - } else { - showError(errorMessage) - logger.error(errorMessage, error) - this.showErrorIcon = true - setTimeout(() => { this.showErrorIcon = false }, 2000) - } - }, - - onScopeChange(scope) { - this.$emit('update:scope', scope) - }, - }, -} -</script> - -<style lang="scss" scoped> -.role { - display: grid; - align-items: center; - - input { - grid-area: 1 / 1; - width: 100%; - height: 34px; - margin: 3px 3px 3px 0; - padding: 7px 6px; - color: var(--color-main-text); - border: 1px solid var(--color-border-dark); - border-radius: var(--border-radius); - background-color: var(--color-main-background); - font-family: var(--font-face); - cursor: text; - } - - .role__actions-container { - grid-area: 1 / 1; - justify-self: flex-end; - height: 30px; - - display: flex; - gap: 0 2px; - margin-right: 5px; - - .icon-checkmark, - .icon-error { - height: 30px !important; - min-height: 30px !important; - width: 30px !important; - min-width: 30px !important; - top: 0; - right: 0; - float: none; - } - } -} - -.fade-enter, -.fade-leave-to { - opacity: 0; -} - -.fade-enter-active { - transition: opacity 200ms ease-out; -} - -.fade-leave-active { - transition: opacity 300ms ease-out; -} -</style> diff --git a/apps/settings/src/components/PersonalInfo/TwitterSection.vue b/apps/settings/src/components/PersonalInfo/TwitterSection.vue new file mode 100644 index 00000000000..78a772973fb --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/TwitterSection.vue @@ -0,0 +1,50 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <AccountPropertySection v-bind.sync="twitter" + :placeholder="t('settings', 'Your Twitter handle')" /> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' + +import AccountPropertySection from './shared/AccountPropertySection.vue' + +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' + +const { twitter } = loadState('settings', 'personalInfoParameters', {}) + +export default { + name: 'TwitterSection', + + components: { + AccountPropertySection, + }, + + data() { + return { + twitter: { ...twitter, readable: NAME_READABLE_ENUM[twitter.name] }, + } + }, +} +</script> diff --git a/apps/settings/src/components/PersonalInfo/WebsiteSection.vue b/apps/settings/src/components/PersonalInfo/WebsiteSection.vue new file mode 100644 index 00000000000..1b8d9e6815d --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/WebsiteSection.vue @@ -0,0 +1,59 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <AccountPropertySection v-bind.sync="website" + :placeholder="t('settings', 'Your website')" + type="url" + :on-validate="onValidate" /> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' + +import AccountPropertySection from './shared/AccountPropertySection.vue' + +import { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js' +import { validateUrl } from '../../utils/validate.js' + +const { website } = loadState('settings', 'personalInfoParameters', {}) + +export default { + name: 'WebsiteSection', + + components: { + AccountPropertySection, + }, + + data() { + return { + website: { ...website, readable: NAME_READABLE_ENUM[website.name] }, + } + }, + + methods: { + onValidate(value) { + return validateUrl(value) + }, + }, +} +</script> diff --git a/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue b/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue new file mode 100644 index 00000000000..d855832746a --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue @@ -0,0 +1,241 @@ +<!-- + - @copyright 2022 Christopher Ng <chrng8@gmail.com> + - + - @author Christopher Ng <chrng8@gmail.com> + - + - @license AGPL-3.0-or-later + - + - 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/>. + - +--> + +<template> + <section> + <HeaderBar :scope.sync="scope" + :readable.sync="readable" + :input-id="inputId" + :is-editable="isEditable" /> + + <div v-if="isEditable" class="property"> + <textarea v-if="multiLine" + :id="inputId" + :placeholder="placeholder" + :value="value" + rows="8" + autocapitalize="none" + autocomplete="off" + autocorrect="off" + @input="onPropertyChange" /> + <input v-else + :id="inputId" + :placeholder="placeholder" + :type="type" + :value="value" + autocapitalize="none" + autocomplete="on" + autocorrect="off" + @input="onPropertyChange"> + + <div class="property__actions-container"> + <transition name="fade"> + <Check v-if="showCheckmarkIcon" :size="20" /> + <AlertOctagon v-else-if="showErrorIcon" :size="20" /> + </transition> + </div> + </div> + <span v-else> + {{ value || t('settings', 'No {property} set', { property: readable.toLocaleLowerCase() }) }} + </span> + </section> +</template> + +<script> +import debounce from 'debounce' +import { showError } from '@nextcloud/dialogs' + +import Check from 'vue-material-design-icons/Check' +import AlertOctagon from 'vue-material-design-icons/AlertOctagon' + +import HeaderBar from '../shared/HeaderBar.vue' + +import { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js' +import logger from '../../../logger.js' + +export default { + name: 'AccountPropertySection', + + components: { + AlertOctagon, + Check, + HeaderBar, + }, + + props: { + name: { + type: String, + required: true, + }, + value: { + type: String, + required: true, + }, + scope: { + type: String, + required: true, + }, + readable: { + type: String, + required: true, + }, + placeholder: { + type: String, + required: true, + }, + type: { + type: String, + default: 'text', + }, + isEditable: { + type: Boolean, + default: true, + }, + multiLine: { + type: Boolean, + default: false, + }, + onValidate: { + type: Function, + default: null, + }, + onSave: { + type: Function, + default: null, + }, + }, + + data() { + return { + initialValue: this.value, + showCheckmarkIcon: false, + showErrorIcon: false, + } + }, + + computed: { + inputId() { + return `account-property-${this.name}` + }, + }, + + methods: { + onPropertyChange(e) { + this.$emit('update:value', e.target.value) + this.debouncePropertyChange(e.target.value.trim()) + }, + + debouncePropertyChange: debounce(async function(value) { + if (this.onValidate && !this.onValidate(value)) { + return + } + await this.updateProperty(value) + }, 500), + + async updateProperty(value) { + try { + const responseData = await savePrimaryAccountProperty( + this.name, + value, + ) + this.handleResponse({ + value, + status: responseData.ocs?.meta?.status, + }) + } catch (e) { + this.handleResponse({ + errorMessage: t('settings', 'Unable to update {property}', { property: this.readable.toLocaleLowerCase() }), + error: e, + }) + } + }, + + handleResponse({ value, status, errorMessage, error }) { + if (status === 'ok') { + this.initialValue = value + if (this.onSave) { + this.onSave(value) + } + this.showCheckmarkIcon = true + setTimeout(() => { this.showCheckmarkIcon = false }, 2000) + } else { + this.$emit('update:value', this.initialValue) + showError(errorMessage) + logger.error(errorMessage, error) + this.showErrorIcon = true + setTimeout(() => { this.showErrorIcon = false }, 2000) + } + }, + }, +} +</script> + +<style lang="scss" scoped> +section { + padding: 10px 10px; + + &::v-deep button:disabled { + cursor: default; + } + + .property { + display: grid; + align-items: center; + + textarea { + resize: vertical; + grid-area: 1 / 1; + width: 100%; + } + + input { + grid-area: 1 / 1; + width: 100%; + } + + .property__actions-container { + grid-area: 1 / 1; + justify-self: flex-end; + align-self: flex-end; + height: 30px; + + display: flex; + gap: 0 2px; + margin-right: 5px; + margin-bottom: 5px; + } + } + + .fade-enter, + .fade-leave-to { + opacity: 0; + } + + .fade-enter-active { + transition: opacity 200ms ease-out; + } + + .fade-leave-active { + transition: opacity 300ms ease-out; + } +} +</style> diff --git a/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue b/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue index e8d3c99682b..555b917ad1f 100644 --- a/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue +++ b/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue @@ -21,7 +21,7 @@ --> <template> - <Actions :class="{ 'federation-actions': !additional, 'federation-actions--additional': additional }" + <NcActions :class="{ 'federation-actions': !additional, 'federation-actions--additional': additional }" :aria-label="ariaLabel" :default-icon="scopeIcon" :disabled="disabled"> @@ -35,25 +35,27 @@ :name="federationScope.name" :tooltip-disabled="federationScope.tooltipDisabled" :tooltip="federationScope.tooltip" /> - </Actions> + </NcActions> </template> <script> -import Actions from '@nextcloud/vue/dist/Components/Actions' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' import { loadState } from '@nextcloud/initial-state' import { showError } from '@nextcloud/dialogs' -import FederationControlAction from './FederationControlAction' +import FederationControlAction from './FederationControlAction.vue' import { ACCOUNT_PROPERTY_READABLE_ENUM, + ACCOUNT_SETTING_PROPERTY_READABLE_ENUM, + PROFILE_READABLE_ENUM, PROPERTY_READABLE_KEYS_ENUM, PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM, SCOPE_ENUM, SCOPE_PROPERTY_ENUM, UNPUBLISHED_READABLE_PROPERTIES, -} from '../../../constants/AccountPropertyConstants' -import { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService' -import logger from '../../../logger' +} from '../../../constants/AccountPropertyConstants.js' +import { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService.js' +import logger from '../../../logger.js' const { lookupServerUploadEnabled } = loadState('settings', 'accountParameters', {}) @@ -61,15 +63,15 @@ export default { name: 'FederationControl', components: { - Actions, + NcActions, FederationControlAction, }, props: { - accountProperty: { + readable: { type: String, required: true, - validator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value), + validator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY, }, additional: { type: Boolean, @@ -95,14 +97,14 @@ export default { data() { return { - accountPropertyLowerCase: this.accountProperty.toLocaleLowerCase(), + readableLowerCase: this.readable.toLocaleLowerCase(), initialScope: this.scope, } }, computed: { ariaLabel() { - return t('settings', 'Change scope level of {accountProperty}, current scope is {scope}', { accountProperty: this.accountPropertyLowerCase, scope: this.scopeDisplayNameLowerCase }) + return t('settings', 'Change scope level of {property}, current scope is {scope}', { property: this.readableLowerCase, scope: this.scopeDisplayNameLowerCase }) }, scopeDisplayNameLowerCase() { @@ -118,15 +120,15 @@ export default { }, supportedScopes() { - if (lookupServerUploadEnabled && !UNPUBLISHED_READABLE_PROPERTIES.includes(this.accountProperty)) { + if (lookupServerUploadEnabled && !UNPUBLISHED_READABLE_PROPERTIES.includes(this.readable)) { return [ - ...PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty], + ...PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable], SCOPE_ENUM.FEDERATED, SCOPE_ENUM.PUBLISHED, ] } - return PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.accountProperty] + return PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable] }, }, @@ -143,14 +145,14 @@ export default { async updatePrimaryScope(scope) { try { - const responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.accountProperty], scope) + const responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.readable], scope) this.handleResponse({ scope, status: responseData.ocs?.meta?.status, }) } catch (e) { this.handleResponse({ - errorMessage: t('settings', 'Unable to update federation scope of the primary {accountProperty}', { accountProperty: this.accountPropertyLowerCase }), + errorMessage: t('settings', 'Unable to update federation scope of the primary {property}', { property: this.readableLowerCase }), error: e, }) } @@ -165,7 +167,7 @@ export default { }) } catch (e) { this.handleResponse({ - errorMessage: t('settings', 'Unable to update federation scope of additional {accountProperty}', { accountProperty: this.accountPropertyLowerCase }), + errorMessage: t('settings', 'Unable to update federation scope of additional {property}', { property: this.readableLowerCase }), error: e, }) } diff --git a/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue b/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue index f98d9bc7535..22ce295db1d 100644 --- a/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue +++ b/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue @@ -21,7 +21,7 @@ --> <template> - <ActionButton :aria-label="isSupportedScope ? tooltip : tooltipDisabled" + <NcActionButton :aria-label="isSupportedScope ? tooltip : tooltipDisabled" class="federation-actions__btn" :class="{ 'federation-actions__btn--active': activeScope === name }" :close-after-click="true" @@ -30,17 +30,17 @@ :title="displayName" @click.stop.prevent="updateScope"> {{ isSupportedScope ? tooltip : tooltipDisabled }} - </ActionButton> + </NcActionButton> </template> <script> -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' export default { name: 'FederationControlAction', components: { - ActionButton, + NcActionButton, }, props: { diff --git a/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue b/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue index 65eb5a110a3..a72e07b4774 100644 --- a/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue +++ b/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue @@ -22,20 +22,20 @@ <template> <h3 :class="{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }"> - <label :for="labelFor"> + <label :for="inputId"> <!-- Already translated as required by prop validator --> - {{ accountProperty }} + {{ readable }} </label> <template v-if="scope"> <FederationControl class="federation-control" - :account-property="accountProperty" + :readable="readable" :scope.sync="localScope" @update:scope="onScopeChange" /> </template> <template v-if="isEditable && isMultiValueSupported"> - <Button type="tertiary" + <NcButton type="tertiary" :disabled="!isValidSection" :aria-label="t('settings', 'Add additional email')" @click.stop.prevent="onAddAdditional"> @@ -43,32 +43,46 @@ <Plus :size="20" /> </template> {{ t('settings', 'Add') }} - </Button> + </NcButton> </template> </h3> </template> <script> -import FederationControl from './FederationControl' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' import Plus from 'vue-material-design-icons/Plus' -import { ACCOUNT_PROPERTY_READABLE_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM, PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants' + +import FederationControl from './FederationControl.vue' + +import { + ACCOUNT_PROPERTY_READABLE_ENUM, + ACCOUNT_SETTING_PROPERTY_READABLE_ENUM, + PROFILE_READABLE_ENUM, +} from '../../../constants/AccountPropertyConstants.js' export default { name: 'HeaderBar', components: { FederationControl, - Button, + NcButton, Plus, }, props: { - accountProperty: { + scope: { + type: String, + default: null, + }, + readable: { type: String, required: true, validator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY, }, + inputId: { + type: String, + default: null, + }, isEditable: { type: Boolean, default: true, @@ -79,15 +93,7 @@ export default { }, isValidSection: { type: Boolean, - default: false, - }, - labelFor: { - type: String, - default: '', - }, - scope: { - type: String, - default: null, + default: true, }, }, @@ -99,11 +105,11 @@ export default { computed: { isProfileProperty() { - return this.accountProperty === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED + return this.readable === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED }, isSettingProperty() { - return Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(this.accountProperty) + return Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(this.readable) }, }, @@ -124,6 +130,8 @@ export default { display: inline-flex; width: 100%; margin: 12px 0 0 0; + gap: 8px; + align-items: center; font-size: 16px; color: var(--color-text-light); @@ -132,7 +140,7 @@ export default { } &.setting-property { - height: 32px; + height: 44px; } label { @@ -141,10 +149,10 @@ export default { } .federation-control { - margin: -12px 0 0 8px; + margin: 0; } .button-vue { - margin: -6px 0 0 auto !important; + margin: 0 0 0 auto !important; } </style> diff --git a/apps/settings/src/components/SvgFilterMixin.vue b/apps/settings/src/components/SvgFilterMixin.vue index 228b574f3c4..15713514436 100644 --- a/apps/settings/src/components/SvgFilterMixin.vue +++ b/apps/settings/src/components/SvgFilterMixin.vue @@ -34,7 +34,7 @@ export default { }, }, mounted() { - this.filterId = 'invertIconApps' + Math.floor((Math.random() * 100)) + new Date().getSeconds() + new Date().getMilliseconds() + this.filterId = 'invertIconApps-' + Math.random().toString(36).substring(2) }, } </script> diff --git a/apps/settings/src/components/UserList.vue b/apps/settings/src/components/UserList.vue index 4d50da62596..d64868651e6 100644 --- a/apps/settings/src/components/UserList.vue +++ b/apps/settings/src/components/UserList.vue @@ -22,7 +22,7 @@ <template> <div id="app-content" class="user-list-grid" @scroll.passive="onScroll"> - <Modal v-if="showConfig.showNewUserForm" size="small" @close="closeModal"> + <NcModal v-if="showConfig.showNewUserForm" size="small" @close="closeModal"> <form id="new-user" :disabled="loading.all" class="modal__content" @@ -83,7 +83,7 @@ :value="newUser.groups" tabindex="-1" type="text"> - <Multiselect v-model="newUser.groups" + <NcMultiselect v-model="newUser.groups" :close-on-select="false" :disabled="loading.groups||loading.all" :multiple="true" @@ -100,11 +100,11 @@ Subadmins can't create users outside their groups Therefore, empty select is forbidden --> <span slot="noResult">{{ t('settings', 'No results') }}</span> - </Multiselect> + </NcMultiselect> </div> <div v-if="subAdminsGroups.length>0 && settings.isAdmin" class="subadmins modal__item"> - <Multiselect v-model="newUser.subAdminsGroups" + <NcMultiselect v-model="newUser.subAdminsGroups" :close-on-select="false" :multiple="true" :options="subAdminsGroups" @@ -114,10 +114,10 @@ label="name" track-by="id"> <span slot="noResult">{{ t('settings', 'No results') }}</span> - </Multiselect> + </NcMultiselect> </div> <div class="quota modal__item"> - <Multiselect v-model="newUser.quota" + <NcMultiselect v-model="newUser.quota" :allow-empty="false" :options="quotaOptions" :placeholder="t('settings', 'Select user quota')" @@ -128,7 +128,7 @@ @tag="validateQuota" /> </div> <div v-if="showConfig.showLanguages" class="languages modal__item"> - <Multiselect v-model="newUser.language" + <NcMultiselect v-model="newUser.language" :allow-empty="false" :options="languages" :placeholder="t('settings', 'Default language')" @@ -142,15 +142,15 @@ <div v-if="showConfig.showUserBackend" class="userBackend" /> <div v-if="showConfig.showLastLogin" class="lastLogin" /> <div class="user-actions"> - <Button id="newsubmit" + <NcButton id="newsubmit" type="primary" native-type="submit" value=""> {{ t('settings', 'Add a new user') }} - </Button> + </NcButton> </div> </form> - </Modal> + </NcModal> <div id="grid-header" :class="{'sticky': scrolled && !showConfig.showNewUserForm}" class="row"> @@ -234,9 +234,9 @@ import { subscribe, unsubscribe } from '@nextcloud/event-bus' import InfiniteLoading from 'vue-infinite-loading' import Vue from 'vue' -import Modal from '@nextcloud/vue/dist/Components/Modal' -import Button from '@nextcloud/vue/dist/Components/Button' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcModal from '@nextcloud/vue/dist/Components/NcModal' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import userRow from './UserList/UserRow' @@ -265,11 +265,11 @@ const newUser = { export default { name: 'UserList', components: { - Modal, + NcModal, userRow, - Multiselect, + NcMultiselect, InfiniteLoading, - Button, + NcButton, }, props: { users: { diff --git a/apps/settings/src/components/UserList/UserRow.vue b/apps/settings/src/components/UserList/UserRow.vue index f2947019f40..bc086adc5cb 100644 --- a/apps/settings/src/components/UserList/UserRow.vue +++ b/apps/settings/src/components/UserList/UserRow.vue @@ -28,8 +28,7 @@ <div :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}" class="avatar"> <img v-if="!loading.delete && !loading.disable && !loading.wipe" - :src="generateAvatar(user.id, 32)" - :srcset="generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'" + :src="generateAvatar(user.id)" alt="" height="32" width="32"> @@ -66,8 +65,7 @@ <div :class="{'icon-loading-small': loading.delete || loading.disable || loading.wipe}" class="avatar"> <img v-if="!loading.delete && !loading.disable && !loading.wipe" - :src="generateAvatar(user.id, 32)" - :srcset="generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'" + :src="generateAvatar(user.id)" alt="" height="32" width="32"> @@ -135,7 +133,7 @@ <input class="icon-confirm" type="submit" value=""> </form> <div :class="{'icon-loading-small': loading.groups}" class="groups"> - <Multiselect :close-on-select="false" + <NcMultiselect :close-on-select="false" :disabled="loading.groups||loading.all" :limit="2" :multiple="true" @@ -152,12 +150,12 @@ @select="addUserGroup" @tag="createGroup"> <span slot="noResult">{{ t('settings', 'No results') }}</span> - </Multiselect> + </NcMultiselect> </div> <div v-if="subAdminsGroups.length>0 && settings.isAdmin" :class="{'icon-loading-small': loading.subadmins}" class="subadmins"> - <Multiselect :close-on-select="false" + <NcMultiselect :close-on-select="false" :disabled="loading.subadmins||loading.all" :limit="2" :multiple="true" @@ -171,12 +169,12 @@ @remove="removeUserSubAdmin" @select="addUserSubAdmin"> <span slot="noResult">{{ t('settings', 'No results') }}</span> - </Multiselect> + </NcMultiselect> </div> <div v-tooltip.auto="usedSpace" :class="{'icon-loading-small': loading.quota}" class="quota"> - <Multiselect :allow-empty="false" + <NcMultiselect :allow-empty="false" :disabled="loading.quota||loading.all" :options="quotaOptions" :placeholder="t('settings', 'Select user quota')" @@ -192,7 +190,7 @@ <div v-if="showConfig.showLanguages" :class="{'icon-loading-small': loading.languages}" class="languages"> - <Multiselect :allow-empty="false" + <NcMultiselect :allow-empty="false" :disabled="loading.languages||loading.all" :options="languages" :placeholder="t('settings', 'No language set')" @@ -213,17 +211,17 @@ <div class="userActions"> <div v-if="!loading.all" class="toggleUserActions"> - <Actions> - <ActionButton icon="icon-checkmark" + <NcActions> + <NcActionButton icon="icon-checkmark" @click="editing = false"> {{ t('settings', 'Done') }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> <div v-click-outside="hideMenu" class="userPopoverMenuWrapper"> <button class="icon-more" @click.prevent="toggleMenu" /> <div :class="{ 'open': openedMenu }" class="popovermenu"> - <PopoverMenu :menu="userActions" /> + <NcPopoverMenu :menu="userActions" /> </div> </div> </div> @@ -241,10 +239,10 @@ import ClickOutside from 'vue-click-outside' import Vue from 'vue' import VTooltip from 'v-tooltip' import { - PopoverMenu, - Multiselect, - Actions, - ActionButton, + NcPopoverMenu, + NcMultiselect, + NcActions, + NcActionButton, } from '@nextcloud/vue' import UserRowSimple from './UserRowSimple' import UserRowMixin from '../../mixins/UserRowMixin' @@ -255,10 +253,10 @@ export default { name: 'UserRow', components: { UserRowSimple, - PopoverMenu, - Actions, - ActionButton, - Multiselect, + NcPopoverMenu, + NcActions, + NcActionButton, + NcMultiselect, }, directives: { ClickOutside, diff --git a/apps/settings/src/components/UserList/UserRowSimple.vue b/apps/settings/src/components/UserList/UserRowSimple.vue index 50ed78a0bc7..105994e2f75 100644 --- a/apps/settings/src/components/UserList/UserRowSimple.vue +++ b/apps/settings/src/components/UserList/UserRowSimple.vue @@ -7,8 +7,7 @@ alt="" width="32" height="32" - :src="generateAvatar(user.id, 32)" - :srcset="generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'"> + :src="generateAvatar(user.id)" /> </div> <!-- dirty hack to ellipsis on two lines --> <div class="name"> @@ -57,18 +56,18 @@ <div class="userActions"> <div v-if="canEdit && !loading.all" class="toggleUserActions"> - <Actions> - <ActionButton icon="icon-rename" @click="toggleEdit"> + <NcActions> + <NcActionButton icon="icon-rename" @click="toggleEdit"> {{ t('settings', 'Edit User') }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> <div class="userPopoverMenuWrapper"> <button v-click-outside="hideMenu" class="icon-more" :aria-label="t('settings', 'Toggle user actions menu')" @click.prevent="toggleMenu" /> <div class="popovermenu" :class="{ 'open': openedMenu }" :aria-expanded="openedMenu"> - <PopoverMenu :menu="userActions" /> + <NcPopoverMenu :menu="userActions" /> </div> </div> </div> @@ -81,18 +80,18 @@ </template> <script> -import PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu' -import Actions from '@nextcloud/vue/dist/Components/Actions' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' +import NcPopoverMenu from '@nextcloud/vue/dist/Components/NcPopoverMenu' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' import ClickOutside from 'vue-click-outside' import { getCurrentUser } from '@nextcloud/auth' import UserRowMixin from '../../mixins/UserRowMixin' export default { name: 'UserRowSimple', components: { - PopoverMenu, - ActionButton, - Actions, + NcPopoverMenu, + NcActionButton, + NcActions, }, directives: { ClickOutside, diff --git a/apps/settings/src/components/WebAuthn/Device.vue b/apps/settings/src/components/WebAuthn/Device.vue index fc1bab3c8b0..d5a0623ab68 100644 --- a/apps/settings/src/components/WebAuthn/Device.vue +++ b/apps/settings/src/components/WebAuthn/Device.vue @@ -23,23 +23,23 @@ <div class="webauthn-device"> <span class="icon-webauthn-device" /> {{ name || t('settings', 'Unnamed device') }} - <Actions :force-menu="true"> - <ActionButton icon="icon-delete" @click="$emit('delete')"> + <NcActions :force-menu="true"> + <NcActionButton icon="icon-delete" @click="$emit('delete')"> {{ t('settings', 'Delete') }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> </div> </template> <script> -import Actions from '@nextcloud/vue/dist/Components/Actions' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' export default { name: 'Device', components: { - ActionButton, - Actions, + NcActionButton, + NcActions, }, props: { name: { diff --git a/apps/settings/src/constants/AccountPropertyConstants.js b/apps/settings/src/constants/AccountPropertyConstants.js index 941e20a912a..2f3a84b4908 100644 --- a/apps/settings/src/constants/AccountPropertyConstants.js +++ b/apps/settings/src/constants/AccountPropertyConstants.js @@ -46,7 +46,7 @@ export const ACCOUNT_PROPERTY_ENUM = Object.freeze({ /** Enum of account properties to human readable account property names */ export const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({ - ADDRESS: t('settings', 'Address'), + ADDRESS: t('settings', 'Location'), AVATAR: t('settings', 'Avatar'), BIOGRAPHY: t('settings', 'About'), DISPLAYNAME: t('settings', 'Full name'), @@ -61,6 +61,22 @@ export const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({ WEBSITE: t('settings', 'Website'), }) +export const NAME_READABLE_ENUM = Object.freeze({ + [ACCOUNT_PROPERTY_ENUM.ADDRESS]: ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS, + [ACCOUNT_PROPERTY_ENUM.AVATAR]: ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR, + [ACCOUNT_PROPERTY_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY, + [ACCOUNT_PROPERTY_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME, + [ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION, + [ACCOUNT_PROPERTY_ENUM.EMAIL]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL, + [ACCOUNT_PROPERTY_ENUM.HEADLINE]: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE, + [ACCOUNT_PROPERTY_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION, + [ACCOUNT_PROPERTY_ENUM.PHONE]: ACCOUNT_PROPERTY_READABLE_ENUM.PHONE, + [ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED, + [ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE, + [ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER, + [ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE, +}) + /** Enum of profile specific sections to human readable names */ export const PROFILE_READABLE_ENUM = Object.freeze({ PROFILE_VISIBILITY: t('settings', 'Profile visibility'), diff --git a/apps/settings/src/main-personal-info.js b/apps/settings/src/main-personal-info.js index d3cfd3ec9cc..32d8bfc8b45 100644 --- a/apps/settings/src/main-personal-info.js +++ b/apps/settings/src/main-personal-info.js @@ -26,15 +26,19 @@ import { loadState } from '@nextcloud/initial-state' import { translate as t } from '@nextcloud/l10n' import '@nextcloud/dialogs/styles/toast.scss' -import DisplayNameSection from './components/PersonalInfo/DisplayNameSection/DisplayNameSection' -import EmailSection from './components/PersonalInfo/EmailSection/EmailSection' -import LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection' -import ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection' -import OrganisationSection from './components/PersonalInfo/OrganisationSection/OrganisationSection' -import RoleSection from './components/PersonalInfo/RoleSection/RoleSection' -import HeadlineSection from './components/PersonalInfo/HeadlineSection/HeadlineSection' -import BiographySection from './components/PersonalInfo/BiographySection/BiographySection' -import ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection' +import DisplayNameSection from './components/PersonalInfo/DisplayNameSection.vue' +import EmailSection from './components/PersonalInfo/EmailSection/EmailSection.vue' +import PhoneSection from './components/PersonalInfo/PhoneSection.vue' +import LocationSection from './components/PersonalInfo/LocationSection.vue' +import WebsiteSection from './components/PersonalInfo/WebsiteSection.vue' +import TwitterSection from './components/PersonalInfo/TwitterSection.vue' +import LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection.vue' +import ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection.vue' +import OrganisationSection from './components/PersonalInfo/OrganisationSection.vue' +import RoleSection from './components/PersonalInfo/RoleSection.vue' +import HeadlineSection from './components/PersonalInfo/HeadlineSection.vue' +import BiographySection from './components/PersonalInfo/BiographySection.vue' +import ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue' __webpack_nonce__ = btoa(getRequestToken()) @@ -48,10 +52,18 @@ Vue.mixin({ const DisplayNameView = Vue.extend(DisplayNameSection) const EmailView = Vue.extend(EmailSection) +const PhoneView = Vue.extend(PhoneSection) +const LocationView = Vue.extend(LocationSection) +const WebsiteView = Vue.extend(WebsiteSection) +const TwitterView = Vue.extend(TwitterSection) const LanguageView = Vue.extend(LanguageSection) new DisplayNameView().$mount('#vue-displayname-section') new EmailView().$mount('#vue-email-section') +new PhoneView().$mount('#vue-phone-section') +new LocationView().$mount('#vue-location-section') +new WebsiteView().$mount('#vue-website-section') +new TwitterView().$mount('#vue-twitter-section') new LanguageView().$mount('#vue-language-section') if (profileEnabledGlobally) { diff --git a/apps/settings/src/main-personal-password.js b/apps/settings/src/main-personal-password.js new file mode 100644 index 00000000000..cd27832a7df --- /dev/null +++ b/apps/settings/src/main-personal-password.js @@ -0,0 +1,36 @@ +/** + * @copyright 2022 Carl Schwan <carl@carlschwan.eu> + * + * @license AGPL-3.0-or-later + * + * 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/>. + * + */ + +import Vue from 'vue' + +import PasswordSection from './components/PasswordSection.vue' +import { translate as t, translatePlural as n } from '@nextcloud/l10n' + +// eslint-disable-next-line camelcase +__webpack_nonce__ = btoa(OC.requestToken) + +Vue.prototype.t = t +Vue.prototype.n = n + +export default new Vue({ + el: '#security-password', + name: 'main-personal-password', + render: h => h(PasswordSection), +}) diff --git a/apps/settings/src/mixins/UserRowMixin.js b/apps/settings/src/mixins/UserRowMixin.js index 78214339be9..6342419e9da 100644 --- a/apps/settings/src/mixins/UserRowMixin.js +++ b/apps/settings/src/mixins/UserRowMixin.js @@ -158,15 +158,13 @@ export default { * Generate avatar url * * @param {string} user The user name - * @param {number} size Size integer, default 32 * @return {string} */ - generateAvatar(user, size = 32) { + generateAvatar(user) { return generateUrl( - '/avatar/{user}/{size}?v={version}', + '/avatar/{user}/64?v={version}', { user, - size, version: oc_userconfig.avatar.version, } ) diff --git a/apps/settings/src/store/users.js b/apps/settings/src/store/users.js index ce15fa4e87b..792b9123129 100644 --- a/apps/settings/src/store/users.js +++ b/apps/settings/src/store/users.js @@ -392,7 +392,7 @@ const actions = { /** * Rename group * - * @param {Object} context store context + * @param {object} context store context * @param {string} groupid Group id * @param {string} displayName Group display name * @return {Promise} diff --git a/apps/settings/src/utils/validate.js b/apps/settings/src/utils/validate.js index 58d42863f4e..7d0cf1d9e33 100644 --- a/apps/settings/src/utils/validate.js +++ b/apps/settings/src/utils/validate.js @@ -26,19 +26,7 @@ * TODO add nice validation errors for Profile page settings modal */ -import { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants' - -/** - * Validate the string input - * - * Generic validator just to check that input is not an empty string* - * - * @param {string} input the input - * @return {boolean} - */ -export function validateStringInput(input) { - return input !== '' -} +import { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js' /** * Validate the email input @@ -59,6 +47,22 @@ export function validateEmail(input) { } /** + * Validate the URL input + * + * @param {string} input the input + * @return {boolean} + */ +export function validateUrl(input) { + try { + // eslint-disable-next-line no-new + new URL(input) + return true + } catch (e) { + return false + } +} + +/** * Validate the language input * * @param {object} input the input diff --git a/apps/settings/src/views/Apps.vue b/apps/settings/src/views/Apps.vue index ee7f74c7877..ff7c05cdcd7 100644 --- a/apps/settings/src/views/Apps.vue +++ b/apps/settings/src/views/Apps.vue @@ -21,50 +21,50 @@ --> <template> - <Content app-name="settings" + <NcContent app-name="settings" :class="{ 'with-app-sidebar': app}" :content-class="{ 'icon-loading': loadingList }" :navigation-class="{ 'icon-loading': loading }"> <!-- Categories & filters --> - <AppNavigation> + <NcAppNavigation> <template #list> - <AppNavigationItem id="app-category-your-apps" + <NcAppNavigationItem id="app-category-your-apps" :to="{ name: 'apps' }" :exact="true" icon="icon-category-installed" :title="t('settings', 'Your apps')" /> - <AppNavigationItem id="app-category-enabled" + <NcAppNavigationItem id="app-category-enabled" :to="{ name: 'apps-category', params: { category: 'enabled' } }" icon="icon-category-enabled" :title="t('settings', 'Active apps')" /> - <AppNavigationItem id="app-category-disabled" + <NcAppNavigationItem id="app-category-disabled" :to="{ name: 'apps-category', params: { category: 'disabled' } }" icon="icon-category-disabled" :title="t('settings', 'Disabled apps')" /> - <AppNavigationItem v-if="updateCount > 0" + <NcAppNavigationItem v-if="updateCount > 0" id="app-category-updates" :to="{ name: 'apps-category', params: { category: 'updates' } }" icon="icon-download" :title="t('settings', 'Updates')"> - <AppNavigationCounter slot="counter"> + <NcAppNavigationCounter slot="counter"> {{ updateCount }} - </AppNavigationCounter> - </AppNavigationItem> - <AppNavigationItem id="app-category-your-bundles" + </NcAppNavigationCounter> + </NcAppNavigationItem> + <NcAppNavigationItem id="app-category-your-bundles" :to="{ name: 'apps-category', params: { category: 'app-bundles' } }" icon="icon-category-app-bundles" :title="t('settings', 'App bundles')" /> - <AppNavigationSpacer /> + <NcAppNavigationSpacer /> <!-- App store categories --> <template v-if="settings.appstoreEnabled"> - <AppNavigationItem id="app-category-featured" + <NcAppNavigationItem id="app-category-featured" :to="{ name: 'apps-category', params: { category: 'featured' } }" icon="icon-favorite" :title="t('settings', 'Featured apps')" /> - <AppNavigationItem v-for="cat in categories" + <NcAppNavigationItem v-for="cat in categories" :key="'icon-category-' + cat.ident" :icon="'icon-category-' + cat.ident" :to="{ @@ -74,19 +74,19 @@ :title="cat.displayName" /> </template> - <AppNavigationItem id="app-developer-docs" + <NcAppNavigationItem id="app-developer-docs" :title="t('settings', 'Developer documentation') + ' ↗'" @click="openDeveloperDocumentation" /> </template> - </AppNavigation> + </NcAppNavigation> <!-- Apps list --> - <AppContent class="app-settings-content" :class="{ 'icon-loading': loadingList }"> + <NcAppContent class="app-settings-content" :class="{ 'icon-loading': loadingList }"> <AppList :category="category" :app="app" :search="searchQuery" /> - </AppContent> + </NcAppContent> <!-- Selected app details --> - <AppSidebar v-if="id && app" + <NcAppSidebar v-if="id && app" v-bind="appSidebar" :class="{'app-sidebar--without-background': !appSidebar.background}" @close="hideAppDetails"> @@ -114,13 +114,13 @@ <!-- Tab content --> - <AppSidebarTab id="desc" + <NcAppSidebarTab id="desc" icon="icon-category-office" :name="t('settings', 'Details')" :order="0"> <AppDetails :app="app" /> - </AppSidebarTab> - <AppSidebarTab v-if="app.appstoreData && app.releases[0].translations.en.changelog" + </NcAppSidebarTab> + <NcAppSidebarTab v-if="app.appstoreData && app.releases[0].translations.en.changelog" id="desca" icon="icon-category-organization" :name="t('settings', 'Changelog')" @@ -129,9 +129,9 @@ <h2>{{ release.version }}</h2> <Markdown v-if="changelog(release)" :text="changelog(release)" /> </div> - </AppSidebarTab> - </AppSidebar> - </Content> + </NcAppSidebarTab> + </NcAppSidebar> + </NcContent> </template> <script> @@ -139,14 +139,14 @@ import { subscribe, unsubscribe } from '@nextcloud/event-bus' import Vue from 'vue' import VueLocalStorage from 'vue-localstorage' -import AppContent from '@nextcloud/vue/dist/Components/AppContent' -import AppNavigation from '@nextcloud/vue/dist/Components/AppNavigation' -import AppNavigationCounter from '@nextcloud/vue/dist/Components/AppNavigationCounter' -import AppNavigationItem from '@nextcloud/vue/dist/Components/AppNavigationItem' -import AppNavigationSpacer from '@nextcloud/vue/dist/Components/AppNavigationSpacer' -import AppSidebar from '@nextcloud/vue/dist/Components/AppSidebar' -import AppSidebarTab from '@nextcloud/vue/dist/Components/AppSidebarTab' -import Content from '@nextcloud/vue/dist/Components/Content' +import NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent' +import NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation' +import NcAppNavigationCounter from '@nextcloud/vue/dist/Components/NcAppNavigationCounter' +import NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem' +import NcAppNavigationSpacer from '@nextcloud/vue/dist/Components/NcAppNavigationSpacer' +import NcAppSidebar from '@nextcloud/vue/dist/Components/NcAppSidebar' +import NcAppSidebarTab from '@nextcloud/vue/dist/Components/NcAppSidebarTab' +import NcContent from '@nextcloud/vue/dist/Components/NcContent' import AppList from '../components/AppList' import AppDetails from '../components/AppDetails' @@ -160,17 +160,17 @@ export default { name: 'Apps', components: { - AppContent, + NcAppContent, AppDetails, AppList, - AppNavigation, - AppNavigationCounter, - AppNavigationItem, - AppNavigationSpacer, + NcAppNavigation, + NcAppNavigationCounter, + NcAppNavigationItem, + NcAppNavigationSpacer, AppScore, - AppSidebar, - AppSidebarTab, - Content, + NcAppSidebar, + NcAppSidebarTab, + NcContent, Markdown, }, diff --git a/apps/settings/src/views/Users.vue b/apps/settings/src/views/Users.vue index c3d3d9f3c72..ce3ce235c31 100644 --- a/apps/settings/src/views/Users.vue +++ b/apps/settings/src/views/Users.vue @@ -21,16 +21,16 @@ --> <template> - <Content app-name="settings" :navigation-class="{ 'icon-loading': loadingAddGroup }"> - <AppNavigation> - <AppNavigationNew button-id="new-user-button" + <NcContent app-name="settings" :navigation-class="{ 'icon-loading': loadingAddGroup }"> + <NcAppNavigation> + <NcAppNavigationNew button-id="new-user-button" :text="t('settings','New user')" button-class="icon-add" @click="showNewUserMenu" @keyup.enter="showNewUserMenu" @keyup.space="showNewUserMenu" /> <template #list> - <AppNavigationItem id="addgroup" + <NcAppNavigationItem id="addgroup" ref="addGroup" :edit-placeholder="t('settings', 'Enter group name')" :editable="true" @@ -39,39 +39,39 @@ icon="icon-add" @click="showAddGroupForm" @update:title="createGroup" /> - <AppNavigationItem id="everyone" + <NcAppNavigationItem id="everyone" :exact="true" :title="t('settings', 'Active users')" :to="{ name: 'users' }" icon="icon-contacts-dark"> - <AppNavigationCounter v-if="userCount > 0" slot="counter"> + <NcAppNavigationCounter v-if="userCount > 0" slot="counter"> {{ userCount }} - </AppNavigationCounter> - </AppNavigationItem> - <AppNavigationItem v-if="settings.isAdmin" + </NcAppNavigationCounter> + </NcAppNavigationItem> + <NcAppNavigationItem v-if="settings.isAdmin" id="admin" :exact="true" :title="t('settings', 'Admins')" :to="{ name: 'group', params: { selectedGroup: 'admin' } }" icon="icon-user-admin"> - <AppNavigationCounter v-if="adminGroupMenu.count" slot="counter"> + <NcAppNavigationCounter v-if="adminGroupMenu.count" slot="counter"> {{ adminGroupMenu.count }} - </AppNavigationCounter> - </AppNavigationItem> + </NcAppNavigationCounter> + </NcAppNavigationItem> <!-- Hide the disabled if none, if we don't have the data (-1) show it --> - <AppNavigationItem v-if="disabledGroupMenu.usercount > 0 || disabledGroupMenu.usercount === -1" + <NcAppNavigationItem v-if="disabledGroupMenu.usercount > 0 || disabledGroupMenu.usercount === -1" id="disabled" :exact="true" :title="t('settings', 'Disabled users')" :to="{ name: 'group', params: { selectedGroup: 'disabled' } }" icon="icon-disabled-users"> - <AppNavigationCounter v-if="disabledGroupMenu.usercount > 0" slot="counter"> + <NcAppNavigationCounter v-if="disabledGroupMenu.usercount > 0" slot="counter"> {{ disabledGroupMenu.usercount }} - </AppNavigationCounter> - </AppNavigationItem> + </NcAppNavigationCounter> + </NcAppNavigationItem> - <AppNavigationCaption v-if="groupList.length > 0" :title="t('settings', 'Groups')" /> + <NcAppNavigationCaption v-if="groupList.length > 0" :title="t('settings', 'Groups')" /> <GroupListItem v-for="group in groupList" :id="group.id" :key="group.id" @@ -79,10 +79,10 @@ :count="group.count" /> </template> <template #footer> - <AppNavigationSettings> + <NcAppNavigationSettings> <div> <p>{{ t('settings', 'Default quota:') }}</p> - <Multiselect :value="defaultQuota" + <NcMultiselect :value="defaultQuota" :options="quotaOptions" tag-placeholder="create" :placeholder="t('settings', 'Select default quota')" @@ -129,30 +129,30 @@ class="checkbox"> <label for="sendWelcomeMail">{{ t('settings', 'Send email to new user') }}</label> </div> - </AppNavigationSettings> + </NcAppNavigationSettings> </template> - </AppNavigation> - <AppContent> + </NcAppNavigation> + <NcAppContent> <UserList :users="users" :show-config="showConfig" :selected-group="selectedGroupDecoded" :external-actions="externalActions" /> - </AppContent> - </Content> + </NcAppContent> + </NcContent> </template> <script> -import AppContent from '@nextcloud/vue/dist/Components/AppContent' -import AppNavigation from '@nextcloud/vue/dist/Components/AppNavigation' -import AppNavigationCaption from '@nextcloud/vue/dist/Components/AppNavigationCaption' -import AppNavigationCounter from '@nextcloud/vue/dist/Components/AppNavigationCounter' -import AppNavigationItem from '@nextcloud/vue/dist/Components/AppNavigationItem' -import AppNavigationNew from '@nextcloud/vue/dist/Components/AppNavigationNew' -import AppNavigationSettings from '@nextcloud/vue/dist/Components/AppNavigationSettings' +import NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent' +import NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation' +import NcAppNavigationCaption from '@nextcloud/vue/dist/Components/NcAppNavigationCaption' +import NcAppNavigationCounter from '@nextcloud/vue/dist/Components/NcAppNavigationCounter' +import NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem' +import NcAppNavigationNew from '@nextcloud/vue/dist/Components/NcAppNavigationNew' +import NcAppNavigationSettings from '@nextcloud/vue/dist/Components/NcAppNavigationSettings' import axios from '@nextcloud/axios' -import Content from '@nextcloud/vue/dist/Components/Content' +import NcContent from '@nextcloud/vue/dist/Components/NcContent' import { generateUrl } from '@nextcloud/router' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import Vue from 'vue' import VueLocalStorage from 'vue-localstorage' @@ -164,16 +164,16 @@ Vue.use(VueLocalStorage) export default { name: 'Users', components: { - AppContent, - AppNavigation, - AppNavigationCaption, - AppNavigationCounter, - AppNavigationItem, - AppNavigationNew, - AppNavigationSettings, - Content, + NcAppContent, + NcAppNavigation, + NcAppNavigationCaption, + NcAppNavigationCounter, + NcAppNavigationItem, + NcAppNavigationNew, + NcAppNavigationSettings, + NcContent, GroupListItem, - Multiselect, + NcMultiselect, UserList, }, props: { diff --git a/apps/settings/templates/help.php b/apps/settings/templates/help.php index 6450b3a36ec..18cba18559a 100644 --- a/apps/settings/templates/help.php +++ b/apps/settings/templates/help.php @@ -1,12 +1,12 @@ <?php \OC_Util::addStyle('settings', 'help'); ?> -<div id="app-navigation"> +<div id="app-navigation" role="navigation" tabindex="0"> <ul> <li> <a class="icon-user <?php if ($_['mode'] === 'user') { p('active'); -} ?>" +} ?>" <?php if ($_['mode'] === 'user') { print_unescaped('aria-current="page"'); } ?> href="<?php print_unescaped($_['urlUserDocs']); ?>"> <span class="help-list__text"> <?php p($l->t('User documentation')); ?> @@ -17,7 +17,7 @@ <li> <a class="icon-user-admin <?php if ($_['mode'] === 'admin') { p('active'); -} ?>" +} ?>" <?php if ($_['mode'] === 'admin') { print_unescaped('aria-current="page"'); } ?> href="<?php print_unescaped($_['urlAdminDocs']); ?>"> <span class="help-list__text"> <?php p($l->t('Administrator documentation')); ?> @@ -43,6 +43,6 @@ </div> <div id="app-content" class="help-includes"> - <iframe src="<?php print_unescaped($_['url']); ?>" class="help-iframe"> + <iframe src="<?php print_unescaped($_['url']); ?>" class="help-iframe" tabindex="0"> </iframe> </div> diff --git a/apps/settings/templates/settings/frame.php b/apps/settings/templates/settings/frame.php index 6d017f07671..93b03ac7eca 100644 --- a/apps/settings/templates/settings/frame.php +++ b/apps/settings/templates/settings/frame.php @@ -29,8 +29,8 @@ script('files', 'jquery.fileupload'); ?> -<div id="app-navigation"> - <ul> +<div id="app-navigation" role="navigation"> + <ul tabindex="0"> <?php if (!empty($_['forms']['admin'])) { ?> <li class="app-navigation-caption"><?php p($l->t('Personal')); ?></li> <?php @@ -39,10 +39,9 @@ script('files', 'jquery.fileupload'); if (isset($form['anchor'])) { $anchor = \OC::$server->getURLGenerator()->linkToRoute('settings.PersonalSettings.index', ['section' => $form['anchor']]); $class = 'nav-icon-' . $form['anchor']; - $sectionName = $form['section-name']; - $active = $form['active'] ? ' class="active"' : ''; ?> + $sectionName = $form['section-name']; ?> <li <?php print_unescaped($form['active'] ? ' class="active"' : ''); ?>> - <a href="<?php p($anchor); ?>"> + <a href="<?php p($anchor); ?>"<?php print_unescaped($form['active'] ? ' aria-current="page"' : ''); ?>> <?php if (!empty($form['icon'])) { ?> <img alt="" src="<?php print_unescaped($form['icon']); ?>"> <span><?php p($form['section-name']); ?></span> @@ -66,10 +65,9 @@ script('files', 'jquery.fileupload'); if (isset($form['anchor'])) { $anchor = \OC::$server->getURLGenerator()->linkToRoute('settings.AdminSettings.index', ['section' => $form['anchor']]); $class = 'nav-icon-' . $form['anchor']; - $sectionName = $form['section-name']; - $active = $form['active'] ? ' class="active"' : ''; ?> + $sectionName = $form['section-name']; ?> <li <?php print_unescaped($form['active'] ? ' class="active"' : ''); ?>> - <a href="<?php p($anchor); ?>"> + <a href="<?php p($anchor); ?>"<?php print_unescaped($form['active'] ? ' aria-current="page"' : ''); ?>> <?php if (!empty($form['icon'])) { ?> <img alt="" src="<?php print_unescaped($form['icon']); ?>"> <span><?php p($form['section-name']); ?></span> @@ -85,6 +83,6 @@ script('files', 'jquery.fileupload'); </ul> </div> -<div id="app-content"> +<div id="app-content" tabindex="0"> <?php print_unescaped($_['content']); ?> </div> diff --git a/apps/settings/templates/settings/personal/personal.info.php b/apps/settings/templates/settings/personal/personal.info.php index 98009cc52be..9c18ec71d4a 100644 --- a/apps/settings/templates/settings/personal/personal.info.php +++ b/apps/settings/templates/settings/personal/personal.info.php @@ -120,124 +120,16 @@ script('settings', [ <div id="vue-email-section"></div> </div> <div class="personal-settings-setting-box"> - <form id="phoneform" class="section"> - <h3> - <label for="phone"><?php p($l->t('Phone number')); ?></label> - <a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of phone number')); ?>"> - <span class="icon-federation-menu icon-password"> - <span class="icon-triangle-s"></span> - </span> - </a> - </h3> - <input type="tel" id="phone" name="phone" value="<?php p($_['phone']) ?>" placeholder="<?php p($l->t('Your phone number')); ?>" autocomplete="on" autocapitalize="none" autocorrect="off" /> - <span class="icon-checkmark hidden"></span> - <span class="icon-error hidden"></span> - <input type="hidden" id="phonescope" value="<?php p($_['phoneScope']) ?>"> - </form> + <div id="vue-phone-section"></div> </div> <div class="personal-settings-setting-box"> - <form id="addressform" class="section"> - <h3> - <label for="address"><?php p($l->t('Address')); ?></label> - <a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of address')); ?>"> - <span class="icon-federation-menu icon-password"> - <span class="icon-triangle-s"></span> - </span> - </a> - </h3> - <input type="text" id="address" name="address" placeholder="<?php p($l->t('Your postal address')); ?>" value="<?php p($_['address']) ?>" autocomplete="on" autocapitalize="none" autocorrect="off" /> - <span class="icon-checkmark hidden"></span> - <span class="icon-error hidden"></span> - <input type="hidden" id="addressscope" value="<?php p($_['addressScope']) ?>"> - </form> + <div id="vue-location-section"></div> </div> <div class="personal-settings-setting-box"> - <form id="websiteform" class="section"> - <h3> - <label for="website"><?php p($l->t('Website')); ?></label> - <a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of website')); ?>"> - <span class="icon-federation-menu icon-password"> - <span class="icon-triangle-s"></span> - </span> - </a> - </h3> - <?php if ($_['lookupServerUploadEnabled']) { ?> - <div class="verify <?php if ($_['website'] === '' || $_['websiteScope'] !== 'public') { - p('hidden'); - } ?>"> - <img id="verify-website" title="<?php p($_['websiteMessage']); ?>" data-status="<?php p($_['websiteVerification']) ?>" src=" - <?php - switch ($_['websiteVerification']) { - case \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS: - p(image_path('core', 'actions/verifying.svg')); - break; - case \OC\Accounts\AccountManager::VERIFIED: - p(image_path('core', 'actions/verified.svg')); - break; - default: - p(image_path('core', 'actions/verify.svg')); - } - ?>" <?php if ($_['websiteVerification'] === \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS || $_['websiteVerification'] === \OC\Accounts\AccountManager::NOT_VERIFIED) { - print_unescaped(' class="verify-action"'); - } ?>> - <div class="verification-dialog popovermenu bubble menu"> - <div class="verification-dialog-content"> - <p class="explainVerification"></p> - <p class="verificationCode"></p> - <p><?php p($l->t('It can take up to 24 hours before the account is displayed as verified.')); ?></p> - </div> - </div> - </div> - <?php } ?> - <input type="url" name="website" id="website" value="<?php p($_['website']); ?>" placeholder="<?php p($l->t('Link https://…')); ?>" autocomplete="on" autocapitalize="none" autocorrect="off" /> - <span class="icon-checkmark hidden"></span> - <span class="icon-error hidden"></span> - <input type="hidden" id="websitescope" value="<?php p($_['websiteScope']) ?>"> - </form> + <div id="vue-website-section"></div> </div> <div class="personal-settings-setting-box"> - <form id="twitterform" class="section"> - <h3> - <label for="twitter"><?php p($l->t('Twitter')); ?></label> - <a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of Twitter profile')); ?>"> - <span class="icon-federation-menu icon-password"> - <span class="icon-triangle-s"></span> - </span> - </a> - </h3> - <?php if ($_['lookupServerUploadEnabled']) { ?> - <div class="verify <?php if ($_['twitter'] === '' || $_['twitterScope'] !== 'public') { - p('hidden'); - } ?>"> - <img id="verify-twitter" title="<?php p($_['twitterMessage']); ?>" data-status="<?php p($_['twitterVerification']) ?>" src=" - <?php - switch ($_['twitterVerification']) { - case \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS: - p(image_path('core', 'actions/verifying.svg')); - break; - case \OC\Accounts\AccountManager::VERIFIED: - p(image_path('core', 'actions/verified.svg')); - break; - default: - p(image_path('core', 'actions/verify.svg')); - } - ?>" <?php if ($_['twitterVerification'] === \OC\Accounts\AccountManager::VERIFICATION_IN_PROGRESS || $_['twitterVerification'] === \OC\Accounts\AccountManager::NOT_VERIFIED) { - print_unescaped(' class="verify-action"'); - } ?>> - <div class="verification-dialog popovermenu bubble menu"> - <div class="verification-dialog-content"> - <p class="explainVerification"></p> - <p class="verificationCode"></p> - <p><?php p($l->t('It can take up to 24 hours before the account is displayed as verified.')); ?></p> - </div> - </div> - </div> - <?php } ?> - <input type="text" name="twitter" id="twitter" value="<?php p($_['twitter']); ?>" placeholder="<?php p($l->t('Twitter handle @…')); ?>" autocomplete="on" autocapitalize="none" autocorrect="off" /> - <span class="icon-checkmark hidden"></span> - <span class="icon-error hidden"></span> - <input type="hidden" id="twitterscope" value="<?php p($_['twitterScope']) ?>"> - </form> + <div id="vue-twitter-section"></div> </div> <?php if ($_['profileEnabledGlobally']) : ?> <div class="personal-settings-setting-box"> diff --git a/apps/settings/templates/settings/personal/security/password.php b/apps/settings/templates/settings/personal/security/password.php index 85959e252cc..bc363b15aa7 100644 --- a/apps/settings/templates/settings/personal/security/password.php +++ b/apps/settings/templates/settings/personal/security/password.php @@ -1,6 +1,7 @@ <?php /** * @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> + * @copyright Copyright (c) 2022 Carl Schwan <carl@carlschwan.eu> * * @author Arthur Schiwon <blizzz@arthur-schiwon.de> * @@ -21,42 +22,8 @@ * */ -script('settings', [ - 'settings', - 'templates', - 'vue-settings-personal-security', -]); - if ($_['passwordChangeSupported']) { - script('settings', 'security_password'); + \OCP\Util::addScript('settings', 'vue-settings-personal-password'); } - ?> -<?php if ($_['passwordChangeSupported']) { ?> -<div id="security-password" class="section"> - <h2 class="inlineblock"><?php p($l->t('Password'));?></h2> - <span id="password-error-msg" class="msg success hidden">Saved</span> - <div class="personal-settings-setting-box personal-settings-password-box"> - <form id="passwordform" method="POST"> - <label for="pass1" class="hidden-visually"><?php p($l->t('Current password')); ?>: </label> - <input type="password" id="pass1" name="oldpassword" - placeholder="<?php p($l->t('Current password'));?>" - autocomplete="current-password" autocapitalize="none" autocorrect="off" /> - - <div class="personal-show-container"> - <label for="pass2" class="hidden-visually"><?php p($l->t('New password'));?>: </label> - <input type="password" id="pass2" name="newpassword" - maxlength="469" - placeholder="<?php p($l->t('New password')); ?>" - data-typetoggle="#personal-show" - autocomplete="new-password" autocapitalize="none" autocorrect="off" /> - <input type="checkbox" id="personal-show" class="hidden-visually" name="show" /><label for="personal-show" class="personal-show-label"></label> - </div> - - <input id="passwordbutton" type="submit" value="<?php p($l->t('Change password')); ?>" /> - - </form> - </div> - <span class="msg"></span> -</div> -<?php } ?> +<div id="security-password"></div> diff --git a/apps/sharebymail/composer/composer/installed.php b/apps/sharebymail/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/sharebymail/composer/composer/installed.php +++ b/apps/sharebymail/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/sharebymail/l10n/de.js b/apps/sharebymail/l10n/de.js index b48281d0746..c11155c9678 100644 --- a/apps/sharebymail/l10n/de.js +++ b/apps/sharebymail/l10n/de.js @@ -11,7 +11,7 @@ OC.L10N.register( "Unshared from {email} by {actor}" : "Nicht mehr geteilt mit {email} durch {actor}", "Password for mail share sent to %1$s" : "Passwort für E-Mail-Freigabe wurde an %1$s versandt", "Password for mail share sent to {email}" : "Passwort für E-Mail-Freigabe wurde an {email} versandt", - "Password for mail share sent to you" : "Passwort für E-Mail-Freigabe wurde an Dich versandt", + "Password for mail share sent to you" : "Passwort für E-Mail-Freigabe wurde an dich versandt", "You shared %1$s with %2$s by mail" : "Du teilst %1$s mit %2$s via E-Mail", "You shared {file} with {email} by mail" : "Du teilst {file} mit {email} via E-Mail", "%3$s shared %1$s with %2$s by mail" : "%3$s teilt %1$s mit %2$s via E-mail", @@ -22,30 +22,30 @@ OC.L10N.register( "{actor} unshared {file} from {email} by mail" : "{actor} teilt {file} nicht mehr mit {email} via 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 ", + "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 ", "Share by mail" : "Geteilt über eine E-Mail", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element bereits für den Benutzer freigegeben ist %2$s", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes 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 email. Got an invalid email address" : "Die Freigabe per E-Mail konnte nicht gesendet werden. Habe eine ungültige E-Mail-Adresse erhalten.", "Failed to send share by email" : "Fehler beim Senden der Freigabe per E-Mail", - "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Dir geteilt", - "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Dir geteilt.", + "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit dir geteilt", + "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit dir geteilt.", "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%1$s via %2$s" : "%1$s über %2$s", - "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s hat »%2$s« mit Dir geteilt.\nDu solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben.\n", - "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s hat »%2$s« mit Dir geteilt. Du solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben. ", - "Password to access »%1$s« shared to you by %2$s" : "Das Passwort zum Zugriff auf %1$s wurde durch %2$s mit Dir geteilt.", + "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s hat »%2$s« mit dir geteilt.\nDu solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben.\n", + "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s hat »%2$s« mit dir geteilt. Du solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben. ", + "Password to access »%1$s« shared to you by %2$s" : "Das Passwort zum Zugriff auf %1$s wurde durch %2$s mit dir geteilt.", "Password to access »%s«" : "Passwort um auf »%s« zu zugreifen", "It is protected with the following password:" : "Dies ist mit dem folgendem Passwort geschützt:", - "%1$s shared »%2$s« with you and wants to add:" : "%1$s hat »%2$s« mit Dir geteilt und möchte folgendes hinzufügen:", - "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit Dir geteilt und möchte folgendes hinzufügen", - "»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit Dir geteilten Datei hinzugefügt", - "You just shared »%1$s« with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du hast »%1$s« mit %2$s geteilt. Die Freigabe wurde an den Empfänger gesandt. Aufgrund der Sicherheits-Richtlinien, die der Administrator von %3$s vorgegeben hat, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund musst Du das Passwort selbst an den Empfänger senden.", - "Password to access »%1$s« shared by you with %2$s" : "Passwort zum Zugriff auf »%1$s« wurde von Dir mit %2$s geteilt", + "%1$s shared »%2$s« with you and wants to add:" : "%1$s hat »%2$s« mit dir geteilt und möchte folgendes hinzufügen:", + "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit dir geteilt und möchte folgendes hinzufügen", + "»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit dir geteilten Datei hinzugefügt", + "You just shared »%1$s« with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du hast »%1$s« mit %2$s geteilt. Die Freigabe wurde an den Empfänger gesandt. Aufgrund der Sicherheits-Richtlinien, die der Administrator von %3$s vorgegeben hat, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund musst du das Passwort selbst an den Empfänger senden.", + "Password to access »%1$s« shared by you with %2$s" : "Passwort zum Zugriff auf »%1$s« wurde von dir mit %2$s geteilt", "This is the password:" : "Das Passwort lautet: ", - "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog kannst Du jederzeit ein anderes Passwort wählen.", + "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 provider which allows you to share files by mail" : "Anbieter zum Teilen. Ermöglicht das Teilen von Dateien per E-Mail", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Ermöglicht Benutzern eine personalisierte Verknüpfung zu einer Datei oder einem Ordner durch Eingabe einer E-Mail-Adresse zu teilen.", diff --git a/apps/sharebymail/l10n/de.json b/apps/sharebymail/l10n/de.json index 05c6cd12db5..df3dede9c9f 100644 --- a/apps/sharebymail/l10n/de.json +++ b/apps/sharebymail/l10n/de.json @@ -9,7 +9,7 @@ "Unshared from {email} by {actor}" : "Nicht mehr geteilt mit {email} durch {actor}", "Password for mail share sent to %1$s" : "Passwort für E-Mail-Freigabe wurde an %1$s versandt", "Password for mail share sent to {email}" : "Passwort für E-Mail-Freigabe wurde an {email} versandt", - "Password for mail share sent to you" : "Passwort für E-Mail-Freigabe wurde an Dich versandt", + "Password for mail share sent to you" : "Passwort für E-Mail-Freigabe wurde an dich versandt", "You shared %1$s with %2$s by mail" : "Du teilst %1$s mit %2$s via E-Mail", "You shared {file} with {email} by mail" : "Du teilst {file} mit {email} via E-Mail", "%3$s shared %1$s with %2$s by mail" : "%3$s teilt %1$s mit %2$s via E-mail", @@ -20,30 +20,30 @@ "{actor} unshared {file} from {email} by mail" : "{actor} teilt {file} nicht mehr mit {email} via 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 ", + "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 ", "Share by mail" : "Geteilt über eine E-Mail", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Freigabe von %1$s fehlgeschlagen, da dieses Element bereits für den Benutzer freigegeben ist %2$s", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automatisch erzeugtes 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 email. Got an invalid email address" : "Die Freigabe per E-Mail konnte nicht gesendet werden. Habe eine ungültige E-Mail-Adresse erhalten.", "Failed to send share by email" : "Fehler beim Senden der Freigabe per E-Mail", - "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit Dir geteilt", - "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Dir geteilt.", + "%1$s shared »%2$s« with you" : "%1$s hat »%2$s« mit dir geteilt", + "%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit dir geteilt.", "Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche", "Open »%s«" : "Öffne »%s«", "%1$s via %2$s" : "%1$s über %2$s", - "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s hat »%2$s« mit Dir geteilt.\nDu solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben.\n", - "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s hat »%2$s« mit Dir geteilt. Du solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben. ", - "Password to access »%1$s« shared to you by %2$s" : "Das Passwort zum Zugriff auf %1$s wurde durch %2$s mit Dir geteilt.", + "%1$s shared »%2$s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%1$s hat »%2$s« mit dir geteilt.\nDu solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben.\n", + "%1$s shared »%2$s« with you. You should have already received a separate mail with a link to access it." : "%1$s hat »%2$s« mit dir geteilt. Du solltest bereits eine weitere E-Mail mit einem Link für den Zugriff erhalten haben. ", + "Password to access »%1$s« shared to you by %2$s" : "Das Passwort zum Zugriff auf %1$s wurde durch %2$s mit dir geteilt.", "Password to access »%s«" : "Passwort um auf »%s« zu zugreifen", "It is protected with the following password:" : "Dies ist mit dem folgendem Passwort geschützt:", - "%1$s shared »%2$s« with you and wants to add:" : "%1$s hat »%2$s« mit Dir geteilt und möchte folgendes hinzufügen:", - "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit Dir geteilt und möchte folgendes hinzufügen", - "»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit Dir geteilten Datei hinzugefügt", - "You just shared »%1$s« with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du hast »%1$s« mit %2$s geteilt. Die Freigabe wurde an den Empfänger gesandt. Aufgrund der Sicherheits-Richtlinien, die der Administrator von %3$s vorgegeben hat, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund musst Du das Passwort selbst an den Empfänger senden.", - "Password to access »%1$s« shared by you with %2$s" : "Passwort zum Zugriff auf »%1$s« wurde von Dir mit %2$s geteilt", + "%1$s shared »%2$s« with you and wants to add:" : "%1$s hat »%2$s« mit dir geteilt und möchte folgendes hinzufügen:", + "%1$s shared »%2$s« with you and wants to add" : "%1$s hat »%2$s« mit dir geteilt und möchte folgendes hinzufügen", + "»%s« added a note to a file shared with you" : "»%s« hat eine Bemerkung zu einer mit dir geteilten Datei hinzugefügt", + "You just shared »%1$s« with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Du hast »%1$s« mit %2$s geteilt. Die Freigabe wurde an den Empfänger gesandt. Aufgrund der Sicherheits-Richtlinien, die der Administrator von %3$s vorgegeben hat, benötigt jede Freigabe einen Passwortschutz und es ist nicht zulässig, ein Passwort direkt an den Empfänger zu versenden. Aus diesem Grund musst du das Passwort selbst an den Empfänger senden.", + "Password to access »%1$s« shared by you with %2$s" : "Passwort zum Zugriff auf »%1$s« wurde von dir mit %2$s geteilt", "This is the password:" : "Das Passwort lautet: ", - "You can choose a different password at any time in the share dialog." : "Im Teilen-Dialog kannst Du jederzeit ein anderes Passwort wählen.", + "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 provider which allows you to share files by mail" : "Anbieter zum Teilen. Ermöglicht das Teilen von Dateien per E-Mail", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Ermöglicht Benutzern eine personalisierte Verknüpfung zu einer Datei oder einem Ordner durch Eingabe einer E-Mail-Adresse zu teilen.", diff --git a/apps/sharebymail/l10n/fi.js b/apps/sharebymail/l10n/fi.js index 4afbd8169d9..614dc830268 100644 --- a/apps/sharebymail/l10n/fi.js +++ b/apps/sharebymail/l10n/fi.js @@ -1,31 +1,46 @@ OC.L10N.register( "sharebymail", { - "Shared with %1$s" : "Jaettu käyttäjälle %1$s", + "Shared with %1$s" : "Jaettu käyttäjälle %1$s", "Shared with {email}" : "Jaettu käyttäjälle {email}", - "Shared with %1$s by %2$s" : "Jaettu käyttäjälle %1$s käyttäjältä %2$s", - "Shared with {email} by {actor}" : "Jaettu käyttäjälle {email} käyttäjältä {actor}", + "Shared with %1$s by %2$s" : "Jaettu käyttäjälle %1$s käyttäjän %2$s toimesta", + "Shared with {email} by {actor}" : "Jaettu käyttäjälle {email} käyttäjän {actor} toimesta", + "Unshared from {email}" : "Jako käyttäjälle {email} lopetettu", + "Unshared from {email} by {actor}" : "Jako käyttäjälle {email} lopetettiin käyttäjän {actor} toimesta", + "Password for mail share sent to %1$s" : "Salasana sähköpostijakoon lähetettiin osoitteeseen %1$s", + "Password for mail share sent to {email}" : "Salasana sähköpostijakoon lähetettiin osoitteeseen {email}", + "Password for mail share sent to you" : "Salasana sähköpostijakoon lähetettiin sinulle", "You shared %1$s with %2$s by mail" : "Jaoit tiedoston %1$s sähköpostitse osoitteeseen %2$s", "You shared {file} with {email} by mail" : "Jaoit tiedoston {file} sähköpostitse osoitteeseen {email}", "%3$s shared %1$s with %2$s by mail" : "%3$s jakoi tiedoston %1$s sähköpostitse osoitteeseen %2$s", "{actor} shared {file} with {email} by mail" : "{actor} jakoi tiedoston {file} sähköpostitse osoitteeseen {email}", + "You unshared %1$s from %2$s by mail" : "Lopetit kohteen %1$s jaon käyttäjältä %2$s sähköpostitse", + "You unshared {file} from {email} by mail" : "Lopetit kohteen {file} jaon käyttäjältä {email} sähköpostitse", + "Password to access %1$s was sent to %2s" : "Salasana kohteen %1$s käyttämiseksi lähetettiin käyttäjälle %2s", + "Password to access {file} was sent to {email}" : "Salasana kohteen {file} käyttämiseksi lähetettiin osoitteeseen {email}", + "Password to access %1$s was sent to you" : "Salasana kohteen %1$s käyttämiseksi lähetettiin sinulle", "Password to access {file} was sent to you" : "Salasana tiedoston {file} käyttämiseksi lähetettiin sinulle", + "Share by mail" : "Jaa sähköpostitse", + "Sharing %1$s failed, because this item is already shared with user %2$s" : "Kohteen %1$s jakaminen epäonnistui, koska tämä kohde on jo jaettu käyttäjän %2$s kanssa", + "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automaattisesti muodostettua salasanaa ei voi lähettää sinulle. Aseta kelvollinen sähköpostiosoite henkilökohtaisiin asetuksiisi ja yritä uudelleen.", + "Failed to send share by email. Got an invalid email address" : "Jaon lähettäminen sähköpostitse epäonnistui. Virheellinen sähköpostiosoite", "Failed to send share by email" : "Jaon lähettäminen sähköpostitse epäonnistui", - "Click the button below to open it." : "Klikkaa alla olevaa linkkiä avataksesi sen.", + "%1$s shared »%2$s« with you" : "%1$s jakoi kohteen »%2$s« kanssasi", + "%1$s shared »%2$s« with you." : "%1$s jakoi kohteen »%2$s« kanssasi.", + "Click the button below to open it." : "Napsauta alla olevaa linkkiä avataksesi sen.", "Open »%s«" : "Avaa »%s«", + "%1$s via %2$s" : "%1$s palvelun %2$s kautta", + "Password to access »%s«" : "Salasana kohteen »%s« käyttöön", "It is protected with the following password:" : "Se on suojattu seuraavalla salasanalla:", + "This password will expire at %s" : "Tämä salasana vanhenee %s", + "%1$s shared »%2$s« with you and wants to add:" : "%1$s jakoi kohteen »%2$s« kanssasi ja haluaa lisätä:", + "%1$s shared »%2$s« with you and wants to add" : "%1$s jakoi kohteen »%2$s« kanssasi ja haluaa lisätä", + "»%s« added a note to a file shared with you" : "»%s« lisäsi huomion jakamaasi tiedostoon", "This is the password:" : "Tämä on salasana:", "You can choose a different password at any time in the share dialog." : "Voit valita muun salasanan koska tahansa jakovalikossa.", "Could not find share" : "Jakoa ei löytynyt", - "Share by mail" : "Jaa sähköpostitse", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Salli käyttäjien jakaa personoitu linkki tiedostoon tai kansioon syöttämällä sähköpostiosoitteen.", "Send password by mail" : "Lähetä salasana sähköpostitse", - "Enforce password protection" : "Pakota salasanasuojaus", - "Sharing %s failed, this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska se on jo jaettu käyttäjälle %s", - "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", - "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.", - "%s via %s" : "%s (palvelun %s kautta)", - "It is protected with the following password: %s" : "Se on suojattu seuraavalla salasanalla: %s", - "This is the password: %s" : "Tämä on salasana: %s" + "Reply to initiator" : "Vastaa aloitteentekijälle" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/fi.json b/apps/sharebymail/l10n/fi.json index c653bdf4396..39407ab0019 100644 --- a/apps/sharebymail/l10n/fi.json +++ b/apps/sharebymail/l10n/fi.json @@ -1,29 +1,44 @@ { "translations": { - "Shared with %1$s" : "Jaettu käyttäjälle %1$s", + "Shared with %1$s" : "Jaettu käyttäjälle %1$s", "Shared with {email}" : "Jaettu käyttäjälle {email}", - "Shared with %1$s by %2$s" : "Jaettu käyttäjälle %1$s käyttäjältä %2$s", - "Shared with {email} by {actor}" : "Jaettu käyttäjälle {email} käyttäjältä {actor}", + "Shared with %1$s by %2$s" : "Jaettu käyttäjälle %1$s käyttäjän %2$s toimesta", + "Shared with {email} by {actor}" : "Jaettu käyttäjälle {email} käyttäjän {actor} toimesta", + "Unshared from {email}" : "Jako käyttäjälle {email} lopetettu", + "Unshared from {email} by {actor}" : "Jako käyttäjälle {email} lopetettiin käyttäjän {actor} toimesta", + "Password for mail share sent to %1$s" : "Salasana sähköpostijakoon lähetettiin osoitteeseen %1$s", + "Password for mail share sent to {email}" : "Salasana sähköpostijakoon lähetettiin osoitteeseen {email}", + "Password for mail share sent to you" : "Salasana sähköpostijakoon lähetettiin sinulle", "You shared %1$s with %2$s by mail" : "Jaoit tiedoston %1$s sähköpostitse osoitteeseen %2$s", "You shared {file} with {email} by mail" : "Jaoit tiedoston {file} sähköpostitse osoitteeseen {email}", "%3$s shared %1$s with %2$s by mail" : "%3$s jakoi tiedoston %1$s sähköpostitse osoitteeseen %2$s", "{actor} shared {file} with {email} by mail" : "{actor} jakoi tiedoston {file} sähköpostitse osoitteeseen {email}", + "You unshared %1$s from %2$s by mail" : "Lopetit kohteen %1$s jaon käyttäjältä %2$s sähköpostitse", + "You unshared {file} from {email} by mail" : "Lopetit kohteen {file} jaon käyttäjältä {email} sähköpostitse", + "Password to access %1$s was sent to %2s" : "Salasana kohteen %1$s käyttämiseksi lähetettiin käyttäjälle %2s", + "Password to access {file} was sent to {email}" : "Salasana kohteen {file} käyttämiseksi lähetettiin osoitteeseen {email}", + "Password to access %1$s was sent to you" : "Salasana kohteen %1$s käyttämiseksi lähetettiin sinulle", "Password to access {file} was sent to you" : "Salasana tiedoston {file} käyttämiseksi lähetettiin sinulle", + "Share by mail" : "Jaa sähköpostitse", + "Sharing %1$s failed, because this item is already shared with user %2$s" : "Kohteen %1$s jakaminen epäonnistui, koska tämä kohde on jo jaettu käyttäjän %2$s kanssa", + "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Automaattisesti muodostettua salasanaa ei voi lähettää sinulle. Aseta kelvollinen sähköpostiosoite henkilökohtaisiin asetuksiisi ja yritä uudelleen.", + "Failed to send share by email. Got an invalid email address" : "Jaon lähettäminen sähköpostitse epäonnistui. Virheellinen sähköpostiosoite", "Failed to send share by email" : "Jaon lähettäminen sähköpostitse epäonnistui", - "Click the button below to open it." : "Klikkaa alla olevaa linkkiä avataksesi sen.", + "%1$s shared »%2$s« with you" : "%1$s jakoi kohteen »%2$s« kanssasi", + "%1$s shared »%2$s« with you." : "%1$s jakoi kohteen »%2$s« kanssasi.", + "Click the button below to open it." : "Napsauta alla olevaa linkkiä avataksesi sen.", "Open »%s«" : "Avaa »%s«", + "%1$s via %2$s" : "%1$s palvelun %2$s kautta", + "Password to access »%s«" : "Salasana kohteen »%s« käyttöön", "It is protected with the following password:" : "Se on suojattu seuraavalla salasanalla:", + "This password will expire at %s" : "Tämä salasana vanhenee %s", + "%1$s shared »%2$s« with you and wants to add:" : "%1$s jakoi kohteen »%2$s« kanssasi ja haluaa lisätä:", + "%1$s shared »%2$s« with you and wants to add" : "%1$s jakoi kohteen »%2$s« kanssasi ja haluaa lisätä", + "»%s« added a note to a file shared with you" : "»%s« lisäsi huomion jakamaasi tiedostoon", "This is the password:" : "Tämä on salasana:", "You can choose a different password at any time in the share dialog." : "Voit valita muun salasanan koska tahansa jakovalikossa.", "Could not find share" : "Jakoa ei löytynyt", - "Share by mail" : "Jaa sähköpostitse", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Salli käyttäjien jakaa personoitu linkki tiedostoon tai kansioon syöttämällä sähköpostiosoitteen.", "Send password by mail" : "Lähetä salasana sähköpostitse", - "Enforce password protection" : "Pakota salasanasuojaus", - "Sharing %s failed, this item is already shared with %s" : "Kohteen %s jakaminen epäonnistui, koska se on jo jaettu käyttäjälle %s", - "%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi", - "%s shared »%s« with you." : "%s jakoi kohteen »%s« kanssasi.", - "%s via %s" : "%s (palvelun %s kautta)", - "It is protected with the following password: %s" : "Se on suojattu seuraavalla salasanalla: %s", - "This is the password: %s" : "Tämä on salasana: %s" + "Reply to initiator" : "Vastaa aloitteentekijälle" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/sharebymail/l10n/tr.js b/apps/sharebymail/l10n/tr.js index 29e9ccefb81..2cba19d4a64 100644 --- a/apps/sharebymail/l10n/tr.js +++ b/apps/sharebymail/l10n/tr.js @@ -39,7 +39,7 @@ OC.L10N.register( "Password to access »%1$s« shared to you by %2$s" : "»%1$s« için sizin tarafınızdan %2$s üzerinden paylaşılan erişim parolası", "Password to access »%s«" : "»%s« erişim parolası", "It is protected with the following password:" : "Şu parola ile korunuyor:", - "This password will expire at %s" : "Bu parola %s tarihinde geçersiz olacak", + "This password will expire at %s" : "Bu parolanın geçerlilik süresi %s tarihinde dolacak", "%1$s shared »%2$s« with you and wants to add:" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor:", "%1$s shared »%2$s« with you and wants to add" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor", "»%s« added a note to a file shared with you" : "»%s« sizinle paylaştığı bir dosyaya bir not ekledi", diff --git a/apps/sharebymail/l10n/tr.json b/apps/sharebymail/l10n/tr.json index b21ada04447..5d959f0219b 100644 --- a/apps/sharebymail/l10n/tr.json +++ b/apps/sharebymail/l10n/tr.json @@ -37,7 +37,7 @@ "Password to access »%1$s« shared to you by %2$s" : "»%1$s« için sizin tarafınızdan %2$s üzerinden paylaşılan erişim parolası", "Password to access »%s«" : "»%s« erişim parolası", "It is protected with the following password:" : "Şu parola ile korunuyor:", - "This password will expire at %s" : "Bu parola %s tarihinde geçersiz olacak", + "This password will expire at %s" : "Bu parolanın geçerlilik süresi %s tarihinde dolacak", "%1$s shared »%2$s« with you and wants to add:" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor:", "%1$s shared »%2$s« with you and wants to add" : "%1$s sizinle »%2$s« ögesini paylaştı ve eklemenizi istiyor", "»%s« added a note to a file shared with you" : "»%s« sizinle paylaştığı bir dosyaya bir not ekledi", diff --git a/apps/sharebymail/lib/Activity.php b/apps/sharebymail/lib/Activity.php index 3992f0f942b..3693455dda4 100644 --- a/apps/sharebymail/lib/Activity.php +++ b/apps/sharebymail/lib/Activity.php @@ -55,9 +55,6 @@ class Activity implements IProvider { protected $contactsManager; /** @var array */ - protected $displayNames = []; - - /** @var array */ protected $contactNames = []; public const SUBJECT_SHARED_EMAIL_SELF = 'shared_with_email_self'; @@ -346,14 +343,10 @@ class Activity implements IProvider { * @return array */ protected function generateUserParameter($uid) { - if (!isset($this->displayNames[$uid])) { - $this->displayNames[$uid] = $this->getDisplayName($uid); - } - return [ 'type' => 'user', 'id' => $uid, - 'name' => $this->displayNames[$uid], + 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } @@ -381,17 +374,4 @@ class Activity implements IProvider { return $email; } - - /** - * @param string $uid - * @return string - */ - protected function getDisplayName($uid) { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } else { - return $uid; - } - } } diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index ee14e354c52..01dd3b428d1 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -75,7 +75,6 @@ use OCP\Share\IShareProvider; * @package OCA\ShareByMail */ class ShareByMailProvider implements IShareProvider { - private IConfig $config; /** @var IDBConnection */ @@ -1159,7 +1158,7 @@ class ShareByMailProvider implements IShareProvider { return $data; } - public function getSharesInFolder($userId, Folder $node, $reshares) { + public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true) { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('*') ->from('share', 's') @@ -1185,8 +1184,13 @@ class ShareByMailProvider implements IShareProvider { ); } - $qb->innerJoin('s', 'filecache' ,'f', $qb->expr()->eq('s.file_source', 'f.fileid')); - $qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId()))); + $qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid')); + + if ($shallow) { + $qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId()))); + } else { + $qb->andWhere($qb->expr()->like('f.path', $qb->createNamedParameter($this->dbConnection->escapeLikeParameter($node->getInternalPath()) . '/%'))); + } $qb->orderBy('id'); diff --git a/apps/sharebymail/src/components/AdminSettings.vue b/apps/sharebymail/src/components/AdminSettings.vue index c84ded9bb2a..861afa4add1 100644 --- a/apps/sharebymail/src/components/AdminSettings.vue +++ b/apps/sharebymail/src/components/AdminSettings.vue @@ -21,25 +21,25 @@ --> <template> - <SettingsSection :title="t('sharebymail', 'Share by mail')" + <NcSettingsSection :title="t('sharebymail', 'Share by mail')" :description="t('sharebymail', 'Allows users to share a personalized link to a file or folder by putting in an email address.')"> - <CheckboxRadioSwitch type="switch" + <NcCheckboxRadioSwitch type="switch" :checked.sync="sendPasswordMail" @update:checked="update('sendpasswordmail', sendPasswordMail)"> {{ t('sharebymail', 'Send password by mail') }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> - <CheckboxRadioSwitch type="switch" + <NcCheckboxRadioSwitch type="switch" :checked.sync="replyToInitiator" @update:checked="update('replyToInitiator', replyToInitiator)"> {{ t('sharebymail', 'Reply to initiator') }} - </CheckboxRadioSwitch> - </SettingsSection> + </NcCheckboxRadioSwitch> + </NcSettingsSection> </template> <script> -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' import { loadState } from '@nextcloud/initial-state' import { showError } from '@nextcloud/dialogs' import axios from '@nextcloud/axios' @@ -49,8 +49,8 @@ import confirmPassword from '@nextcloud/password-confirmation' export default { name: 'AdminSettings', components: { - CheckboxRadioSwitch, - SettingsSection, + NcCheckboxRadioSwitch, + NcSettingsSection, }, data() { return { diff --git a/apps/systemtags/composer/composer/installed.php b/apps/systemtags/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/systemtags/composer/composer/installed.php +++ b/apps/systemtags/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/systemtags/js/admin.js b/apps/systemtags/js/admin.js index b8bcbb51e6f..0b9d9ec4a41 100644 --- a/apps/systemtags/js/admin.js +++ b/apps/systemtags/js/admin.js @@ -38,6 +38,7 @@ this.collection.fetch({ success: function() { $('#systemtag').select2(_.extend(self.select2)); + $('#systemtag').parent().children('.select2-container').attr('aria-expanded', 'false') } }); @@ -50,6 +51,12 @@ $('#systemtag_submit').on('click', _.bind(this._onClickSubmit, this)); $('#systemtag_delete').on('click', _.bind(this._onClickDelete, this)); $('#systemtag_reset').on('click', _.bind(this._onClickReset, this)); + $('#systemtag').select2(_.extend(self.select2)).on('select2-open', () => { + $('.select2-container').attr('aria-expanded', 'true') + }); + $('#systemtag').select2(_.extend(self.select2)).on('select2-close', () => { + $('.select2-container').attr('aria-expanded', 'false') + }); }, /** diff --git a/apps/systemtags/l10n/bg.js b/apps/systemtags/l10n/bg.js index 71926d0a155..8ad75a457e5 100644 --- a/apps/systemtags/l10n/bg.js +++ b/apps/systemtags/l10n/bg.js @@ -46,7 +46,7 @@ OC.L10N.register( "All tagged %s …" : "Всички маркирани %s ...", "tagged %s" : "маркиран %s", "Collaborative tags" : "Съвместни етикети", - "Collaborative tagging functionality which shares tags among users." : "Функция за съвместно етикетиране, която споделя етикети между потребителите.", + "Collaborative tagging functionality which shares tags among users." : "Функция за съвместно етикетиране/маркиране/, която споделя етикети между потребителите.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Функция за съвместно етикетиране, която споделя етикети между потребителите. Чудесно е за екипи.\n\t(Ако сте доставчик с инсталация с множество клиенти, препоръчваме ви да деактивирате това приложение, тъй като етикетите се споделят.)", "Tagged files" : "Отбелязани файлове", "Select tags to filter by" : "Филтриране по етикет", diff --git a/apps/systemtags/l10n/bg.json b/apps/systemtags/l10n/bg.json index b0cfe42d3ee..eeaf03ec22b 100644 --- a/apps/systemtags/l10n/bg.json +++ b/apps/systemtags/l10n/bg.json @@ -44,7 +44,7 @@ "All tagged %s …" : "Всички маркирани %s ...", "tagged %s" : "маркиран %s", "Collaborative tags" : "Съвместни етикети", - "Collaborative tagging functionality which shares tags among users." : "Функция за съвместно етикетиране, която споделя етикети между потребителите.", + "Collaborative tagging functionality which shares tags among users." : "Функция за съвместно етикетиране/маркиране/, която споделя етикети между потребителите.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Функция за съвместно етикетиране, която споделя етикети между потребителите. Чудесно е за екипи.\n\t(Ако сте доставчик с инсталация с множество клиенти, препоръчваме ви да деактивирате това приложение, тъй като етикетите се споделят.)", "Tagged files" : "Отбелязани файлове", "Select tags to filter by" : "Филтриране по етикет", diff --git a/apps/systemtags/l10n/de.js b/apps/systemtags/l10n/de.js index 3e573195fbd..eb1f52e91e3 100644 --- a/apps/systemtags/l10n/de.js +++ b/apps/systemtags/l10n/de.js @@ -47,7 +47,7 @@ OC.L10N.register( "tagged %s" : "Schlagwort %s hinzugefügt", "Collaborative tags" : "Kollaborative Tags", "Collaborative tagging functionality which shares tags among users." : "Kollaborative Tags Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.", - "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn Du ein Anbieter mit einer Mehrkundeninstallation bist, so ist angeraten diese App zu deaktiveren, da die Schlagworte mit allen Kunden geteilt werden.)", + "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn du ein Anbieter mit einer Mehrkundeninstallation bist, so ist angeraten diese App zu deaktiveren, da die Schlagworte mit allen Kunden geteilt werden.)", "Tagged files" : "Mit Tags versehene Dateien", "Select tags to filter by" : "Wähle Tags nach denen gefilter werden soll", "No tags found" : "Keine Tags gefunden", diff --git a/apps/systemtags/l10n/de.json b/apps/systemtags/l10n/de.json index f44234a6241..3e42f960046 100644 --- a/apps/systemtags/l10n/de.json +++ b/apps/systemtags/l10n/de.json @@ -45,7 +45,7 @@ "tagged %s" : "Schlagwort %s hinzugefügt", "Collaborative tags" : "Kollaborative Tags", "Collaborative tagging functionality which shares tags among users." : "Kollaborative Tags Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.", - "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn Du ein Anbieter mit einer Mehrkundeninstallation bist, so ist angeraten diese App zu deaktiveren, da die Schlagworte mit allen Kunden geteilt werden.)", + "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn du ein Anbieter mit einer Mehrkundeninstallation bist, so ist angeraten diese App zu deaktiveren, da die Schlagworte mit allen Kunden geteilt werden.)", "Tagged files" : "Mit Tags versehene Dateien", "Select tags to filter by" : "Wähle Tags nach denen gefilter werden soll", "No tags found" : "Keine Tags gefunden", diff --git a/apps/systemtags/l10n/es_SV.js b/apps/systemtags/l10n/es_SV.js index 99001c723bb..4a7e5f9ee2e 100644 --- a/apps/systemtags/l10n/es_SV.js +++ b/apps/systemtags/l10n/es_SV.js @@ -54,4 +54,4 @@ OC.L10N.register( "Size" : "Tamaño", "Modified" : "Modificado" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/systemtags/l10n/es_SV.json b/apps/systemtags/l10n/es_SV.json index d73ade57d12..eb928dc51b1 100644 --- a/apps/systemtags/l10n/es_SV.json +++ b/apps/systemtags/l10n/es_SV.json @@ -51,5 +51,5 @@ "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", "Modified" : "Modificado" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/systemtags/lib/Activity/Provider.php b/apps/systemtags/lib/Activity/Provider.php index fe1df169d40..16a5687fc81 100644 --- a/apps/systemtags/lib/Activity/Provider.php +++ b/apps/systemtags/lib/Activity/Provider.php @@ -55,9 +55,6 @@ class Provider implements IProvider { /** @var IUserManager */ protected $userManager; - /** @var string[] */ - protected $displayNames = []; - /** * @param IFactory $languageFactory * @param IURLGenerator $url @@ -334,15 +331,11 @@ class Provider implements IProvider { ]; } - protected function getUserParameter($uid) { - if (!isset($this->displayNames[$uid])) { - $this->displayNames[$uid] = $this->getDisplayName($uid); - } - + protected function getUserParameter(string $uid): array { return [ 'type' => 'user', 'id' => $uid, - 'name' => $this->displayNames[$uid], + 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } @@ -355,17 +348,4 @@ class Provider implements IProvider { return $this->l->t('%s (invisible)', $parameter['name']); } } - - /** - * @param string $uid - * @return string - */ - protected function getDisplayName($uid) { - $user = $this->userManager->get($uid); - if ($user instanceof IUser) { - return $user->getDisplayName(); - } else { - return $uid; - } - } } diff --git a/apps/systemtags/src/systemtagsfilelist.js b/apps/systemtags/src/systemtagsfilelist.js index a87b5a96c3e..69e63706264 100644 --- a/apps/systemtags/src/systemtagsfilelist.js +++ b/apps/systemtags/src/systemtagsfilelist.js @@ -30,7 +30,7 @@ * @classdesc SystemTags file list. * Contains a list of files filtered by system tags. * - * @param {object} $el container element with existing markup for the #controls and a table + * @param {object} $el container element with existing markup for the .files-controls and a table * @param {Array} [options] map of options, see other parameters * @param {Array.<string>} [options.systemTagIds] array of system tag ids to * filter by @@ -75,7 +75,7 @@ OC.Plugins.attach('OCA.SystemTags.FileList', this) - const $controls = this.$el.find('#controls').empty() + const $controls = this.$el.find('.files-controls').empty() _.defer(_.bind(this._getLastUsedTags, this)) this._initFilterField($controls) @@ -181,6 +181,13 @@ return t('systemtags', 'No tags found') }, }) + this.$filterField.parent().children('.select2-container').attr('aria-expanded', 'false') + this.$filterField.on('select2-open', () => { + this.$filterField.parent().children('.select2-container').attr('aria-expanded', 'true') + }) + this.$filterField.on('select2-close', () => { + this.$filterField.parent().children('.select2-container').attr('aria-expanded', 'false') + }) this.$filterField.on( 'change', _.bind(this._onTagsChanged, this) @@ -248,7 +255,7 @@ if (!this._systemTagIds.length) { // no tags selected this.$el - .find('#emptycontent') + .find('.emptyfilelist.emptycontent') .html( '<div class="icon-systemtags"></div>' + '<h2>' @@ -261,7 +268,7 @@ } else { // tags selected but no results this.$el - .find('#emptycontent') + .find('.emptyfilelist.emptycontent') .html( '<div class="icon-systemtags"></div>' + '<h2>' @@ -273,10 +280,10 @@ ) } this.$el - .find('#emptycontent') + .find('.emptyfilelist.emptycontent') .toggleClass('hidden', !this.isEmpty) this.$el - .find('#filestable thead th') + .find('.files-filestable thead th') .toggleClass('hidden', this.isEmpty) } else { OCA.Files.FileList.prototype.updateEmptyContent.apply( diff --git a/apps/systemtags/templates/list.php b/apps/systemtags/templates/list.php index f6a0735881a..6e4ef04ee8b 100644 --- a/apps/systemtags/templates/list.php +++ b/apps/systemtags/templates/list.php @@ -1,7 +1,7 @@ -<div id="controls"> +<div class="files-controls"> </div> -<div id="emptycontent" class="hidden"> +<div class="emptyfilelist emptycontent hidden"> <div class="icon-folder"></div> <h2><?php p($l->t('No files in here')); ?></h2> <p class="uploadmessage hidden"></p> @@ -13,26 +13,25 @@ <p></p> </div> -<table id="filestable" data-preview-x="250" data-preview-y="250" class="list-container"> +<table data-preview-x="250" data-preview-y="250" class="files-filestable list-container"> <thead> <tr> - <th id='headerName' class="hidden column-name"> - <div id="headerName-container"> + <th class="hidden column-name"> + <div class="column-name-container"> <a class="name sort columntitle" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a> </div> </th> - <th id="headerSize" class="hidden column-size"> + <th class="hidden column-size"> <a class="size sort columntitle" data-sort="size"><span><?php p($l->t('Size')); ?></span><span class="sort-indicator"></span></a> </th> - <th id="headerDate" class="hidden column-mtime"> - <a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a> + <th class="hidden column-mtime"> + <a class="columntitle" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a> </th> </tr> </thead> - <tbody id="fileList"> + <tbody class="files-fileList"> </tbody> <tfoot> </tfoot> </table> -<input type="hidden" name="dir" id="dir" value="" /> diff --git a/apps/systemtags/tests/js/systemtagsfilelistSpec.js b/apps/systemtags/tests/js/systemtagsfilelistSpec.js index 2c775466de4..facdf8dc42c 100644 --- a/apps/systemtags/tests/js/systemtagsfilelistSpec.js +++ b/apps/systemtags/tests/js/systemtagsfilelistSpec.js @@ -28,28 +28,27 @@ describe('OCA.SystemTags.FileList tests', function() { beforeEach(function() { // init parameters and test table elements $('#testArea').append( - '<div id="app-content-container">' + + '<div id="app-content">' + // init horrible parameters - '<input type="hidden" id="dir" value="/"></input>' + '<input type="hidden" id="permissions" value="31"></input>' + - '<div id="controls"></div>' + + '<div class="files-controls"></div>' + // dummy table // TODO: at some point this will be rendered by the fileList class itself! - '<table id="filestable">' + + '<table class="files-filestable">' + '<thead><tr>' + - '<th id="headerName" class="hidden column-name">' + + '<th class="hidden column-name">' + '<input type="checkbox" id="select_all_files" class="select-all">' + '<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + - '<span class="selectedActions hidden">' + + '<span class="selectedActions hidden"></span>' + '</th>' + '<th class="hidden column-mtime">' + '<a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a>' + '</th>' + '</tr></thead>' + - '<tbody id="fileList"></tbody>' + + '<tbody class="files-fileList"></tbody>' + '<tfoot></tfoot>' + '</table>' + - '<div id="emptycontent">Empty content message</div>' + + '<div class="emptyfilelist emptycontent">Empty content message</div>' + '</div>' ); }); @@ -78,7 +77,7 @@ describe('OCA.SystemTags.FileList tests', function() { ]); fileList = new OCA.SystemTags.FileList( - $('#app-content-container'), { + $('#app-content'), { systemTagIds: [] } ); @@ -168,21 +167,21 @@ describe('OCA.SystemTags.FileList tests', function() { it('renders empty message when no tags were set', function() { fileList = new OCA.SystemTags.FileList( - $('#app-content-container'), { + $('#app-content'), { systemTagIds: [] } ); fileList.reload(); - expect(fileList.$el.find('#emptycontent').hasClass('hidden')).toEqual(false); + expect(fileList.$el.find('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false); expect(getFilteredFilesSpec.notCalled).toEqual(true); }); it('render files', function(done) { fileList = new OCA.SystemTags.FileList( - $('#app-content-container'), { + $('#app-content'), { systemTagIds: ['123', '456'] } ); @@ -233,7 +232,7 @@ describe('OCA.SystemTags.FileList tests', function() { requestDeferred.resolve(207, testFiles); return reloading.then(function() { - expect(fileList.$el.find('#emptycontent').hasClass('hidden')).toEqual(true); + expect(fileList.$el.find('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true); expect(fileList.$el.find('tbody>tr').length).toEqual(4); }).then(done, done); }); diff --git a/apps/testing/composer/composer/installed.php b/apps/testing/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/testing/composer/composer/installed.php +++ b/apps/testing/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css index 262af7a3b83..887281ab504 100644 --- a/apps/theming/css/default.css +++ b/apps/theming/css/default.css @@ -2,6 +2,8 @@ --color-main-background: #ffffff; --color-main-background-rgb: 255,255,255; --color-main-background-translucent: rgba(var(--color-main-background-rgb), .97); + --color-main-background-blur: rgba(var(--color-main-background-rgb), .8); + --filter-background-blur: blur(25px); --gradient-main-background: var(--color-main-background) 0%, var(--color-main-background-translucent) 85%, transparent 100%; --color-background-hover: #f5f5f5; --color-background-dark: #ededed; @@ -16,14 +18,18 @@ --color-primary-light-hover: #dbe7ee; --color-primary-text-dark: #ededed; --color-primary-element: #0082c9; - --color-primary-element-hover: #198ece; - --color-primary-element-light: #17adff; - --color-primary-element-lighter: #d8ecf6; - --gradient-primary-background: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-element-light) 100%); + --color-primary-element-text: #ffffff; + --color-primary-element-hover: #329bd3; + --color-primary-element-light: #e5f2f9; + --color-primary-element-light-text: #0082c9; + --color-primary-element-light-hover: #dbe7ee; + --color-primary-element-text-dark: #ededed; + --gradient-primary-background: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-hover) 100%); --color-main-text: #222222; --color-text-maxcontrast: #767676; --color-text-light: #222222; --color-text-lighter: #767676; + --color-scrollbar: rgba(34,34,34, .15); --color-error: #e9322d; --color-error-rgb: 233,50,45; --color-error-hover: #ed5a56; @@ -46,7 +52,9 @@ --border-radius: 3px; --border-radius-large: 10px; --border-radius-pill: 100px; + --default-clickable-area: 44px; --default-line-height: 24px; + --default-grid-baseline: 4px; --header-height: 50px; --navigation-width: 300px; --sidebar-min-width: 300px; @@ -58,4 +66,6 @@ --breakpoint-mobile: 1024px; --primary-invert-if-bright: no; --background-invert-if-dark: no; + --background-invert-if-bright: invert(100%); + --image-main-background: url('/core/img/app-background.jpg'); } diff --git a/apps/theming/js/3rdparty/jscolor/jscolor.js b/apps/theming/js/3rdparty/jscolor/jscolor.js index cad36eab92a..9e6e8db8853 100644 --- a/apps/theming/js/3rdparty/jscolor/jscolor.js +++ b/apps/theming/js/3rdparty/jscolor/jscolor.js @@ -1354,6 +1354,7 @@ var jsc = { function detachPicker () { + THIS.targetElement.setAttribute('aria-expanded', 'false'); jsc.unsetClass(THIS.targetElement, THIS.activeClass); jsc.picker.wrap.parentNode.removeChild(jsc.picker.wrap); delete jsc.picker.owner; @@ -1361,6 +1362,7 @@ var jsc = { function drawPicker () { + THIS.targetElement.setAttribute('aria-expanded', 'true'); // At this point, when drawing the picker, we know what the parent elements are // and we can do all related DOM operations, such as registering events on them diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js index 0c18db1c9f4..9fd1639ec3e 100644 --- a/apps/theming/js/settings-admin.js +++ b/apps/theming/js/settings-admin.js @@ -98,6 +98,7 @@ window.addEventListener('DOMContentLoaded', function () { // manually instantiate jscolor to work around new Function call which violates strict CSP var colorElement = $('#theming-color')[0]; + colorElement.setAttribute('aria-expanded', 'false'); var jscolor = new window.jscolor(colorElement, {hash: true}); $('#theming .theme-undo').each(function() { diff --git a/apps/theming/l10n/cs.js b/apps/theming/l10n/cs.js index 80fdc39e33b..73e32e2aa94 100644 --- a/apps/theming/l10n/cs.js +++ b/apps/theming/l10n/cs.js @@ -10,14 +10,14 @@ OC.L10N.register( "The given web address is too long" : "Zadaná webová adresa je příliš dlouhá", "The given web address is not a valid URL" : "Zadaná webová adresa není platné URL", "The given legal notice address is too long" : "Daná adresa právního upozornění je příliš dlouhá", - "The given legal notice address is not a valid URL" : "Daná adresa právního upozornění není platnou URL adresou", + "The given legal notice address is not a valid URL" : "Daná adresa právního upozornění není platné URL", "The given privacy policy address is too long" : "Daná adresa zásad ochrany osobních údajů je příliš dlouhá", - "The given privacy policy address is not a valid URL" : "Daná adresa prohlášení o ochraně soukromí není platná URL adresa", - "The given slogan is too long" : "Zadaný slogan je příliš dlouhý", - "The given color is invalid" : "Zadaná barva není platná", + "The given privacy policy address is not a valid URL" : "Daná adresa prohlášení o ochraně soukromí není platné URL", + "The given slogan is too long" : "Daný slogan je příliš dlouhý", + "The given color is invalid" : "Daná barva není platná", "The file was uploaded" : "Soubor byl nahrán", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Velikost nahrávaného souboru překračuje limit nastavení direktivou upload_max_filesize v php.ini", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Nahraný soubor překračuje nastavení MAX_FILE_SIZE, která byla zadána ve HTML formuláři", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Velikost nahrávaného souboru překračuje nastavení MAX_FILE_SIZE, která byla zadána v HTML formuláři", "The file was only partially uploaded" : "Soubor byl nahrán pouze z části", "No file was uploaded" : "Nebyl nahrán žádný soubor", "Missing a temporary folder" : "Chybí složka pro dočasné soubory", @@ -28,7 +28,7 @@ OC.L10N.register( "Theming" : "Motiv vzhledu", "Appearance and accessibility" : "Vzhled a zpřístupnění", "Dark theme with high contrast mode" : "Tmavý motiv vzhledu s režimem vysokého kontrastu", - "Enable dark high contrast mode" : "Zapnout tmavý režim s vysokým kontrastem", + "Enable dark high contrast mode" : "Používat tmavý režim s vysokým kontrastem", "Similar to the high contrast mode, but with dark colours." : "Podobné režimu s vysokým kontrastem, ale s tmavými barvami.", "Dark theme" : "Tmavý motiv vzhledu", "Enable dark theme" : "Používat tmavý motiv vzhledu", @@ -62,13 +62,13 @@ OC.L10N.register( "Logo" : "Logo", "Upload new logo" : "Nahrát nové logo", "Login image" : "Přihlašovací obrázek", - "Upload new login background" : "Nahrát nové přihlašovací pozadí", + "Upload new login background" : "Nahrát nové pozadí pro přihlašovací obrazovku", "Remove background image" : "Odebrat obrázek z pozadí", "Advanced options" : "Pokročilé předvolby", "Legal notice link" : "Odkaz na právní upozornění", "Privacy policy link" : "Odkaz na zásady ochrany osobních údajů", - "Header logo" : "Logo v záhlaví", - "Upload new header logo" : "Nahrát nové logo do záhlaví", + "Header logo" : "Logo pro záhlaví", + "Upload new header logo" : "Nahrát nové logo pro záhlaví", "Favicon" : "ikona webu", "Upload new favicon" : "Nahrát novou ikonu webu", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Nainstalujte rozšíření Imagemagick PHP s podporou obrázků SVG, které automaticky vytváří favicon na základě nahraného loga a barvy." diff --git a/apps/theming/l10n/cs.json b/apps/theming/l10n/cs.json index 12b27d9be6e..90104ddb347 100644 --- a/apps/theming/l10n/cs.json +++ b/apps/theming/l10n/cs.json @@ -8,14 +8,14 @@ "The given web address is too long" : "Zadaná webová adresa je příliš dlouhá", "The given web address is not a valid URL" : "Zadaná webová adresa není platné URL", "The given legal notice address is too long" : "Daná adresa právního upozornění je příliš dlouhá", - "The given legal notice address is not a valid URL" : "Daná adresa právního upozornění není platnou URL adresou", + "The given legal notice address is not a valid URL" : "Daná adresa právního upozornění není platné URL", "The given privacy policy address is too long" : "Daná adresa zásad ochrany osobních údajů je příliš dlouhá", - "The given privacy policy address is not a valid URL" : "Daná adresa prohlášení o ochraně soukromí není platná URL adresa", - "The given slogan is too long" : "Zadaný slogan je příliš dlouhý", - "The given color is invalid" : "Zadaná barva není platná", + "The given privacy policy address is not a valid URL" : "Daná adresa prohlášení o ochraně soukromí není platné URL", + "The given slogan is too long" : "Daný slogan je příliš dlouhý", + "The given color is invalid" : "Daná barva není platná", "The file was uploaded" : "Soubor byl nahrán", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Velikost nahrávaného souboru překračuje limit nastavení direktivou upload_max_filesize v php.ini", - "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Nahraný soubor překračuje nastavení MAX_FILE_SIZE, která byla zadána ve HTML formuláři", + "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Velikost nahrávaného souboru překračuje nastavení MAX_FILE_SIZE, která byla zadána v HTML formuláři", "The file was only partially uploaded" : "Soubor byl nahrán pouze z části", "No file was uploaded" : "Nebyl nahrán žádný soubor", "Missing a temporary folder" : "Chybí složka pro dočasné soubory", @@ -26,7 +26,7 @@ "Theming" : "Motiv vzhledu", "Appearance and accessibility" : "Vzhled a zpřístupnění", "Dark theme with high contrast mode" : "Tmavý motiv vzhledu s režimem vysokého kontrastu", - "Enable dark high contrast mode" : "Zapnout tmavý režim s vysokým kontrastem", + "Enable dark high contrast mode" : "Používat tmavý režim s vysokým kontrastem", "Similar to the high contrast mode, but with dark colours." : "Podobné režimu s vysokým kontrastem, ale s tmavými barvami.", "Dark theme" : "Tmavý motiv vzhledu", "Enable dark theme" : "Používat tmavý motiv vzhledu", @@ -60,13 +60,13 @@ "Logo" : "Logo", "Upload new logo" : "Nahrát nové logo", "Login image" : "Přihlašovací obrázek", - "Upload new login background" : "Nahrát nové přihlašovací pozadí", + "Upload new login background" : "Nahrát nové pozadí pro přihlašovací obrazovku", "Remove background image" : "Odebrat obrázek z pozadí", "Advanced options" : "Pokročilé předvolby", "Legal notice link" : "Odkaz na právní upozornění", "Privacy policy link" : "Odkaz na zásady ochrany osobních údajů", - "Header logo" : "Logo v záhlaví", - "Upload new header logo" : "Nahrát nové logo do záhlaví", + "Header logo" : "Logo pro záhlaví", + "Upload new header logo" : "Nahrát nové logo pro záhlaví", "Favicon" : "ikona webu", "Upload new favicon" : "Nahrát novou ikonu webu", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Nainstalujte rozšíření Imagemagick PHP s podporou obrázků SVG, které automaticky vytváří favicon na základě nahraného loga a barvy." diff --git a/apps/theming/l10n/de.js b/apps/theming/l10n/de.js index 6a76a08cf9e..a2cd1a2fcdb 100644 --- a/apps/theming/l10n/de.js +++ b/apps/theming/l10n/de.js @@ -4,7 +4,7 @@ OC.L10N.register( "Loading preview…" : "Lade Vorschau…", "Admin" : "Administrator", "Saved" : "Gespeichert", - "a safe home for all your data" : "Ein sicheres Zuhause für Deine Daten", + "a safe home for all your data" : "Ein sicheres Zuhause für deine Daten", "Name cannot be empty" : "Der Name darf nicht leer sein", "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", @@ -32,7 +32,7 @@ OC.L10N.register( "Similar to the high contrast mode, but with dark colours." : "Ähnlich wie der Hochkontrastmodus, aber mit dunklen Farben", "Dark theme" : "Dunkles Design", "Enable dark theme" : "Dunkles Design aktivieren", - "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Ein dunkles Design zur Entlastung Deiner Augen durch Verringerung der Gesamtleuchtkraft und -helligkeit.", + "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Ein dunkles Design zur Entlastung deiner Augen durch Verringerung der Gesamtleuchtkraft und -helligkeit.", "System default theme" : "Design des Systemstandards", "Enable the system default" : "Systemstandard aktivieren", "Using the default system appearance." : "Das Erscheinungsbild des Systemstandards verwenden", @@ -49,10 +49,10 @@ OC.L10N.register( "Privacy policy" : "Datenschutzerklärung ", "Adjust the Nextcloud theme" : "Passe das Design von Nextcloud an", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Der unbeschränkte Zugang ist für uns sehr wichtig. Wir halten uns an Webstandards und prüfen, ob alles auch ohne Maus und unterstützende Software wie Screenreader nutzbar ist. Wir streben die Einhaltung der {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 auf AA-Niveau an, mit dem kontrastreichen Design sogar auf AAA-Niveau.", - "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn Du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn Du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!", + "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!", "Theme selection is enforced" : "Designauswahl wird erzwungen", "Open documentation" : "Dokumentation öffnen", - "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Das Ändern des Designs ermöglicht es auf einfache Weise das Aussehen Deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Das Ändern des Designs ermöglicht es auf einfache Weise das Aussehen deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "Reset to default" : " Auf Standard zurücksetzen ", "Web link" : "Internet-Link", diff --git a/apps/theming/l10n/de.json b/apps/theming/l10n/de.json index 02af4df1cee..331a027a80b 100644 --- a/apps/theming/l10n/de.json +++ b/apps/theming/l10n/de.json @@ -2,7 +2,7 @@ "Loading preview…" : "Lade Vorschau…", "Admin" : "Administrator", "Saved" : "Gespeichert", - "a safe home for all your data" : "Ein sicheres Zuhause für Deine Daten", + "a safe home for all your data" : "Ein sicheres Zuhause für deine Daten", "Name cannot be empty" : "Der Name darf nicht leer sein", "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", @@ -30,7 +30,7 @@ "Similar to the high contrast mode, but with dark colours." : "Ähnlich wie der Hochkontrastmodus, aber mit dunklen Farben", "Dark theme" : "Dunkles Design", "Enable dark theme" : "Dunkles Design aktivieren", - "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Ein dunkles Design zur Entlastung Deiner Augen durch Verringerung der Gesamtleuchtkraft und -helligkeit.", + "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Ein dunkles Design zur Entlastung deiner Augen durch Verringerung der Gesamtleuchtkraft und -helligkeit.", "System default theme" : "Design des Systemstandards", "Enable the system default" : "Systemstandard aktivieren", "Using the default system appearance." : "Das Erscheinungsbild des Systemstandards verwenden", @@ -47,10 +47,10 @@ "Privacy policy" : "Datenschutzerklärung ", "Adjust the Nextcloud theme" : "Passe das Design von Nextcloud an", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Der unbeschränkte Zugang ist für uns sehr wichtig. Wir halten uns an Webstandards und prüfen, ob alles auch ohne Maus und unterstützende Software wie Screenreader nutzbar ist. Wir streben die Einhaltung der {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 auf AA-Niveau an, mit dem kontrastreichen Design sogar auf AAA-Niveau.", - "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn Du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn Du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!", + "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!", "Theme selection is enforced" : "Designauswahl wird erzwungen", "Open documentation" : "Dokumentation öffnen", - "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Das Ändern des Designs ermöglicht es auf einfache Weise das Aussehen Deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", + "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Das Ändern des Designs ermöglicht es auf einfache Weise das Aussehen deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.", "Name" : "Name", "Reset to default" : " Auf Standard zurücksetzen ", "Web link" : "Internet-Link", diff --git a/apps/theming/l10n/es_SV.js b/apps/theming/l10n/es_SV.js index 0315d3a7d8e..159395fe927 100644 --- a/apps/theming/l10n/es_SV.js +++ b/apps/theming/l10n/es_SV.js @@ -44,4 +44,4 @@ OC.L10N.register( "Upload new favicon" : "Cargar un nuevo favicon", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color." }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/theming/l10n/es_SV.json b/apps/theming/l10n/es_SV.json index e5ab0dff217..638b1e032e2 100644 --- a/apps/theming/l10n/es_SV.json +++ b/apps/theming/l10n/es_SV.json @@ -41,5 +41,5 @@ "Favicon" : "Favicon", "Upload new favicon" : "Cargar un nuevo favicon", "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Instala la extensión Imagemagick de PHP con soporte a imagenes SVG para generar los favicons en automático con base en el logotipo cargado y el color." -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/theming/l10n/et_EE.js b/apps/theming/l10n/et_EE.js index 52967870db9..bc34c2ed823 100644 --- a/apps/theming/l10n/et_EE.js +++ b/apps/theming/l10n/et_EE.js @@ -9,10 +9,13 @@ OC.L10N.register( "The given web address is too long" : "Antud veebiaadress on liiga pikk", "The given slogan is too long" : "Antud tunnuslause on liiga pikk", "The given color is invalid" : "Antud värv ei sobi", + "The file was uploaded" : "Fail laaditi üles", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Üleslaetud fail on suurem, kui MAX_FILE_SIZE atribuut, mis seadistati HTML vormis", + "The file was only partially uploaded" : "Fail laaditi üles ainult osaliselt", "No file was uploaded" : "Ühtegi faili ei latud üles", "Missing a temporary folder" : "Ajutine kausta on puudu", + "Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus", "No file uploaded" : "Faili ei laetud üles", "Theming" : "Teemad", "Dark theme" : "Tume teema", diff --git a/apps/theming/l10n/et_EE.json b/apps/theming/l10n/et_EE.json index 92ca8437beb..df314f79f6d 100644 --- a/apps/theming/l10n/et_EE.json +++ b/apps/theming/l10n/et_EE.json @@ -7,10 +7,13 @@ "The given web address is too long" : "Antud veebiaadress on liiga pikk", "The given slogan is too long" : "Antud tunnuslause on liiga pikk", "The given color is invalid" : "Antud värv ei sobi", + "The file was uploaded" : "Fail laaditi üles", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Üleslaetud fail on suurem, kui MAX_FILE_SIZE atribuut, mis seadistati HTML vormis", + "The file was only partially uploaded" : "Fail laaditi üles ainult osaliselt", "No file was uploaded" : "Ühtegi faili ei latud üles", "Missing a temporary folder" : "Ajutine kausta on puudu", + "Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus", "No file uploaded" : "Faili ei laetud üles", "Theming" : "Teemad", "Dark theme" : "Tume teema", diff --git a/apps/theming/l10n/eu.js b/apps/theming/l10n/eu.js index ea7e42de27c..85b08fc8da1 100644 --- a/apps/theming/l10n/eu.js +++ b/apps/theming/l10n/eu.js @@ -23,7 +23,7 @@ OC.L10N.register( "Missing a temporary folder" : "Aldi baterako karpeta bat falta da", "Could not write file to disk" : "Ezin izan da fitxategia diskoan idatzi", "A PHP extension stopped the file upload" : "PHP hedapen batek fitxategiaren karga gelditu du", - "No file uploaded" : "Ez da fitxategirik igo", + "No file uploaded" : "Ez da fitxategirik kargatu", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Gai pertsonalizatua erabiltzen ari zara dagoeneko. Gaiaren aplikazioaren ezarpenak gainidatzi ditzake.", "Theming" : "Itxura", "Appearance and accessibility" : "Itxura eta irisgarritasuna", diff --git a/apps/theming/l10n/eu.json b/apps/theming/l10n/eu.json index cc4a0d9706a..70f85feda37 100644 --- a/apps/theming/l10n/eu.json +++ b/apps/theming/l10n/eu.json @@ -21,7 +21,7 @@ "Missing a temporary folder" : "Aldi baterako karpeta bat falta da", "Could not write file to disk" : "Ezin izan da fitxategia diskoan idatzi", "A PHP extension stopped the file upload" : "PHP hedapen batek fitxategiaren karga gelditu du", - "No file uploaded" : "Ez da fitxategirik igo", + "No file uploaded" : "Ez da fitxategirik kargatu", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Gai pertsonalizatua erabiltzen ari zara dagoeneko. Gaiaren aplikazioaren ezarpenak gainidatzi ditzake.", "Theming" : "Itxura", "Appearance and accessibility" : "Itxura eta irisgarritasuna", diff --git a/apps/theming/l10n/fr.js b/apps/theming/l10n/fr.js index 588ec04acb4..e1f2320fcb5 100644 --- a/apps/theming/l10n/fr.js +++ b/apps/theming/l10n/fr.js @@ -54,7 +54,7 @@ OC.L10N.register( "Remove background image" : "Supprimer l'image en arrière-plan", "Advanced options" : "Options avancées", "Legal notice link" : "Lien vers la notice légale", - "Privacy policy link" : "Lien de la politique de confidentialité", + "Privacy policy link" : "Lien vers la politique de confidentialité", "Header logo" : "Logo d'en-tête", "Upload new header logo" : "Téléverser un nouveau logo d'en-tête", "Favicon" : "Favicon", diff --git a/apps/theming/l10n/fr.json b/apps/theming/l10n/fr.json index df89a8152fd..c8a577d334e 100644 --- a/apps/theming/l10n/fr.json +++ b/apps/theming/l10n/fr.json @@ -52,7 +52,7 @@ "Remove background image" : "Supprimer l'image en arrière-plan", "Advanced options" : "Options avancées", "Legal notice link" : "Lien vers la notice légale", - "Privacy policy link" : "Lien de la politique de confidentialité", + "Privacy policy link" : "Lien vers la politique de confidentialité", "Header logo" : "Logo d'en-tête", "Upload new header logo" : "Téléverser un nouveau logo d'en-tête", "Favicon" : "Favicon", diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php index 94deb2e7376..e671c2d53e8 100644 --- a/apps/theming/lib/Controller/ThemingController.php +++ b/apps/theming/lib/Controller/ThemingController.php @@ -331,7 +331,7 @@ class ThemingController extends Controller { } else { // If not set, we'll rely on the body class $compiler = new Compiler(); - $compiledCss = $compiler->compileString("body[data-theme-$themeId] { $variables $customCss }"); + $compiledCss = $compiler->compileString("[data-theme-$themeId] { $variables $customCss }"); $css = $compiledCss->getCss();; } diff --git a/apps/theming/lib/Themes/DarkTheme.php b/apps/theming/lib/Themes/DarkTheme.php index bcf4bf695d4..dd894635751 100644 --- a/apps/theming/lib/Themes/DarkTheme.php +++ b/apps/theming/lib/Themes/DarkTheme.php @@ -91,6 +91,7 @@ class DarkTheme extends DefaultTheme implements ITheme { '--color-border-dark' => $this->util->lighten($colorMainBackground, 14), '--background-invert-if-dark' => 'invert(100%)', + '--background-invert-if-bright' => 'no', ]); } } diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php index c822b3052ce..986892a6b6c 100644 --- a/apps/theming/lib/Themes/DefaultTheme.php +++ b/apps/theming/lib/Themes/DefaultTheme.php @@ -28,9 +28,12 @@ use OCA\Theming\ImageManager; use OCA\Theming\ThemingDefaults; use OCA\Theming\Util; use OCA\Theming\ITheme; +use OCP\App\IAppManager; use OCP\IConfig; use OCP\IL10N; use OCP\IURLGenerator; +use OCP\IUserSession; +use OCP\Server; class DefaultTheme implements ITheme { public Util $util; @@ -84,18 +87,25 @@ class DefaultTheme implements ITheme { public function getCSSVariables(): array { $colorMainText = '#222222'; + $colorMainTextRgb = join(',', $this->util->hexToRGB($colorMainText)); $colorMainBackground = '#ffffff'; $colorMainBackgroundRGB = join(',', $this->util->hexToRGB($colorMainBackground)); $colorBoxShadow = $this->util->darken($colorMainBackground, 70); $colorBoxShadowRGB = join(',', $this->util->hexToRGB($colorBoxShadow)); $colorPrimaryLight = $this->util->mix($this->primaryColor, $colorMainBackground, -80); - $hasCustomLogoHeader = $this->imageManager->hasImage('logo') || $this->imageManager->hasImage('logoheader'); + $colorPrimaryElement = $this->util->elementColor($this->primaryColor); + $colorPrimaryElementLight = $this->util->mix($colorPrimaryElement, $colorMainBackground, -80); + + $hasCustomLogoHeader = $this->imageManager->hasImage('logo') || $this->imageManager->hasImage('logoheader'); + $hasCustomPrimaryColour = !empty($this->config->getAppValue('theming', 'color')); $variables = [ '--color-main-background' => $colorMainBackground, '--color-main-background-rgb' => $colorMainBackgroundRGB, '--color-main-background-translucent' => 'rgba(var(--color-main-background-rgb), .97)', + '--color-main-background-blur' => 'rgba(var(--color-main-background-rgb), .8)', + '--filter-background-blur' => 'blur(25px)', // to use like this: background-image: linear-gradient(0, var('--gradient-main-background)); '--gradient-main-background' => 'var(--color-main-background) 0%, var(--color-main-background-translucent) 85%, transparent 100%', @@ -117,12 +127,15 @@ class DefaultTheme implements ITheme { '--color-primary-light-hover' => $this->util->mix($colorPrimaryLight, $colorMainText, 90), '--color-primary-text-dark' => $this->util->darken($this->util->invertTextColor($this->primaryColor) ? '#000000' : '#ffffff', 7), // used for buttons, inputs... - '--color-primary-element' => $this->util->elementColor($this->primaryColor), - '--color-primary-element-hover' => $this->util->mix($this->util->elementColor($this->primaryColor), $colorMainBackground, 80), - '--color-primary-element-light' => $this->util->lighten($this->util->elementColor($this->primaryColor), 15), - '--color-primary-element-lighter' => $this->util->mix($this->util->elementColor($this->primaryColor), $colorMainBackground, -70), + '--color-primary-element' => $colorPrimaryElement, + '--color-primary-element-text' => $this->util->invertTextColor($colorPrimaryElement) ? '#000000' : '#ffffff', + '--color-primary-element-hover' => $this->util->mix($colorPrimaryElement, $colorMainBackground, 60), + '--color-primary-element-light' => $colorPrimaryElementLight, + '--color-primary-element-light-text' => $colorPrimaryElement, + '--color-primary-element-light-hover' => $this->util->mix($colorPrimaryElementLight, $colorMainText, 90), + '--color-primary-element-text-dark' => $this->util->darken($this->util->invertTextColor($colorPrimaryElement) ? '#000000' : '#ffffff', 7), // to use like this: background-image: var(--gradient-primary-background); - '--gradient-primary-background' => 'linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-element-light) 100%)', + '--gradient-primary-background' => 'linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-hover) 100%)', // max contrast for WCAG compliance '--color-main-text' => $colorMainText, @@ -130,6 +143,8 @@ class DefaultTheme implements ITheme { '--color-text-light' => $colorMainText, '--color-text-lighter' => $this->util->lighten($colorMainText, 33), + '--color-scrollbar' => 'rgba(' . $colorMainTextRgb . ', .15)', + // info/warning/success feedback colours '--color-error' => '#e9322d', '--color-error-rgb' => join(',', $this->util->hexToRGB('#e9322d')), @@ -164,7 +179,9 @@ class DefaultTheme implements ITheme { // pill-style button, value is large so big buttons also have correct roundness '--border-radius-pill' => '100px', + '--default-clickable-area' => '44px', '--default-line-height' => '24px', + '--default-grid-baseline' => '4px', // various structure data '--header-height' => '50px', @@ -188,20 +205,31 @@ class DefaultTheme implements ITheme { // other theme with media queries '--primary-invert-if-bright' => $this->util->invertTextColor($this->primaryColor) ? 'invert(100%)' : 'no', '--background-invert-if-dark' => 'no', + '--background-invert-if-bright' => 'invert(100%)', + + '--image-main-background' => "url('" . $this->urlGenerator->imagePath('core', 'app-background.jpg') . "')", ]; - // Register image variables only if custom-defined $backgroundDeleted = $this->config->getAppValue('theming', 'backgroundMime', '') === 'backgroundColor'; - foreach(['logo', 'logoheader', 'favicon', 'background'] as $image) { + // If primary as background has been request or if we have a custom primary colour + // let's not define the background image + if ($backgroundDeleted || $hasCustomPrimaryColour) { + $variables["--image-background-plain"] = 'true'; + } + + // Register image variables only if custom-defined + foreach (['logo', 'logoheader', 'favicon', 'background'] as $image) { if ($this->imageManager->hasImage($image)) { - // If primary as background has been request, let's not define the background image - if ($image === 'background' && $backgroundDeleted) { - $variables["--image-background-plain"] = 'true'; - continue; - } else if ($image === 'background') { + $imageUrl = $this->imageManager->getImageUrl($image); + if ($image === 'background') { + // If background deleted is set, ignoring variable + if ($backgroundDeleted) { + continue; + } $variables['--image-background-size'] = 'cover'; + $variables['--image-main-background'] = "url('" . $imageUrl . "')"; } - $variables["--image-$image"] = "url('".$this->imageManager->getImageUrl($image)."')"; + $variables["--image-$image"] = "url('" . $imageUrl . "')"; } } @@ -209,6 +237,19 @@ class DefaultTheme implements ITheme { $variables["--image-logoheader-custom"] = 'true'; } + $appManager = Server::get(IAppManager::class); + $userSession = Server::get(IUserSession::class); + $user = $userSession->getUser(); + if ($appManager->isEnabledForUser('dashboard') && $user !== null) { + $dashboardBackground = $this->config->getUserValue($user->getUID(), 'dashboard', 'background', 'default'); + + if ($dashboardBackground === 'custom') { + $variables['--image-main-background'] = "url('" . $this->urlGenerator->linkToRouteAbsolute('dashboard.dashboard.getBackground') . "')"; + } elseif ($dashboardBackground !== 'default' && substr($dashboardBackground, 0, 1) !== '#') { + $variables['--image-main-background'] = "url('/apps/dashboard/img/" . $dashboardBackground . "')"; + } + } + return $variables; } diff --git a/apps/theming/lib/Themes/HighContrastTheme.php b/apps/theming/lib/Themes/HighContrastTheme.php index 77239f2076c..4f2f457bd5e 100644 --- a/apps/theming/lib/Themes/HighContrastTheme.php +++ b/apps/theming/lib/Themes/HighContrastTheme.php @@ -59,6 +59,9 @@ class HighContrastTheme extends DefaultTheme implements ITheme { $variables['--color-background-dark'] = $this->util->darken($colorMainBackground, 30); $variables['--color-background-darker'] = $this->util->darken($colorMainBackground, 30); + $variables['--color-main-background-blur'] = $colorMainBackground; + $variables['--filter-background-blur'] = 'none'; + $variables['--color-placeholder-light'] = $this->util->darken($colorMainBackground, 30); $variables['--color-placeholder-dark'] = $this->util->darken($colorMainBackground, 45); diff --git a/apps/theming/src/UserThemes.vue b/apps/theming/src/UserThemes.vue index f3e51f0a375..8e7f1d54e37 100644 --- a/apps/theming/src/UserThemes.vue +++ b/apps/theming/src/UserThemes.vue @@ -1,5 +1,5 @@ <template> - <SettingsSection class="theming" :title="t('themes', 'Appearance and accessibility')"> + <NcSettingsSection class="theming" :title="t('themes', 'Appearance and accessibility')"> <p v-html="description" /> <p v-html="descriptionDetail" /> @@ -23,14 +23,14 @@ type="font" @change="changeFont" /> </div> - </SettingsSection> + </NcSettingsSection> </template> <script> import { generateOcsUrl } from '@nextcloud/router' import { loadState } from '@nextcloud/initial-state' import axios from '@nextcloud/axios' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' import ItemPreview from './components/ItemPreview' @@ -43,7 +43,7 @@ export default { name: 'UserThemes', components: { ItemPreview, - SettingsSection, + NcSettingsSection, }, data() { @@ -124,11 +124,16 @@ export default { updateBodyAttributes() { const enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id) + const enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id) + this.themes.forEach(theme => { document.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled) }) + this.fonts.forEach(font => { + document.body.toggleAttribute(`data-theme-${font.id}`, font.enabled) + }) - document.body.setAttribute('data-themes', enabledThemesIDs.join(',')) + document.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(',')) }, /** diff --git a/apps/theming/src/components/ItemPreview.vue b/apps/theming/src/components/ItemPreview.vue index fac25ac7ae7..015a7480c72 100644 --- a/apps/theming/src/components/ItemPreview.vue +++ b/apps/theming/src/components/ItemPreview.vue @@ -7,25 +7,25 @@ <span v-if="enforced" class="theming__preview-warning" role="note"> {{ t('theming', 'Theme selection is enforced') }} </span> - <CheckboxRadioSwitch class="theming__preview-toggle" + <NcCheckboxRadioSwitch class="theming__preview-toggle" :checked.sync="checked" :disabled="enforced" :name="name" :type="switchType"> {{ theme.enableLabel }} - </CheckboxRadioSwitch> + </NcCheckboxRadioSwitch> </div> </div> </template> <script> import { generateFilePath } from '@nextcloud/router' -import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' +import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch' export default { name: 'ItemPreview', components: { - CheckboxRadioSwitch, + NcCheckboxRadioSwitch, }, props: { enforced: { @@ -67,7 +67,7 @@ export default { return this.selected }, set(checked) { - console.debug('Selecting theme', this.theme, checked) + console.debug('Changed theme', this.theme.id, checked) // If this is a radio, we can only enable if (!this.unique) { diff --git a/apps/theming/tests/ImageManagerTest.php b/apps/theming/tests/ImageManagerTest.php index 6a9b77234bb..ead9ca113e6 100644 --- a/apps/theming/tests/ImageManagerTest.php +++ b/apps/theming/tests/ImageManagerTest.php @@ -307,7 +307,7 @@ class ImageManagerTest extends TestCase { foreach ($folders as $index => $folder) { $folder->expects($this->any()) ->method('getName') - ->willReturn($index); + ->willReturn("$index"); } $folders[0]->expects($this->once())->method('delete'); $folders[1]->expects($this->once())->method('delete'); diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php index 160efdba142..84430360897 100644 --- a/apps/theming/tests/Themes/DefaultThemeTest.php +++ b/apps/theming/tests/Themes/DefaultThemeTest.php @@ -75,6 +75,13 @@ class DefaultThemeTest extends TestCase { return vsprintf($text, $parameters); }); + $this->urlGenerator + ->expects($this->any()) + ->method('imagePath') + ->willReturnCallback(function ($app = 'core', $filename = '') { + return "/$app/img/$filename"; + }); + $this->defaultTheme = new DefaultTheme( $util, $this->themingDefaults, diff --git a/apps/twofactor_backupcodes/composer/composer/installed.php b/apps/twofactor_backupcodes/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/twofactor_backupcodes/composer/composer/installed.php +++ b/apps/twofactor_backupcodes/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/twofactor_backupcodes/l10n/de.js b/apps/twofactor_backupcodes/l10n/de.js index 8ebbe05083d..adaacde1baa 100644 --- a/apps/twofactor_backupcodes/l10n/de.js +++ b/apps/twofactor_backupcodes/l10n/de.js @@ -1,23 +1,23 @@ OC.L10N.register( "twofactor_backupcodes", { - "You created two-factor backup codes for your account" : "Du hast Zwei-Faktor Sicherungs-Codes für Dein Konto erstellt", + "You created two-factor backup codes for your account" : "Du hast Zwei-Faktor Sicherungs-Codes für dein Konto erstellt", "Second-factor backup codes" : "Zweitfaktor Backup-Codes", "Generate backup codes" : "Backup-Codes erzeugen", - "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Du hast die Zwei-Faktor-Authentifizierung aktiviert, aber noch keine Backup-Codes erzeugt. Diese werden für den Fall benötigt, dass Du den Zugriff auf Deinen zweiten Faktor verloren hast.", + "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Du hast die Zwei-Faktor-Authentifizierung aktiviert, aber noch keine Backup-Codes erzeugt. Diese werden für den Fall benötigt, dass du den Zugriff auf Deinen zweiten Faktor verloren hast.", "Backup code" : "Backup-Code", "Use backup code" : "Verwende Backup-Code", "Two factor backup codes" : "Zweifaktor-Backup-Codes", "A two-factor auth backup codes provider" : "Ein Anbieter für Zweifaktor-Backup-Codes", "Backup codes have been generated. {used} of {total} codes have been used." : "Backup-Codes wurden erzeugt. {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 Deine Backup-Codes. Bitte speichere und/oder drucke diese aus, da diese Codes später nicht mehr angezeigt werden können", + "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 deine Backup-Codes. Bitte speichere und/oder drucke diese aus, da diese Codes später nicht mehr angezeigt werden können", "Save backup codes" : "Backup-Codes speichern", "Print backup codes" : "Backup-Codes drucken", "Regenerate backup codes" : "Backup-Codes erneuern", - "If you regenerate backup codes, you automatically invalidate old codes." : "Wenn Du Backup-Codes erneuerst, werden alte automatisch ungültig.", - "An error occurred while generating your backup codes" : "Es ist ein Fehler beim Erstellen Deiner Backup-Codes aufgetreten", + "If you regenerate backup codes, you automatically invalidate old codes." : "Wenn du Backup-Codes erneuerst, werden alte automatisch ungültig.", + "An error occurred while generating your backup codes" : "Es ist ein Fehler beim Erstellen deiner Backup-Codes aufgetreten", "{name} backup codes" : "{name} Backup-Codes", - "Use one of the backup codes you saved when setting up two-factor authentication." : "Verwende einen der Backup-Codes, den Du bei der Einrichtung der Zwei-Faktor-Authentifizierung gespeichert hast.", + "Use one of the backup codes you saved when setting up two-factor authentication." : "Verwende einen der Backup-Codes, den du bei der Einrichtung der Zwei-Faktor-Authentifizierung gespeichert hast.", "Submit" : "Übermitteln" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/de.json b/apps/twofactor_backupcodes/l10n/de.json index 75a64bf9d39..4f43fb08212 100644 --- a/apps/twofactor_backupcodes/l10n/de.json +++ b/apps/twofactor_backupcodes/l10n/de.json @@ -1,21 +1,21 @@ { "translations": { - "You created two-factor backup codes for your account" : "Du hast Zwei-Faktor Sicherungs-Codes für Dein Konto erstellt", + "You created two-factor backup codes for your account" : "Du hast Zwei-Faktor Sicherungs-Codes für dein Konto erstellt", "Second-factor backup codes" : "Zweitfaktor Backup-Codes", "Generate backup codes" : "Backup-Codes erzeugen", - "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Du hast die Zwei-Faktor-Authentifizierung aktiviert, aber noch keine Backup-Codes erzeugt. Diese werden für den Fall benötigt, dass Du den Zugriff auf Deinen zweiten Faktor verloren hast.", + "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Du hast die Zwei-Faktor-Authentifizierung aktiviert, aber noch keine Backup-Codes erzeugt. Diese werden für den Fall benötigt, dass du den Zugriff auf Deinen zweiten Faktor verloren hast.", "Backup code" : "Backup-Code", "Use backup code" : "Verwende Backup-Code", "Two factor backup codes" : "Zweifaktor-Backup-Codes", "A two-factor auth backup codes provider" : "Ein Anbieter für Zweifaktor-Backup-Codes", "Backup codes have been generated. {used} of {total} codes have been used." : "Backup-Codes wurden erzeugt. {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 Deine Backup-Codes. Bitte speichere und/oder drucke diese aus, da diese Codes später nicht mehr angezeigt werden können", + "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 deine Backup-Codes. Bitte speichere und/oder drucke diese aus, da diese Codes später nicht mehr angezeigt werden können", "Save backup codes" : "Backup-Codes speichern", "Print backup codes" : "Backup-Codes drucken", "Regenerate backup codes" : "Backup-Codes erneuern", - "If you regenerate backup codes, you automatically invalidate old codes." : "Wenn Du Backup-Codes erneuerst, werden alte automatisch ungültig.", - "An error occurred while generating your backup codes" : "Es ist ein Fehler beim Erstellen Deiner Backup-Codes aufgetreten", + "If you regenerate backup codes, you automatically invalidate old codes." : "Wenn du Backup-Codes erneuerst, werden alte automatisch ungültig.", + "An error occurred while generating your backup codes" : "Es ist ein Fehler beim Erstellen deiner Backup-Codes aufgetreten", "{name} backup codes" : "{name} Backup-Codes", - "Use one of the backup codes you saved when setting up two-factor authentication." : "Verwende einen der Backup-Codes, den Du bei der Einrichtung der Zwei-Faktor-Authentifizierung gespeichert hast.", + "Use one of the backup codes you saved when setting up two-factor authentication." : "Verwende einen der Backup-Codes, den du bei der Einrichtung der Zwei-Faktor-Authentifizierung gespeichert hast.", "Submit" : "Übermitteln" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/es_SV.js b/apps/twofactor_backupcodes/l10n/es_SV.js index 7755ca8d5dc..b42bc5da4b9 100644 --- a/apps/twofactor_backupcodes/l10n/es_SV.js +++ b/apps/twofactor_backupcodes/l10n/es_SV.js @@ -15,4 +15,4 @@ OC.L10N.register( "An error occurred while generating your backup codes" : "Se presentó un error al generar tus códigos de respaldo. ", "Submit" : "Enviar" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/twofactor_backupcodes/l10n/es_SV.json b/apps/twofactor_backupcodes/l10n/es_SV.json index 072703ee44f..880e4ccd9dd 100644 --- a/apps/twofactor_backupcodes/l10n/es_SV.json +++ b/apps/twofactor_backupcodes/l10n/es_SV.json @@ -12,5 +12,5 @@ "If you regenerate backup codes, you automatically invalidate old codes." : "Si regeneras los códigos de respaldo, automáticamente invalidarás los anteriores. ", "An error occurred while generating your backup codes" : "Se presentó un error al generar tus códigos de respaldo. ", "Submit" : "Enviar" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/updatenotification/composer/composer/installed.php b/apps/updatenotification/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/updatenotification/composer/composer/installed.php +++ b/apps/updatenotification/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/updatenotification/l10n/cs.js b/apps/updatenotification/l10n/cs.js index a5429bcee64..f5db017c6e4 100644 --- a/apps/updatenotification/l10n/cs.js +++ b/apps/updatenotification/l10n/cs.js @@ -31,7 +31,7 @@ OC.L10N.register( "Only notifications for app updates are available." : "K dispozici jsou upozornění pouze na aktualizace aplikací.", "The selected update channel makes dedicated notifications for the server obsolete." : "Pro zvolený kanál aktualizací se už vyhrazená upozorňování pro server nepoužívají.", "The selected update channel does not support updates of the server." : "Vybraný kanál aktualizací nepodporuje aktualizace serveru.", - "A new version is available: <strong>{newVersionString}</strong>" : "K dispozici je nová verze: <strong>{newVersionString}</strong>", + "A new version is available: <strong>{newVersionString}</strong>" : "Je k dispozici nová verze: <strong>{newVersionString}</strong>", "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Můžete si všimnout, že po vydání nové verze se aktualizace objeví až po vydání první opravné aktualizace. Nové verze totiž distribuujeme mezi uživatele postupně a občas, pokud jsou nalezeny chyby, danou verzi i přeskočíme. Zjištěte více o aktualizacích a kanálech aktualizací kliknutím na {link}", "Checked on {lastCheckedDate}" : "Zkontrolováno {lastCheckedDate}", "Checking apps for compatible versions" : "Kontrola kompatibilních verzí aplikací", diff --git a/apps/updatenotification/l10n/cs.json b/apps/updatenotification/l10n/cs.json index 23179c436a5..2f01aa38a1a 100644 --- a/apps/updatenotification/l10n/cs.json +++ b/apps/updatenotification/l10n/cs.json @@ -29,7 +29,7 @@ "Only notifications for app updates are available." : "K dispozici jsou upozornění pouze na aktualizace aplikací.", "The selected update channel makes dedicated notifications for the server obsolete." : "Pro zvolený kanál aktualizací se už vyhrazená upozorňování pro server nepoužívají.", "The selected update channel does not support updates of the server." : "Vybraný kanál aktualizací nepodporuje aktualizace serveru.", - "A new version is available: <strong>{newVersionString}</strong>" : "K dispozici je nová verze: <strong>{newVersionString}</strong>", + "A new version is available: <strong>{newVersionString}</strong>" : "Je k dispozici nová verze: <strong>{newVersionString}</strong>", "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Můžete si všimnout, že po vydání nové verze se aktualizace objeví až po vydání první opravné aktualizace. Nové verze totiž distribuujeme mezi uživatele postupně a občas, pokud jsou nalezeny chyby, danou verzi i přeskočíme. Zjištěte více o aktualizacích a kanálech aktualizací kliknutím na {link}", "Checked on {lastCheckedDate}" : "Zkontrolováno {lastCheckedDate}", "Checking apps for compatible versions" : "Kontrola kompatibilních verzí aplikací", diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js index 650fe0ff585..f3e1154e027 100644 --- a/apps/updatenotification/l10n/de.js +++ b/apps/updatenotification/l10n/de.js @@ -24,7 +24,7 @@ OC.L10N.register( "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden.", "Your version is up to date." : "Deine Version ist aktuell.", "A non-default update server is in use to be checked for updates:" : "Es wird ein Nicht-Standard-Aktualisierungsserver zum Prüfen auf Aktualisierungen verwendet:", - "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Du kannst den Aktualisierungskanal unten ändern, was sich auch auf die Verwaltungsseite der Apps auswirkt. Z. B. werden nach dem Wechsel zum Beta-Kanal Dir Beta-App-Updates auf der App-Verwaltungsseite angeboten.", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Du kannst den Aktualisierungskanal unten ändern, was sich auch auf die Verwaltungsseite der Apps auswirkt. Z. B. werden nach dem Wechsel zum Beta-Kanal dir Beta-App-Updates auf der App-Verwaltungsseite angeboten.", "Update channel:" : "Update-Kanal:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Es kann immer auf eine neuere Version aktualisiert werden. Jedoch kann kein Downgrade auf eine stabilere Version erfolgen. ", "Notify members of the following groups about available updates:" : "Informiere die Mitglieder der folgenden Gruppen über verfügbare Updates:", @@ -32,11 +32,11 @@ OC.L10N.register( "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.", "The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.", "A new version is available: <strong>{newVersionString}</strong>" : "Eine neue Version ist verfügbar: <strong>{newVersionString}</strong>", - "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Beachte, dass das Update nach einer neuen Version erst nach der ersten Hauptversion oder später angezeigt wird. Die Nextcloud GmbH stellt den Benutzern im Laufe der Zeit neue Versionen zur Verfügung und überspringt manchmal eine Version, wenn Probleme auftreten. Weitere Informationen zu Updates und Release-Kanälen findest Du unter {link}", + "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Beachte, dass das Update nach einer neuen Version erst nach der ersten Hauptversion oder später angezeigt wird. Die Nextcloud GmbH stellt den Benutzern im Laufe der Zeit neue Versionen zur Verfügung und überspringt manchmal eine Version, wenn Probleme auftreten. Weitere Informationen zu Updates und Release-Kanälen findest du unter {link}", "Checked on {lastCheckedDate}" : "Geprüft am {lastCheckedDate}", "Checking apps for compatible versions" : "Es werden alle Apps auf kompatible Versionen geprüft", "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Bitte stelle sicher, dass in der \"config.php\"-Datei die Variable <samp>appstoreenabled</samp> nicht auf \"false\" steht.", - "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Die Verbindung zum App-Store konnte nicht aufgebaut werden oder der App-Store hat keine Apps zurück geliefert. Suche selbst nach Updates oder stelle sicher, dass Dein Server Zugriff auf das Internet hat und eine Verbindung zum App-Store aufbauen kann. ", + "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Die Verbindung zum App-Store konnte nicht aufgebaut werden oder der App-Store hat keine Apps zurück geliefert. Suche selbst nach Updates oder stelle sicher, dass dein Server Zugriff auf das Internet hat und eine Verbindung zum App-Store aufbauen kann. ", "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "Für <strong>alle</strong> Apps steht eine kompatible Version zur Verfügung.", "View changelog" : "Liste der Änderungen anschauen", "Enterprise" : "Version für Unternehmen", diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json index 8c7fddedc4d..7e861a28ac5 100644 --- a/apps/updatenotification/l10n/de.json +++ b/apps/updatenotification/l10n/de.json @@ -22,7 +22,7 @@ "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden.", "Your version is up to date." : "Deine Version ist aktuell.", "A non-default update server is in use to be checked for updates:" : "Es wird ein Nicht-Standard-Aktualisierungsserver zum Prüfen auf Aktualisierungen verwendet:", - "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Du kannst den Aktualisierungskanal unten ändern, was sich auch auf die Verwaltungsseite der Apps auswirkt. Z. B. werden nach dem Wechsel zum Beta-Kanal Dir Beta-App-Updates auf der App-Verwaltungsseite angeboten.", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Du kannst den Aktualisierungskanal unten ändern, was sich auch auf die Verwaltungsseite der Apps auswirkt. Z. B. werden nach dem Wechsel zum Beta-Kanal dir Beta-App-Updates auf der App-Verwaltungsseite angeboten.", "Update channel:" : "Update-Kanal:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Es kann immer auf eine neuere Version aktualisiert werden. Jedoch kann kein Downgrade auf eine stabilere Version erfolgen. ", "Notify members of the following groups about available updates:" : "Informiere die Mitglieder der folgenden Gruppen über verfügbare Updates:", @@ -30,11 +30,11 @@ "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.", "The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.", "A new version is available: <strong>{newVersionString}</strong>" : "Eine neue Version ist verfügbar: <strong>{newVersionString}</strong>", - "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Beachte, dass das Update nach einer neuen Version erst nach der ersten Hauptversion oder später angezeigt wird. Die Nextcloud GmbH stellt den Benutzern im Laufe der Zeit neue Versionen zur Verfügung und überspringt manchmal eine Version, wenn Probleme auftreten. Weitere Informationen zu Updates und Release-Kanälen findest Du unter {link}", + "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Beachte, dass das Update nach einer neuen Version erst nach der ersten Hauptversion oder später angezeigt wird. Die Nextcloud GmbH stellt den Benutzern im Laufe der Zeit neue Versionen zur Verfügung und überspringt manchmal eine Version, wenn Probleme auftreten. Weitere Informationen zu Updates und Release-Kanälen findest du unter {link}", "Checked on {lastCheckedDate}" : "Geprüft am {lastCheckedDate}", "Checking apps for compatible versions" : "Es werden alle Apps auf kompatible Versionen geprüft", "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Bitte stelle sicher, dass in der \"config.php\"-Datei die Variable <samp>appstoreenabled</samp> nicht auf \"false\" steht.", - "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Die Verbindung zum App-Store konnte nicht aufgebaut werden oder der App-Store hat keine Apps zurück geliefert. Suche selbst nach Updates oder stelle sicher, dass Dein Server Zugriff auf das Internet hat und eine Verbindung zum App-Store aufbauen kann. ", + "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Die Verbindung zum App-Store konnte nicht aufgebaut werden oder der App-Store hat keine Apps zurück geliefert. Suche selbst nach Updates oder stelle sicher, dass dein Server Zugriff auf das Internet hat und eine Verbindung zum App-Store aufbauen kann. ", "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "Für <strong>alle</strong> Apps steht eine kompatible Version zur Verfügung.", "View changelog" : "Liste der Änderungen anschauen", "Enterprise" : "Version für Unternehmen", diff --git a/apps/updatenotification/l10n/fr.js b/apps/updatenotification/l10n/fr.js index b425d5d7a19..17b5d8b778a 100644 --- a/apps/updatenotification/l10n/fr.js +++ b/apps/updatenotification/l10n/fr.js @@ -45,6 +45,7 @@ OC.L10N.register( "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "La version stable la plus récente. Elle est adaptée pour une utilisation régulière et sera toujours mise à jour vers la dernière version majeure.", "Beta" : "Beta", "A pre-release version only for testing new features, not for production environments." : "Une version préliminaire utilisée seulement pour tester les nouvelles fonctionnalités, n'est pas adaptée dans un environnement de production.", + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["<strong>%n</strong> application n'a pas de version compatible pour cette version de Nextcloud disponible.","<strong>%n</strong> applications n'ont pas de version compatible pour cette version de Nextcloud disponible.","<strong>%n</strong> applications n'ont pas de version compatible pour cette version de Nextcloud disponible."], "<strong>All</strong> apps have a compatible version for this Nextcloud version available" : "<strong></strong>Applications compatibles pour cette version de Nexctloud", "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["<strong>%n</strong> application n'a pas de version compatible avec cette version disponible de Nextcloud","<strong>%n</strong> applications n'ont pas de version compatible avec cette version disponible de Nextcloud","<strong>%n</strong> applications n'ont pas de version compatible avec cette version disponible de Nextcloud"] }, diff --git a/apps/updatenotification/l10n/fr.json b/apps/updatenotification/l10n/fr.json index eb1754b4584..77190da4319 100644 --- a/apps/updatenotification/l10n/fr.json +++ b/apps/updatenotification/l10n/fr.json @@ -43,6 +43,7 @@ "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "La version stable la plus récente. Elle est adaptée pour une utilisation régulière et sera toujours mise à jour vers la dernière version majeure.", "Beta" : "Beta", "A pre-release version only for testing new features, not for production environments." : "Une version préliminaire utilisée seulement pour tester les nouvelles fonctionnalités, n'est pas adaptée dans un environnement de production.", + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["<strong>%n</strong> application n'a pas de version compatible pour cette version de Nextcloud disponible.","<strong>%n</strong> applications n'ont pas de version compatible pour cette version de Nextcloud disponible.","<strong>%n</strong> applications n'ont pas de version compatible pour cette version de Nextcloud disponible."], "<strong>All</strong> apps have a compatible version for this Nextcloud version available" : "<strong></strong>Applications compatibles pour cette version de Nexctloud", "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["<strong>%n</strong> application n'a pas de version compatible avec cette version disponible de Nextcloud","<strong>%n</strong> applications n'ont pas de version compatible avec cette version disponible de Nextcloud","<strong>%n</strong> applications n'ont pas de version compatible avec cette version disponible de Nextcloud"] },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" diff --git a/apps/updatenotification/l10n/mk.js b/apps/updatenotification/l10n/mk.js index 1e0b6a2ab8a..fe6d2b65ef2 100644 --- a/apps/updatenotification/l10n/mk.js +++ b/apps/updatenotification/l10n/mk.js @@ -16,6 +16,7 @@ OC.L10N.register( "Apps missing compatible version" : "Апликации на кој им недостасува компатибилност", "View in store" : "Преглед во продавницата за апликации", "Apps with compatible version" : "Апликации со компатибилни верзии", + "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Имајте на ум дека веб ажурирачот не го препорачуваат повеќе од 100 корисници! Наместо тоа, користете го ажурирачот на командната линија!", "Open updater" : "Стартувај го надградувачот", "Download now" : "Преземи", "Please use the command line updater to update." : "Користете ја командната линија за ажурирање.", @@ -23,6 +24,7 @@ OC.L10N.register( "The update check is not yet finished. Please refresh the page." : "Сеуште нема извшено проверка за ажурирање, Ве молиме рефреширајте ја страната.", "Your version is up to date." : "Вашата верзија е ажурирана.", "A non-default update server is in use to be checked for updates:" : "Нестандарден сервер е поставен за проверка за ажурирање:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Може да го промените каналот за ажурирање подолу, што исто така влијае на страницата за управување со апликации. На пр. откако ќе се префрлите на бета каналот, ќе ви бидат понудени ажурирања на бета апликации на страницата за управување со апликации.", "Update channel:" : "Канал за ажурирање:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Секогаш можете да ажурирате на нова верзија. Но никогаш нема да можете да се вратите на постара верзија.", "Notify members of the following groups about available updates:" : "Извести ги членовите на овие групи за достапните ажурирања:", @@ -34,6 +36,8 @@ OC.L10N.register( "Checked on {lastCheckedDate}" : "Проверено на {lastCheckedDate}", "Checking apps for compatible versions" : "Проверка за компатибилност на апликациите со новата верзија", "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Бидете сигурни дека во config.php датотеката параматарот <samp>appstoreenabled</samp> е поставен на false.", + "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Неможе да се поврзе со appstore или одговорот е дека нема ажурирање. Пребарајте рачно за ажурирање или бидете сигурни дека серверот има пристап до интернет и може да се поврзе со продавницата.", + "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "<strong>Сите</strong> апликации се компатибилни за оваа верзија", "View changelog" : "Видете ги проммените", "Enterprise" : "Професионален", "For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package." : "За професионална употреба. Овозможува секогаш најново ниво на ажурирање, но нема веднаш да се ажурира на следното големо издание. Ова ажурирање се случува откако Nextcloud GmbH ќе направи дополнително тестирање за големи и критични сервери. Овој канал е достапен само за клиентите и го имаат пакетот Nextcloud Enterprise.", @@ -41,6 +45,7 @@ OC.L10N.register( "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Најнова стабилна верзија. Корисно за редовна употреба и секогаш ќе се ажурира до последната најнова верзија.", "Beta" : "Бета", "A pre-release version only for testing new features, not for production environments." : "Неиздадена верзија само за тестирање на новите можности, не е за редовна употреба.", + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["1 апликација нема компатибилност со оваа веријза","<strong>%n</strong> апликации немаат компатибилност со оваа веријза"], "<strong>All</strong> apps have a compatible version for this Nextcloud version available" : "<strong>Сите</strong> апликации се компатибилни за оваа верзија", "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["<strong>%n</strong> апликација нема компатибилност со оваа веријза","<strong>%n</strong> апликации немаат компатибилност со оваа веријза"] }, diff --git a/apps/updatenotification/l10n/mk.json b/apps/updatenotification/l10n/mk.json index 0bbbbf835bc..55accc5c380 100644 --- a/apps/updatenotification/l10n/mk.json +++ b/apps/updatenotification/l10n/mk.json @@ -14,6 +14,7 @@ "Apps missing compatible version" : "Апликации на кој им недостасува компатибилност", "View in store" : "Преглед во продавницата за апликации", "Apps with compatible version" : "Апликации со компатибилни верзии", + "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Имајте на ум дека веб ажурирачот не го препорачуваат повеќе од 100 корисници! Наместо тоа, користете го ажурирачот на командната линија!", "Open updater" : "Стартувај го надградувачот", "Download now" : "Преземи", "Please use the command line updater to update." : "Користете ја командната линија за ажурирање.", @@ -21,6 +22,7 @@ "The update check is not yet finished. Please refresh the page." : "Сеуште нема извшено проверка за ажурирање, Ве молиме рефреширајте ја страната.", "Your version is up to date." : "Вашата верзија е ажурирана.", "A non-default update server is in use to be checked for updates:" : "Нестандарден сервер е поставен за проверка за ажурирање:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Може да го промените каналот за ажурирање подолу, што исто така влијае на страницата за управување со апликации. На пр. откако ќе се префрлите на бета каналот, ќе ви бидат понудени ажурирања на бета апликации на страницата за управување со апликации.", "Update channel:" : "Канал за ажурирање:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Секогаш можете да ажурирате на нова верзија. Но никогаш нема да можете да се вратите на постара верзија.", "Notify members of the following groups about available updates:" : "Извести ги членовите на овие групи за достапните ажурирања:", @@ -32,6 +34,8 @@ "Checked on {lastCheckedDate}" : "Проверено на {lastCheckedDate}", "Checking apps for compatible versions" : "Проверка за компатибилност на апликациите со новата верзија", "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Бидете сигурни дека во config.php датотеката параматарот <samp>appstoreenabled</samp> е поставен на false.", + "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Неможе да се поврзе со appstore или одговорот е дека нема ажурирање. Пребарајте рачно за ажурирање или бидете сигурни дека серверот има пристап до интернет и може да се поврзе со продавницата.", + "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "<strong>Сите</strong> апликации се компатибилни за оваа верзија", "View changelog" : "Видете ги проммените", "Enterprise" : "Професионален", "For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package." : "За професионална употреба. Овозможува секогаш најново ниво на ажурирање, но нема веднаш да се ажурира на следното големо издание. Ова ажурирање се случува откако Nextcloud GmbH ќе направи дополнително тестирање за големи и критични сервери. Овој канал е достапен само за клиентите и го имаат пакетот Nextcloud Enterprise.", @@ -39,6 +43,7 @@ "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Најнова стабилна верзија. Корисно за редовна употреба и секогаш ќе се ажурира до последната најнова верзија.", "Beta" : "Бета", "A pre-release version only for testing new features, not for production environments." : "Неиздадена верзија само за тестирање на новите можности, не е за редовна употреба.", + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["1 апликација нема компатибилност со оваа веријза","<strong>%n</strong> апликации немаат компатибилност со оваа веријза"], "<strong>All</strong> apps have a compatible version for this Nextcloud version available" : "<strong>Сите</strong> апликации се компатибилни за оваа верзија", "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["<strong>%n</strong> апликација нема компатибилност со оваа веријза","<strong>%n</strong> апликации немаат компатибилност со оваа веријза"] },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" diff --git a/apps/updatenotification/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js index 9f89930d447..5fc5945bf25 100644 --- a/apps/updatenotification/l10n/zh_CN.js +++ b/apps/updatenotification/l10n/zh_CN.js @@ -23,6 +23,7 @@ OC.L10N.register( "The update check is not yet finished. Please refresh the page." : "更新检查未完成。请刷新页面。", "Your version is up to date." : "您的版本已是最新。", "A non-default update server is in use to be checked for updates:" : "检查更新使用了一个非默认的服务器:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "你可以在下面改变更新渠道,这也会影响到应用管理页面。例如:切换到测试版渠道后,测试版应用程序的更新将在应用程序管理页面提供给你。", "Update channel:" : "更新通道:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "您永远可以升级到更新的版本。但不能降级到更稳定的低版本。", "Notify members of the following groups about available updates:" : "提醒以下组群的用户关于可用的更新:", diff --git a/apps/updatenotification/l10n/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json index 856b37d3a4a..39be5267e12 100644 --- a/apps/updatenotification/l10n/zh_CN.json +++ b/apps/updatenotification/l10n/zh_CN.json @@ -21,6 +21,7 @@ "The update check is not yet finished. Please refresh the page." : "更新检查未完成。请刷新页面。", "Your version is up to date." : "您的版本已是最新。", "A non-default update server is in use to be checked for updates:" : "检查更新使用了一个非默认的服务器:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "你可以在下面改变更新渠道,这也会影响到应用管理页面。例如:切换到测试版渠道后,测试版应用程序的更新将在应用程序管理页面提供给你。", "Update channel:" : "更新通道:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "您永远可以升级到更新的版本。但不能降级到更稳定的低版本。", "Notify members of the following groups about available updates:" : "提醒以下组群的用户关于可用的更新:", diff --git a/apps/updatenotification/src/components/UpdateNotification.vue b/apps/updatenotification/src/components/UpdateNotification.vue index 5039ac22bb7..c18d65caa70 100644 --- a/apps/updatenotification/src/components/UpdateNotification.vue +++ b/apps/updatenotification/src/components/UpdateNotification.vue @@ -63,7 +63,7 @@ <div class="toggleWhatsNew"> <a v-click-outside="hideMenu" class="button" @click="toggleMenu">{{ t('updatenotification', 'What\'s new?') }}</a> <div class="popovermenu" :class="{ 'menu-center': true, open: openedWhatsNew }"> - <PopoverMenu :menu="whatsNew" /> + <NcPopoverMenu :menu="whatsNew" /> </div> </div> </div> @@ -96,7 +96,7 @@ <span class="icon-triangle-s" /> </span> <div class="popovermenu menu menu-center" :class="{ 'show-menu': openedUpdateChannelMenu}"> - <PopoverMenu :menu="channelList" /> + <NcPopoverMenu :menu="channelList" /> </div> </div> </h3> @@ -108,7 +108,7 @@ <p id="oca_updatenotification_groups"> {{ t('updatenotification', 'Notify members of the following groups about available updates:') }} - <Multiselect v-model="notifyGroups" + <NcMultiselect v-model="notifyGroups" :options="availableGroups" :multiple="true" label="label" @@ -123,8 +123,8 @@ <script> import { generateUrl, getRootUrl, generateOcsUrl } from '@nextcloud/router' -import PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcPopoverMenu from '@nextcloud/vue/dist/Components/NcPopoverMenu' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import { VTooltip } from 'v-tooltip' import ClickOutside from 'vue-click-outside' @@ -133,8 +133,8 @@ VTooltip.options.defaultHtml = false export default { name: 'UpdateNotification', components: { - Multiselect, - PopoverMenu, + NcMultiselect, + NcPopoverMenu, }, directives: { ClickOutside, diff --git a/apps/updatenotification/tests/Settings/AdminTest.php b/apps/updatenotification/tests/Settings/AdminTest.php index 852504fb45a..489679dfabd 100644 --- a/apps/updatenotification/tests/Settings/AdminTest.php +++ b/apps/updatenotification/tests/Settings/AdminTest.php @@ -36,13 +36,16 @@ use OCP\IConfig; use OCP\IDateTimeFormatter; use OCP\IGroup; use OCP\IGroupManager; +use OCP\IUserManager; use OCP\L10N\IFactory; use OCP\L10N\ILanguageIterator; use OCP\Support\Subscription\IRegistry; +use OCP\UserInterface; +use OCP\User\Backend\ICountUsersBackend; use OCP\Util; -use Test\TestCase; -use OCP\IUserManager; +use OC\User\Backend; use Psr\Log\LoggerInterface; +use Test\TestCase; class AdminTest extends TestCase { /** @var IFactory|\PHPUnit\Framework\MockObject\MockObject */ @@ -89,9 +92,9 @@ class AdminTest extends TestCase { } public function testGetFormWithUpdate() { - $backend1 = $this->createMock(UserInterface::class); - $backend2 = $this->createMock(UserInterface::class); - $backend3 = $this->createMock(UserInterface::class); + $backend1 = $this->createMock(CountUsersBackend::class); + $backend2 = $this->createMock(CountUsersBackend::class); + $backend3 = $this->createMock(CountUsersBackend::class); $backend1 ->expects($this->once()) ->method('implementsActions') @@ -213,9 +216,9 @@ class AdminTest extends TestCase { } public function testGetFormWithUpdateAndChangedUpdateServer() { - $backend1 = $this->createMock(UserInterface::class); - $backend2 = $this->createMock(UserInterface::class); - $backend3 = $this->createMock(UserInterface::class); + $backend1 = $this->createMock(CountUsersBackend::class); + $backend2 = $this->createMock(CountUsersBackend::class); + $backend3 = $this->createMock(CountUsersBackend::class); $backend1 ->expects($this->once()) ->method('implementsActions') @@ -337,9 +340,9 @@ class AdminTest extends TestCase { } public function testGetFormWithUpdateAndCustomersUpdateServer() { - $backend1 = $this->createMock(UserInterface::class); - $backend2 = $this->createMock(UserInterface::class); - $backend3 = $this->createMock(UserInterface::class); + $backend1 = $this->createMock(CountUsersBackend::class); + $backend2 = $this->createMock(CountUsersBackend::class); + $backend3 = $this->createMock(CountUsersBackend::class); $backend1 ->expects($this->once()) ->method('implementsActions') @@ -543,3 +546,7 @@ class AdminTest extends TestCase { $this->assertSame($expectation, $result); } } + +abstract class CountUsersBackend implements UserInterface, ICountUsersBackend { + +} diff --git a/apps/user_ldap/composer/composer/installed.php b/apps/user_ldap/composer/composer/installed.php index 5e942064485..c54b7ff5437 100644 --- a/apps/user_ldap/composer/composer/installed.php +++ b/apps/user_ldap/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '9915dc6785d1660068a51604f9379e8b1dc1418c', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '9915dc6785d1660068a51604f9379e8b1dc1418c', 'dev_requirement' => false, ), ), diff --git a/apps/user_ldap/l10n/ast.js b/apps/user_ldap/l10n/ast.js index 7828682c94d..2561ee32f6b 100644 --- a/apps/user_ldap/l10n/ast.js +++ b/apps/user_ldap/l10n/ast.js @@ -45,8 +45,6 @@ OC.L10N.register( "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.", "Please provide a login name to test against" : "Por favor, proporcione un nombre de inicio de sesión para comprobar en contra", "Your password will expire today." : "Güei caduca la to contraseña.", - "_%s group found_::_%s groups found_" : ["%s grupu alcontráu","%s grupos alcontraos"], - "_%s user found_::_%s users found_" : ["%s usuariu alcontráu","%s usuarios alcontraos"], "Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada", "Invalid Host" : "Agospiu non válidu", "Test Configuration" : "Configuración de prueba", diff --git a/apps/user_ldap/l10n/ast.json b/apps/user_ldap/l10n/ast.json index fced48f4863..8d3e332c21f 100644 --- a/apps/user_ldap/l10n/ast.json +++ b/apps/user_ldap/l10n/ast.json @@ -43,8 +43,6 @@ "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "El filtru de busca nun ye válidu , probablemente por cuenta de problemes de sintaxis como'l númberu impar de soportes abiertos y zarraos. Por favor revisalo.", "Please provide a login name to test against" : "Por favor, proporcione un nombre de inicio de sesión para comprobar en contra", "Your password will expire today." : "Güei caduca la to contraseña.", - "_%s group found_::_%s groups found_" : ["%s grupu alcontráu","%s grupos alcontraos"], - "_%s user found_::_%s users found_" : ["%s usuariu alcontráu","%s usuarios alcontraos"], "Could not find the desired feature" : "Nun pudo alcontrase la carauterística deseyada", "Invalid Host" : "Agospiu non válidu", "Test Configuration" : "Configuración de prueba", diff --git a/apps/user_ldap/l10n/bg.js b/apps/user_ldap/l10n/bg.js index 349576990fd..89edb9481a5 100644 --- a/apps/user_ldap/l10n/bg.js +++ b/apps/user_ldap/l10n/bg.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "Вашата парола ще изтече днес.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Вашата парола ще изтече в рамките на %n дни.","Вашата парола ще изтече в рамките на %n дни."], "LDAP/AD integration" : "LDAP/AD интеграция", - "_%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.", "Could not find the desired feature" : "Не е открита желанта функция", "Invalid Host" : "Невалиден хост", diff --git a/apps/user_ldap/l10n/bg.json b/apps/user_ldap/l10n/bg.json index fd48b1de69b..9028213f374 100644 --- a/apps/user_ldap/l10n/bg.json +++ b/apps/user_ldap/l10n/bg.json @@ -58,8 +58,6 @@ "Your password will expire today." : "Вашата парола ще изтече днес.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Вашата парола ще изтече в рамките на %n дни.","Вашата парола ще изтече в рамките на %n дни."], "LDAP/AD integration" : "LDAP/AD интеграция", - "_%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.", "Could not find the desired feature" : "Не е открита желанта функция", "Invalid Host" : "Невалиден хост", diff --git a/apps/user_ldap/l10n/ca.js b/apps/user_ldap/l10n/ca.js index 35f5f0ffd97..fa8f0b744e6 100644 --- a/apps/user_ldap/l10n/ca.js +++ b/apps/user_ldap/l10n/ca.js @@ -56,8 +56,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "La contrasenya caducarà demà.", "Your password will expire today." : "La contrasenya caducarà avui.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La vostra contrasenya expirarà en %n dies.","La vostra contrasenya expirarà d'aquí %n dies."], - "_%s group found_::_%s groups found_" : ["S'ha trobat %s grup","S'han trobat %s grups"], - "_%s user found_::_%s users found_" : ["S'ha trobat %s usuari","S'han trobat %s usuaris"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No s'ha pogut detectar l'atribut del nom de visualització de l'usuari. Si us plau, especifiqueu-vos a la configuració LDAP avançada.", "Could not find the desired feature" : "La característica desitjada no s'ha trobat", "Invalid Host" : "Ordinador central no vàlid", diff --git a/apps/user_ldap/l10n/ca.json b/apps/user_ldap/l10n/ca.json index faf5a92ea57..b7d1442d8b3 100644 --- a/apps/user_ldap/l10n/ca.json +++ b/apps/user_ldap/l10n/ca.json @@ -54,8 +54,6 @@ "Your password will expire tomorrow." : "La contrasenya caducarà demà.", "Your password will expire today." : "La contrasenya caducarà avui.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La vostra contrasenya expirarà en %n dies.","La vostra contrasenya expirarà d'aquí %n dies."], - "_%s group found_::_%s groups found_" : ["S'ha trobat %s grup","S'han trobat %s grups"], - "_%s user found_::_%s users found_" : ["S'ha trobat %s usuari","S'han trobat %s usuaris"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No s'ha pogut detectar l'atribut del nom de visualització de l'usuari. Si us plau, especifiqueu-vos a la configuració LDAP avançada.", "Could not find the desired feature" : "La característica desitjada no s'ha trobat", "Invalid Host" : "Ordinador central no vàlid", diff --git a/apps/user_ldap/l10n/cs.js b/apps/user_ldap/l10n/cs.js index c8317123f05..4d4909ff456 100644 --- a/apps/user_ldap/l10n/cs.js +++ b/apps/user_ldap/l10n/cs.js @@ -60,8 +60,10 @@ OC.L10N.register( "Your password will expire today." : "Platnost hesla dnes končí.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Platnost hesla skončí za %n den.","Platnost hesla skončí za %n dny.","Platnost hesla skončí za %n dnů.","Platnost hesla skončí za %n dny."], "LDAP/AD integration" : "Napojení na LDAP/AD", - "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin","nalezeny %s skupiny"], - "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů","nalezeni %s uživatelé"], + "_%n group found_::_%n groups found_" : ["nalezena %n skupina","nalezeny %n skupiny","nalezeno %n skupin","nalezeny %n skupiny"], + "> 1000 groups found" : "nalezeno více než 1 000 skupin", + "> 1000 users found" : "nalezeno více než 1 000 uživatelů", + "_%n user found_::_%n users found_" : ["nalezen %n uživatel","nalezení %n uživatelé","nalezeno %n uživatelů","nalezeni %n uživatelé"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nedaří se zjistit atribut pro zobrazení jména uživatele. Upřesněte ho sami v rozšířeném nastavení LDAP.", "Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost", "Invalid Host" : "Neplatný hostitel", diff --git a/apps/user_ldap/l10n/cs.json b/apps/user_ldap/l10n/cs.json index 91f7a4bf781..817a3e3a584 100644 --- a/apps/user_ldap/l10n/cs.json +++ b/apps/user_ldap/l10n/cs.json @@ -58,8 +58,10 @@ "Your password will expire today." : "Platnost hesla dnes končí.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Platnost hesla skončí za %n den.","Platnost hesla skončí za %n dny.","Platnost hesla skončí za %n dnů.","Platnost hesla skončí za %n dny."], "LDAP/AD integration" : "Napojení na LDAP/AD", - "_%s group found_::_%s groups found_" : ["nalezena %s skupina","nalezeny %s skupiny","nalezeno %s skupin","nalezeny %s skupiny"], - "_%s user found_::_%s users found_" : ["nalezen %s uživatel","nalezeni %s uživatelé","nalezeno %s uživatelů","nalezeni %s uživatelé"], + "_%n group found_::_%n groups found_" : ["nalezena %n skupina","nalezeny %n skupiny","nalezeno %n skupin","nalezeny %n skupiny"], + "> 1000 groups found" : "nalezeno více než 1 000 skupin", + "> 1000 users found" : "nalezeno více než 1 000 uživatelů", + "_%n user found_::_%n users found_" : ["nalezen %n uživatel","nalezení %n uživatelé","nalezeno %n uživatelů","nalezeni %n uživatelé"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nedaří se zjistit atribut pro zobrazení jména uživatele. Upřesněte ho sami v rozšířeném nastavení LDAP.", "Could not find the desired feature" : "Nelze nalézt požadovanou vlastnost", "Invalid Host" : "Neplatný hostitel", diff --git a/apps/user_ldap/l10n/da.js b/apps/user_ldap/l10n/da.js index f75fefebc87..0f8f85fc996 100644 --- a/apps/user_ldap/l10n/da.js +++ b/apps/user_ldap/l10n/da.js @@ -56,8 +56,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Dit password udløber i morgen.", "Your password will expire today." : "Dit password udløber i dag.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Dit password udløber om en dag.","Dit password udløber om %n dage."], - "_%s group found_::_%s groups found_" : ["Der blev fundet %s gruppe","Der blev fundet %s grupper"], - "_%s user found_::_%s users found_" : ["Der blev fundet %s bruger","Der blev fundet %s brugere"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke registrere navneattributten for visning af bruger. Angiv den venligst selv i de avancerede LDAP-indstillinger.", "Could not find the desired feature" : "Fandt ikke den ønskede funktion", "Invalid Host" : "Ugyldig vært", diff --git a/apps/user_ldap/l10n/da.json b/apps/user_ldap/l10n/da.json index cbb79808e08..f6bacc8dc27 100644 --- a/apps/user_ldap/l10n/da.json +++ b/apps/user_ldap/l10n/da.json @@ -54,8 +54,6 @@ "Your password will expire tomorrow." : "Dit password udløber i morgen.", "Your password will expire today." : "Dit password udløber i dag.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Dit password udløber om en dag.","Dit password udløber om %n dage."], - "_%s group found_::_%s groups found_" : ["Der blev fundet %s gruppe","Der blev fundet %s grupper"], - "_%s user found_::_%s users found_" : ["Der blev fundet %s bruger","Der blev fundet %s brugere"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke registrere navneattributten for visning af bruger. Angiv den venligst selv i de avancerede LDAP-indstillinger.", "Could not find the desired feature" : "Fandt ikke den ønskede funktion", "Invalid Host" : "Ugyldig vært", diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js index f09242ac712..0da31c01c45 100644 --- a/apps/user_ldap/l10n/de.js +++ b/apps/user_ldap/l10n/de.js @@ -6,7 +6,7 @@ OC.L10N.register( "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ", "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen. ", - "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest Du in den Logdateien.", + "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest du in den Logdateien.", "No action specified" : "Keine Aktion angegeben", "No configuration specified" : "Keine Konfiguration angegeben", "No data specified" : "Keine Daten angegeben", @@ -33,20 +33,20 @@ OC.L10N.register( "No object found in the given Base DN. Please revise." : "Keine Objekte in der Base-DN gefunden, bitte überprüfen.", "More than 1,000 directory entries available." : "Mehr als 1.000 Einträge stehen zur Verfügung.", "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} Eintrag in der angegebenen Base DN verfügbar","{objectsFound} Einträge in der angegebenen Base DN verfügbar"], - "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ein Fehler ist aufgetreten. Bitte die Base DN sowie die Verbindungs- und Anmeldeeinstellungen überprüfen.", - "Do you really want to delete the current Server Configuration?" : "Möchtest Du die aktuelle Serverkonfiguration wirklich löschen?", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Es ist ein Fehler aufgetreten. Bitte überprüfe die Base DN sowie die Verbindungs- und Anmeldeeinstellungen.", + "Do you really want to delete the current Server Configuration?" : "Möchtest du die aktuelle Serverkonfiguration wirklich löschen?", "Confirm Deletion" : "Löschen bestätigen", "Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!", "Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous Bind ist nicht erlaubt. Bitte eine Benutzer-DN und ein Passwort angeben.", "LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymes binden ist scheinbar nicht erlaubt.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stelle sicher, dass die Datenbank in Betrieb ist. Bitte lade vor dem Fortfahren neu.", - "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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Soll wirklich derModus gewechselt werden?", + "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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Soll wirklich derModus gewechselt werden?", "Mode switch" : "Modus wechseln", "Select attributes" : "Attribute auswählen", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe deine Anmelde-Attribute und deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>", "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.", - "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, Deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.", "An unspecified error occurred. Please check log and settings." : "Es ist ein nicht näher spezifizierter Fehler aufgetreten. Bitte prüfe die Logdatei und Einstellungen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z. B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten. Bitte Host, Port und Anmeldeinformationen überprüfen.", @@ -60,8 +60,6 @@ OC.L10N.register( "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"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es selbst in den erweiterten LDAP-Einstellungen an.", "Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden", "Invalid Host" : "Ungültiger Host", @@ -94,7 +92,7 @@ OC.L10N.register( "Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren", "Delete the current configuration" : "Aktuelle Konfiguration löschen", "Host" : "Host", - "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kannst das Protokoll auslassen, es sei denn, Du benötigst SSL. In diesem Fall mit ldaps:// beginnen.", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kannst das Protokoll auslassen, es sei denn, du benötigst SSL. In diesem Fall mit ldaps:// beginnen.", "Port" : "Port", "Detect Port" : "Port ermitteln", "User DN" : "Benutzer-DN", @@ -109,18 +107,18 @@ OC.L10N.register( "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.", "Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)", "Listing and searching for users is constrained by these criteria:" : "Auflistung und Suche nach Nutzern ist eingeschränkt durch folgende Kriterien:", - "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn Du nicht sicher bist, welche Objektklasse Du wählen sollst, frage bitte Deinen Verzeichnis-Administrator.", + "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn du nicht sicher bist, welche Objektklasse du wählen sollst, frage bitte deinen Verzeichnis-Administrator.", "The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.", "Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen", "Saving" : "Speichern", "Back" : "Zurück", "Continue" : "Fortsetzen", - "Please renew your password." : "Bitte erneuere Dein Passwort", + "Please renew your password." : "Bitte erneuere dein Passwort", "An internal error occurred." : "Es ist ein interner Fehler aufgetreten.", "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere den Administrator.", "Current password" : "Aktuelles Passwort", "New password" : "Neues Passwort", - "Renew password" : "Bitte erneuere Dein Passwort", + "Renew password" : "Bitte erneuere dein Passwort", "Wrong password." : "Falsches Passwort.", "Cancel" : "Abbrechen", "Server" : "Server", @@ -129,7 +127,7 @@ OC.L10N.register( "Groups" : "Gruppen", "Expert" : "Experte", "Advanced" : "Fortgeschritten", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktiere Deinen Systemadministrator und bitte ihn um die Installation des Moduls.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktiere deinen Systemadministrator und bitte ihn um die Installation des Moduls.", "Connection Settings" : "Verbindungseinstellungen", "Configuration Active" : "Konfiguration aktiv", "When unchecked, this configuration will be skipped." : "Konfiguration wird übersprungen, wenn nicht angehakt.", @@ -139,7 +137,7 @@ OC.L10N.register( "Disable Main Server" : "Hauptserver deaktivieren", "Only connect to the replica server." : "Nur zum Replikat-Server verbinden.", "Turn off SSL certificate validation." : "Schalte die SSL-Zertifikatsprüfung aus.", - "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nur für Testzwecke geeignet, sollte Standardmäßig nicht verwendet werden. Falls die Verbindung nur mit dieser Option funktioniert, das SSL-Zertifikat des LDAP-Servers in Deinen %s Server importieren.", + "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nur für Testzwecke geeignet, sollte Standardmäßig nicht verwendet werden. Falls die Verbindung nur mit dieser Option funktioniert, das SSL-Zertifikat des LDAP-Servers in deinen %s Server importieren.", "Cache Time-To-Live" : "Speichere Time-To-Live zwischen", "in seconds. A change empties the cache." : "in Sekunden. Eine Änderung leert den Cache.", "Directory Settings" : "Ordnereinstellungen", diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json index 6b1d71430cb..d503328611e 100644 --- a/apps/user_ldap/l10n/de.json +++ b/apps/user_ldap/l10n/de.json @@ -4,7 +4,7 @@ "Invalid configuration: Anonymous binding is not allowed." : "Die Konfiguration ist ungültig: anonymes Binden ist nicht erlaubt. ", "Valid configuration, connection established!" : "Gültige Konfiguration, Verbindung hergestellt!", "Valid configuration, but binding failed. Please check the server settings and credentials." : "Die Konfiguration ist gültig, aber der LDAP-Bind ist fehlgeschlagen. Bitte überprüfe die Servereinstellungen und Anmeldeinformationen. ", - "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest Du in den Logdateien.", + "Invalid configuration. Please have a look at the logs for further details." : "Die Konfiguration ist ungültig. Weitere Einzelheiten findest du in den Logdateien.", "No action specified" : "Keine Aktion angegeben", "No configuration specified" : "Keine Konfiguration angegeben", "No data specified" : "Keine Daten angegeben", @@ -31,20 +31,20 @@ "No object found in the given Base DN. Please revise." : "Keine Objekte in der Base-DN gefunden, bitte überprüfen.", "More than 1,000 directory entries available." : "Mehr als 1.000 Einträge stehen zur Verfügung.", "_{objectsFound} entry available within the provided Base DN_::_{objectsFound} entries available within the provided Base DN_" : ["{objectsFound} Eintrag in der angegebenen Base DN verfügbar","{objectsFound} Einträge in der angegebenen Base DN verfügbar"], - "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Ein Fehler ist aufgetreten. Bitte die Base DN sowie die Verbindungs- und Anmeldeeinstellungen überprüfen.", - "Do you really want to delete the current Server Configuration?" : "Möchtest Du die aktuelle Serverkonfiguration wirklich löschen?", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Es ist ein Fehler aufgetreten. Bitte überprüfe die Base DN sowie die Verbindungs- und Anmeldeeinstellungen.", + "Do you really want to delete the current Server Configuration?" : "Möchtest du die aktuelle Serverkonfiguration wirklich löschen?", "Confirm Deletion" : "Löschen bestätigen", "Mappings cleared successfully!" : "Zuordnungen erfolgreich gelöscht!", "Error while clearing the mappings." : "Fehler beim Löschen der Zuordnungen.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "Anonymous Bind ist nicht erlaubt. Bitte eine Benutzer-DN und ein Passwort angeben.", "LDAP Operations error. Anonymous bind might not be allowed." : "Fehler in den LDAP-Operationen. Anonymes binden ist scheinbar nicht erlaubt.", "Saving failed. Please make sure the database is in Operation. Reload before continuing." : "Speichern fehlgeschlagen. Bitte stelle sicher, dass die Datenbank in Betrieb ist. Bitte lade vor dem Fortfahren neu.", - "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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von Deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Soll wirklich derModus gewechselt werden?", + "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?" : "Das Umschalten des Modus ermöglicht automatische LDAP-Abfragen. Abhängig von deiner LDAP-Größe können diese einige Zeit in Anspruch nehmen. Soll wirklich derModus gewechselt werden?", "Mode switch" : "Modus wechseln", "Select attributes" : "Attribute auswählen", - "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe Deine Anmelde-Attribute und Deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>", + "User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): <br/>" : "Benutzer nicht gefunden. Bitte überprüfe deine Anmelde-Attribute und deinen Benutzernamen. Gültige Filter (zum Kopieren und Einfügen bei der Überprüfung auf der Kommandozeile): <br/>", "User found and settings verified." : "Benutzer gefunden und Einstellungen überprüft.", - "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, Deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.", + "Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in." : "Erwäge es, deine Suche einzugrenzen, da sie viele Benutzer umfaßte. Nur der erste wird sich anmelden können.", "An unspecified error occurred. Please check log and settings." : "Es ist ein nicht näher spezifizierter Fehler aufgetreten. Bitte prüfe die Logdatei und Einstellungen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z. B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP/AD occurred. Please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten. Bitte Host, Port und Anmeldeinformationen überprüfen.", @@ -58,8 +58,6 @@ "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"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte gib es selbst in den erweiterten LDAP-Einstellungen an.", "Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden", "Invalid Host" : "Ungültiger Host", @@ -92,7 +90,7 @@ "Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren", "Delete the current configuration" : "Aktuelle Konfiguration löschen", "Host" : "Host", - "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kannst das Protokoll auslassen, es sei denn, Du benötigst SSL. In diesem Fall mit ldaps:// beginnen.", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kannst das Protokoll auslassen, es sei denn, du benötigst SSL. In diesem Fall mit ldaps:// beginnen.", "Port" : "Port", "Detect Port" : "Port ermitteln", "User DN" : "Benutzer-DN", @@ -107,18 +105,18 @@ "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "Verhindert automatische LDAP-Anfragen. Besser geeignet für größere Installationen, benötigt aber erweiterte LDAP-Kenntnisse.", "Manually enter LDAP filters (recommended for large directories)" : "LDAP-Filter manuell eingeben (empfohlen für große Verzeichnisse)", "Listing and searching for users is constrained by these criteria:" : "Auflistung und Suche nach Nutzern ist eingeschränkt durch folgende Kriterien:", - "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn Du nicht sicher bist, welche Objektklasse Du wählen sollst, frage bitte Deinen Verzeichnis-Administrator.", + "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Die häufigsten Objektklassen für Benutzer sind organizationalPerson, person, user und inetOrgPerson. Wenn du nicht sicher bist, welche Objektklasse du wählen sollst, frage bitte deinen Verzeichnis-Administrator.", "The filter specifies which LDAP users shall have access to the %s instance." : "Der Filter gibt an, welche LDAP-Benutzer Zugriff auf die %s-Instanz haben sollen.", "Verify settings and count users" : "Einstellungen überprüfen und Benutzer zählen", "Saving" : "Speichern", "Back" : "Zurück", "Continue" : "Fortsetzen", - "Please renew your password." : "Bitte erneuere Dein Passwort", + "Please renew your password." : "Bitte erneuere dein Passwort", "An internal error occurred." : "Es ist ein interner Fehler aufgetreten.", "Please try again or contact your administrator." : "Bitte versuche es noch einmal oder kontaktiere den Administrator.", "Current password" : "Aktuelles Passwort", "New password" : "Neues Passwort", - "Renew password" : "Bitte erneuere Dein Passwort", + "Renew password" : "Bitte erneuere dein Passwort", "Wrong password." : "Falsches Passwort.", "Cancel" : "Abbrechen", "Server" : "Server", @@ -127,7 +125,7 @@ "Groups" : "Gruppen", "Expert" : "Experte", "Advanced" : "Fortgeschritten", - "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktiere Deinen Systemadministrator und bitte ihn um die Installation des Moduls.", + "<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." : "<b>Warnung:</b> Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitte kontaktiere deinen Systemadministrator und bitte ihn um die Installation des Moduls.", "Connection Settings" : "Verbindungseinstellungen", "Configuration Active" : "Konfiguration aktiv", "When unchecked, this configuration will be skipped." : "Konfiguration wird übersprungen, wenn nicht angehakt.", @@ -137,7 +135,7 @@ "Disable Main Server" : "Hauptserver deaktivieren", "Only connect to the replica server." : "Nur zum Replikat-Server verbinden.", "Turn off SSL certificate validation." : "Schalte die SSL-Zertifikatsprüfung aus.", - "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nur für Testzwecke geeignet, sollte Standardmäßig nicht verwendet werden. Falls die Verbindung nur mit dieser Option funktioniert, das SSL-Zertifikat des LDAP-Servers in Deinen %s Server importieren.", + "Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your %s server." : "Nur für Testzwecke geeignet, sollte Standardmäßig nicht verwendet werden. Falls die Verbindung nur mit dieser Option funktioniert, das SSL-Zertifikat des LDAP-Servers in deinen %s Server importieren.", "Cache Time-To-Live" : "Speichere Time-To-Live zwischen", "in seconds. A change empties the cache." : "in Sekunden. Eine Änderung leert den Cache.", "Directory Settings" : "Ordnereinstellungen", diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js index 46bbbc197d5..85cfb957044 100644 --- a/apps/user_ldap/l10n/de_DE.js +++ b/apps/user_ldap/l10n/de_DE.js @@ -60,8 +60,10 @@ OC.L10N.register( "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 Tag 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"], + "_%n group found_::_%n groups found_" : ["%n Gruppe gefunden","%n Gruppen gefunden"], + "> 1000 groups found" : "Mehr als 1000 Gruppen gefunden", + "> 1000 users found" : "Mehr als 1000 Benutzer gefunden", + "_%n user found_::_%n users found_" : ["%n Benutzer gefunden","%n Benugtzer gefunden"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es selbst in den erweiterten LDAP-Einstellungen an.", "Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden", "Invalid Host" : "Ungültiger Host", diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json index 2d3591ccf1f..6461a70d68b 100644 --- a/apps/user_ldap/l10n/de_DE.json +++ b/apps/user_ldap/l10n/de_DE.json @@ -58,8 +58,10 @@ "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 Tag 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"], + "_%n group found_::_%n groups found_" : ["%n Gruppe gefunden","%n Gruppen gefunden"], + "> 1000 groups found" : "Mehr als 1000 Gruppen gefunden", + "> 1000 users found" : "Mehr als 1000 Benutzer gefunden", + "_%n user found_::_%n users found_" : ["%n Benutzer gefunden","%n Benugtzer gefunden"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Das Anzeigename-Attribut des Benutzers konnte nicht gefunden werden. Bitte geben Sie es selbst in den erweiterten LDAP-Einstellungen an.", "Could not find the desired feature" : "Die gewünschte Funktion konnte nicht gefunden werden", "Invalid Host" : "Ungültiger Host", diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js index 3995cb5f500..b8373964041 100644 --- a/apps/user_ldap/l10n/el.js +++ b/apps/user_ldap/l10n/el.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "Το συνθηματικό σας λήγει σήμερα.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."], "LDAP/AD integration" : "LDAP/AD ενσωμάτωση ", - "_%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", "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητού χαρακτηριστικού", "Invalid Host" : "Άκυρος εξυπηρετητής", diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json index cd40904a2d4..d31d5ce0542 100644 --- a/apps/user_ldap/l10n/el.json +++ b/apps/user_ldap/l10n/el.json @@ -58,8 +58,6 @@ "Your password will expire today." : "Το συνθηματικό σας λήγει σήμερα.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."], "LDAP/AD integration" : "LDAP/AD ενσωμάτωση ", - "_%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", "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητού χαρακτηριστικού", "Invalid Host" : "Άκυρος εξυπηρετητής", diff --git a/apps/user_ldap/l10n/en_GB.js b/apps/user_ldap/l10n/en_GB.js index 7bc14c2cc27..cb27ab1b65b 100644 --- a/apps/user_ldap/l10n/en_GB.js +++ b/apps/user_ldap/l10n/en_GB.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Your password will expire tomorrow.", "Your password will expire today." : "Your password will expire today.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Your password will expire within %n day.","Your password will expire within %n days."], - "_%s group found_::_%s groups found_" : ["%s group found","%s groups found"], - "_%s user found_::_%s users found_" : ["%s user found","%s users found"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings.", "Could not find the desired feature" : "Could not find the desired feature", "Invalid Host" : "Invalid Host", diff --git a/apps/user_ldap/l10n/en_GB.json b/apps/user_ldap/l10n/en_GB.json index fde5941298b..7c1861d435b 100644 --- a/apps/user_ldap/l10n/en_GB.json +++ b/apps/user_ldap/l10n/en_GB.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Your password will expire tomorrow.", "Your password will expire today." : "Your password will expire today.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Your password will expire within %n day.","Your password will expire within %n days."], - "_%s group found_::_%s groups found_" : ["%s group found","%s groups found"], - "_%s user found_::_%s users found_" : ["%s user found","%s users found"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings.", "Could not find the desired feature" : "Could not find the desired feature", "Invalid Host" : "Invalid Host", diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js index 81dd2c7de80..be62c0e646a 100644 --- a/apps/user_ldap/l10n/es.js +++ b/apps/user_ldap/l10n/es.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "Tu contraseña caducará hoy.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Tu contraseña caducará dentro de %n día.","Tu contraseña caducará dentro de %n días.","Tu contraseña caducará dentro de %n días."], "LDAP/AD integration" : "Integración LDAP/AD", - "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados","Usuarios %s encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No se ha podido detectar el atributo del nombre ", "Could not find the desired feature" : "No se puede encontrar la función deseada.", "Invalid Host" : "Host no válido", diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json index fa81bcec927..5714162cc28 100644 --- a/apps/user_ldap/l10n/es.json +++ b/apps/user_ldap/l10n/es.json @@ -58,8 +58,6 @@ "Your password will expire today." : "Tu contraseña caducará hoy.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Tu contraseña caducará dentro de %n día.","Tu contraseña caducará dentro de %n días.","Tu contraseña caducará dentro de %n días."], "LDAP/AD integration" : "Integración LDAP/AD", - "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","Usuarios %s encontrados","Usuarios %s encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No se ha podido detectar el atributo del nombre ", "Could not find the desired feature" : "No se puede encontrar la función deseada.", "Invalid Host" : "Host no válido", diff --git a/apps/user_ldap/l10n/es_419.js b/apps/user_ldap/l10n/es_419.js index d79381dea79..a19dea027c1 100644 --- a/apps/user_ldap/l10n/es_419.js +++ b/apps/user_ldap/l10n/es_419.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_419.json b/apps/user_ldap/l10n/es_419.json index 0f73787fa14..179129f758b 100644 --- a/apps/user_ldap/l10n/es_419.json +++ b/apps/user_ldap/l10n/es_419.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_AR.js b/apps/user_ldap/l10n/es_AR.js index 0317ee5b29e..c1d2c357888 100644 --- a/apps/user_ldap/l10n/es_AR.js +++ b/apps/user_ldap/l10n/es_AR.js @@ -47,8 +47,6 @@ OC.L10N.register( "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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", "LDAP user and group backend" : "Backend de LDAP para usuario y grupo", diff --git a/apps/user_ldap/l10n/es_AR.json b/apps/user_ldap/l10n/es_AR.json index b0f6f8ea97c..52801d6baa2 100644 --- a/apps/user_ldap/l10n/es_AR.json +++ b/apps/user_ldap/l10n/es_AR.json @@ -45,8 +45,6 @@ "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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", "LDAP user and group backend" : "Backend de LDAP para usuario y grupo", diff --git a/apps/user_ldap/l10n/es_CL.js b/apps/user_ldap/l10n/es_CL.js index 44acdf9e23f..4145049c1db 100644 --- a/apps/user_ldap/l10n/es_CL.js +++ b/apps/user_ldap/l10n/es_CL.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_CL.json b/apps/user_ldap/l10n/es_CL.json index c45e8120c51..6c3a8ce3d41 100644 --- a/apps/user_ldap/l10n/es_CL.json +++ b/apps/user_ldap/l10n/es_CL.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_CO.js b/apps/user_ldap/l10n/es_CO.js index 44acdf9e23f..4145049c1db 100644 --- a/apps/user_ldap/l10n/es_CO.js +++ b/apps/user_ldap/l10n/es_CO.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_CO.json b/apps/user_ldap/l10n/es_CO.json index c45e8120c51..6c3a8ce3d41 100644 --- a/apps/user_ldap/l10n/es_CO.json +++ b/apps/user_ldap/l10n/es_CO.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_CR.js b/apps/user_ldap/l10n/es_CR.js index 44acdf9e23f..4145049c1db 100644 --- a/apps/user_ldap/l10n/es_CR.js +++ b/apps/user_ldap/l10n/es_CR.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_CR.json b/apps/user_ldap/l10n/es_CR.json index c45e8120c51..6c3a8ce3d41 100644 --- a/apps/user_ldap/l10n/es_CR.json +++ b/apps/user_ldap/l10n/es_CR.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_DO.js b/apps/user_ldap/l10n/es_DO.js index 44acdf9e23f..4145049c1db 100644 --- a/apps/user_ldap/l10n/es_DO.js +++ b/apps/user_ldap/l10n/es_DO.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_DO.json b/apps/user_ldap/l10n/es_DO.json index c45e8120c51..6c3a8ce3d41 100644 --- a/apps/user_ldap/l10n/es_DO.json +++ b/apps/user_ldap/l10n/es_DO.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_EC.js b/apps/user_ldap/l10n/es_EC.js index 44acdf9e23f..4145049c1db 100644 --- a/apps/user_ldap/l10n/es_EC.js +++ b/apps/user_ldap/l10n/es_EC.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_EC.json b/apps/user_ldap/l10n/es_EC.json index c45e8120c51..6c3a8ce3d41 100644 --- a/apps/user_ldap/l10n/es_EC.json +++ b/apps/user_ldap/l10n/es_EC.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_GT.js b/apps/user_ldap/l10n/es_GT.js index 44acdf9e23f..4145049c1db 100644 --- a/apps/user_ldap/l10n/es_GT.js +++ b/apps/user_ldap/l10n/es_GT.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_GT.json b/apps/user_ldap/l10n/es_GT.json index c45e8120c51..6c3a8ce3d41 100644 --- a/apps/user_ldap/l10n/es_GT.json +++ b/apps/user_ldap/l10n/es_GT.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_HN.js b/apps/user_ldap/l10n/es_HN.js index 4d9fbe0a388..fceabc9e13c 100644 --- a/apps/user_ldap/l10n/es_HN.js +++ b/apps/user_ldap/l10n/es_HN.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_HN.json b/apps/user_ldap/l10n/es_HN.json index 742a2b8f655..1f3321d4528 100644 --- a/apps/user_ldap/l10n/es_HN.json +++ b/apps/user_ldap/l10n/es_HN.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_MX.js b/apps/user_ldap/l10n/es_MX.js index 8f0da4c8e9b..f85ea763f86 100644 --- a/apps/user_ldap/l10n/es_MX.js +++ b/apps/user_ldap/l10n/es_MX.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_MX.json b/apps/user_ldap/l10n/es_MX.json index 59be3579f97..8704288134a 100644 --- a/apps/user_ldap/l10n/es_MX.json +++ b/apps/user_ldap/l10n/es_MX.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_NI.js b/apps/user_ldap/l10n/es_NI.js index 4d9fbe0a388..fceabc9e13c 100644 --- a/apps/user_ldap/l10n/es_NI.js +++ b/apps/user_ldap/l10n/es_NI.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_NI.json b/apps/user_ldap/l10n/es_NI.json index 742a2b8f655..1f3321d4528 100644 --- a/apps/user_ldap/l10n/es_NI.json +++ b/apps/user_ldap/l10n/es_NI.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_PA.js b/apps/user_ldap/l10n/es_PA.js index 4d9fbe0a388..fceabc9e13c 100644 --- a/apps/user_ldap/l10n/es_PA.js +++ b/apps/user_ldap/l10n/es_PA.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_PA.json b/apps/user_ldap/l10n/es_PA.json index 742a2b8f655..1f3321d4528 100644 --- a/apps/user_ldap/l10n/es_PA.json +++ b/apps/user_ldap/l10n/es_PA.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_PE.js b/apps/user_ldap/l10n/es_PE.js index 4d9fbe0a388..fceabc9e13c 100644 --- a/apps/user_ldap/l10n/es_PE.js +++ b/apps/user_ldap/l10n/es_PE.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_PE.json b/apps/user_ldap/l10n/es_PE.json index 742a2b8f655..1f3321d4528 100644 --- a/apps/user_ldap/l10n/es_PE.json +++ b/apps/user_ldap/l10n/es_PE.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_PR.js b/apps/user_ldap/l10n/es_PR.js index 4d9fbe0a388..fceabc9e13c 100644 --- a/apps/user_ldap/l10n/es_PR.js +++ b/apps/user_ldap/l10n/es_PR.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_PR.json b/apps/user_ldap/l10n/es_PR.json index 742a2b8f655..1f3321d4528 100644 --- a/apps/user_ldap/l10n/es_PR.json +++ b/apps/user_ldap/l10n/es_PR.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_PY.js b/apps/user_ldap/l10n/es_PY.js index 4d9fbe0a388..fceabc9e13c 100644 --- a/apps/user_ldap/l10n/es_PY.js +++ b/apps/user_ldap/l10n/es_PY.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_PY.json b/apps/user_ldap/l10n/es_PY.json index 742a2b8f655..1f3321d4528 100644 --- a/apps/user_ldap/l10n/es_PY.json +++ b/apps/user_ldap/l10n/es_PY.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_SV.js b/apps/user_ldap/l10n/es_SV.js index c421c164a45..4145049c1db 100644 --- a/apps/user_ldap/l10n/es_SV.js +++ b/apps/user_ldap/l10n/es_SV.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", @@ -177,4 +175,4 @@ OC.L10N.register( "Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP", "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/user_ldap/l10n/es_SV.json b/apps/user_ldap/l10n/es_SV.json index a997a6c2a2d..6c3a8ce3d41 100644 --- a/apps/user_ldap/l10n/es_SV.json +++ b/apps/user_ldap/l10n/es_SV.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", @@ -174,5 +172,5 @@ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Los nombres de usuarios son usados para almacenar y asignar metadatos. Para poder identificar y reconocer usuarios con precisión, cada usuario LDAP tendrá un nombre de usuario interno. Esto requiere una correspondencia de nombre de usuario a usuario LDAP. El nombre de usuario creado tiene una correspondencia al UUID del usuario LDAP. Adicionalmente, también se manda a cache el DN para reducir las interacciones con LDAP, pero no se usa para identificación. Si el DN cambia, los cambios serán encontrados. El nombre de usuario interno se usa intensivamente. Limpiar las correspondencias dejará restos en muhcos logares. ¡Limpiar las correspondencias no es sensitivo a la configuración, afecta a todas las configuraciones LDAP! Nunca limpies las correspondencias en un ambiente de producción, solo hazlo en los ambientes de pruebas o experimentación.", "Clear Username-LDAP User Mapping" : "Borrar el mapeo de los Usuarios a los Usuarios-LDAP", "Clear Groupname-LDAP Group Mapping" : "Borrar el mapeo de los Nombres de grupo a los grupos-LDAP" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/es_UY.js b/apps/user_ldap/l10n/es_UY.js index 4d9fbe0a388..fceabc9e13c 100644 --- a/apps/user_ldap/l10n/es_UY.js +++ b/apps/user_ldap/l10n/es_UY.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/es_UY.json b/apps/user_ldap/l10n/es_UY.json index 742a2b8f655..1f3321d4528 100644 --- a/apps/user_ldap/l10n/es_UY.json +++ b/apps/user_ldap/l10n/es_UY.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Tu contraseña expirará mañana.", "Your password will expire today." : "Tu 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. ","La contraseña expirará dentro de %n días. "], - "_%s group found_::_%s groups found_" : ["Grupo %s encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["Usuario %s encontrado","%s usuarios encontrados","%s usuarios encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No fue posible detectar el atributo del nombre a desplegar del usuario. Por favor especifícalo tú mismo en las configuraciones avanzadas de LDAP. ", "Could not find the desired feature" : "No fue posible encontrar la función deseada.", "Invalid Host" : "Servidor inválido", diff --git a/apps/user_ldap/l10n/et_EE.js b/apps/user_ldap/l10n/et_EE.js index b2ebad3e45a..ae16d37934e 100644 --- a/apps/user_ldap/l10n/et_EE.js +++ b/apps/user_ldap/l10n/et_EE.js @@ -43,8 +43,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Su parool aegub homme.", "Your password will expire today." : "Su parool aegub täna.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Su parool aegub %n päeva jooksul.","Su parool aegub %n päeva jooksul."], - "_%s group found_::_%s groups found_" : ["%s grupp leitud","%s gruppi leitud"], - "_%s user found_::_%s users found_" : ["%s kasutaja leitud","%s kasutajat leitud"], "Could not find the desired feature" : "Ei suuda leida soovitud funktsioonaalsust", "Invalid Host" : "Vigane server", "Test Configuration" : "Testi seadistust", diff --git a/apps/user_ldap/l10n/et_EE.json b/apps/user_ldap/l10n/et_EE.json index 40e28eeb671..c6923bef370 100644 --- a/apps/user_ldap/l10n/et_EE.json +++ b/apps/user_ldap/l10n/et_EE.json @@ -41,8 +41,6 @@ "Your password will expire tomorrow." : "Su parool aegub homme.", "Your password will expire today." : "Su parool aegub täna.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Su parool aegub %n päeva jooksul.","Su parool aegub %n päeva jooksul."], - "_%s group found_::_%s groups found_" : ["%s grupp leitud","%s gruppi leitud"], - "_%s user found_::_%s users found_" : ["%s kasutaja leitud","%s kasutajat leitud"], "Could not find the desired feature" : "Ei suuda leida soovitud funktsioonaalsust", "Invalid Host" : "Vigane server", "Test Configuration" : "Testi seadistust", diff --git a/apps/user_ldap/l10n/eu.js b/apps/user_ldap/l10n/eu.js index d30132558e0..d7839de8ab9 100644 --- a/apps/user_ldap/l10n/eu.js +++ b/apps/user_ldap/l10n/eu.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "Zure pasahitza gaur iraungiko da.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Zure pasahitza egun %nean iraungiko da.","Zure pasahitza %n egunetan iraungiko da."], "LDAP/AD integration" : "LDAP/AD integrazioa", - "_%s group found_::_%s groups found_" : ["Talde %s aurkitu da","%s talde aurkitu dira"], - "_%s user found_::_%s users found_" : ["Erabiltzaile %s aurkitu da","%s erabiltzaile aurkitu dira"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Ezin izan da antzeman erabiltzailearen bistaratze izenaren atributua. Mesedez, zehaztu zeure burua LDAP ezarpen aurreratuetan.", "Could not find the desired feature" : "Ezin izan da nahi zen ezaugarria aurkitu", "Invalid Host" : "Baliogabeko ostalaria", diff --git a/apps/user_ldap/l10n/eu.json b/apps/user_ldap/l10n/eu.json index 191c33c633c..af878fce83e 100644 --- a/apps/user_ldap/l10n/eu.json +++ b/apps/user_ldap/l10n/eu.json @@ -58,8 +58,6 @@ "Your password will expire today." : "Zure pasahitza gaur iraungiko da.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Zure pasahitza egun %nean iraungiko da.","Zure pasahitza %n egunetan iraungiko da."], "LDAP/AD integration" : "LDAP/AD integrazioa", - "_%s group found_::_%s groups found_" : ["Talde %s aurkitu da","%s talde aurkitu dira"], - "_%s user found_::_%s users found_" : ["Erabiltzaile %s aurkitu da","%s erabiltzaile aurkitu dira"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Ezin izan da antzeman erabiltzailearen bistaratze izenaren atributua. Mesedez, zehaztu zeure burua LDAP ezarpen aurreratuetan.", "Could not find the desired feature" : "Ezin izan da nahi zen ezaugarria aurkitu", "Invalid Host" : "Baliogabeko ostalaria", diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js index b5ba983e671..15b83120b8e 100644 --- a/apps/user_ldap/l10n/fr.js +++ b/apps/user_ldap/l10n/fr.js @@ -60,8 +60,6 @@ OC.L10N.register( "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.","Votre mot de passe va expirer dans %n jours."], "LDAP/AD integration" : "Integration LDAP/AD ", - "_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés","%s groupes trouvés"], - "_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés","%s utilisateurs trouvés"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres LDAP avancés.", "Could not find the desired feature" : "Impossible de trouver la fonction souhaitée", "Invalid Host" : "Hôte non valide", diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json index 8507d7993be..2ef8e201750 100644 --- a/apps/user_ldap/l10n/fr.json +++ b/apps/user_ldap/l10n/fr.json @@ -58,8 +58,6 @@ "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.","Votre mot de passe va expirer dans %n jours."], "LDAP/AD integration" : "Integration LDAP/AD ", - "_%s group found_::_%s groups found_" : ["%s groupe trouvé","%s groupes trouvés","%s groupes trouvés"], - "_%s user found_::_%s users found_" : ["%s utilisateur trouvé","%s utilisateurs trouvés","%s utilisateurs trouvés"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Impossible de détecter l'attribut contenant le nom d'affichage des utilisateurs. Veuillez l'indiquer vous-même dans les paramètres LDAP avancés.", "Could not find the desired feature" : "Impossible de trouver la fonction souhaitée", "Invalid Host" : "Hôte non valide", diff --git a/apps/user_ldap/l10n/gl.js b/apps/user_ldap/l10n/gl.js index f3be0913814..653c29b39b1 100644 --- a/apps/user_ldap/l10n/gl.js +++ b/apps/user_ldap/l10n/gl.js @@ -56,8 +56,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "O seu contrasinal caduca mañá.", "Your password will expire today." : "O seu contrasinal caducará hoxe.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["O seu contrasinal caducará en %n día.","O seu contrasinal caducará en %n días."], - "_%s group found_::_%s groups found_" : ["Atopouse %s grupo","Atopáronse %s grupos"], - "_%s user found_::_%s users found_" : ["Atopouse %s usuario","Atopáronse %s usuarios"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Non foi posíbel detectar o atributo nome de usuario que amosar. Especifíqueo vostede mesmo nos axustes avanzados de LDAP. ", "Could not find the desired feature" : "Non foi posíbel atopar a función desexada", "Invalid Host" : "Máquina incorrecta", diff --git a/apps/user_ldap/l10n/gl.json b/apps/user_ldap/l10n/gl.json index d2d7b57d2df..a08574f9d6a 100644 --- a/apps/user_ldap/l10n/gl.json +++ b/apps/user_ldap/l10n/gl.json @@ -54,8 +54,6 @@ "Your password will expire tomorrow." : "O seu contrasinal caduca mañá.", "Your password will expire today." : "O seu contrasinal caducará hoxe.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["O seu contrasinal caducará en %n día.","O seu contrasinal caducará en %n días."], - "_%s group found_::_%s groups found_" : ["Atopouse %s grupo","Atopáronse %s grupos"], - "_%s user found_::_%s users found_" : ["Atopouse %s usuario","Atopáronse %s usuarios"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Non foi posíbel detectar o atributo nome de usuario que amosar. Especifíqueo vostede mesmo nos axustes avanzados de LDAP. ", "Could not find the desired feature" : "Non foi posíbel atopar a función desexada", "Invalid Host" : "Máquina incorrecta", diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js index b0cd5ef74f0..f44e987ad27 100644 --- a/apps/user_ldap/l10n/he.js +++ b/apps/user_ldap/l10n/he.js @@ -53,8 +53,6 @@ OC.L10N.register( "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 ימים."], - "_%s group found_::_%s groups found_" : ["אותרה %s קבוצה","אותרו %s קבוצות","אותרו %s קבוצות","אותרו %s קבוצות"], - "_%s user found_::_%s users found_" : ["אותר %s משתמש","אותרו %s משתמשים","אותרו %s משתמשים","אותרו %s משתמשים"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "לא ניתן לאתר את מאפיין שם תצוגת המשתמש. נא לציין אותו בעצמך בהגדרות ה־LDAP המתקדמות.", "Could not find the desired feature" : "לא אותרה התכונה הרצויה", "Invalid Host" : "מארח לא חוקי", diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json index e5d2017a831..862382e345f 100644 --- a/apps/user_ldap/l10n/he.json +++ b/apps/user_ldap/l10n/he.json @@ -51,8 +51,6 @@ "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 ימים."], - "_%s group found_::_%s groups found_" : ["אותרה %s קבוצה","אותרו %s קבוצות","אותרו %s קבוצות","אותרו %s קבוצות"], - "_%s user found_::_%s users found_" : ["אותר %s משתמש","אותרו %s משתמשים","אותרו %s משתמשים","אותרו %s משתמשים"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "לא ניתן לאתר את מאפיין שם תצוגת המשתמש. נא לציין אותו בעצמך בהגדרות ה־LDAP המתקדמות.", "Could not find the desired feature" : "לא אותרה התכונה הרצויה", "Invalid Host" : "מארח לא חוקי", diff --git a/apps/user_ldap/l10n/hr.js b/apps/user_ldap/l10n/hr.js index 322856e7810..37d4d46c646 100644 --- a/apps/user_ldap/l10n/hr.js +++ b/apps/user_ldap/l10n/hr.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "Vaša zaporka istječe danas.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaša zaporka istječe za %n dan.","Vaša zaporka istječe za %n dana.","Vaša zaporka istječe za %n dana."], "LDAP/AD integration" : "Integracija LDAP-a/AD-a", - "_%s group found_::_%s groups found_" : ["Pronađena je %s grupa","Pronađeno je %s grupa","Pronađeno je %s grupa"], - "_%s user found_::_%s users found_" : ["Pronađen je %s korisnik","Pronađeno je %s korisnika","Pronađeno je %s korisnika"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Otkrivanje atributa imena za prikaz nije uspjelo. Navedite ga u naprednim postavkama LDAP-a.", "Could not find the desired feature" : "Željena značajka nije pronađena", "Invalid Host" : "Nevažeće računalo", diff --git a/apps/user_ldap/l10n/hr.json b/apps/user_ldap/l10n/hr.json index 82ca821574e..d05e1f81136 100644 --- a/apps/user_ldap/l10n/hr.json +++ b/apps/user_ldap/l10n/hr.json @@ -58,8 +58,6 @@ "Your password will expire today." : "Vaša zaporka istječe danas.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaša zaporka istječe za %n dan.","Vaša zaporka istječe za %n dana.","Vaša zaporka istječe za %n dana."], "LDAP/AD integration" : "Integracija LDAP-a/AD-a", - "_%s group found_::_%s groups found_" : ["Pronađena je %s grupa","Pronađeno je %s grupa","Pronađeno je %s grupa"], - "_%s user found_::_%s users found_" : ["Pronađen je %s korisnik","Pronađeno je %s korisnika","Pronađeno je %s korisnika"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Otkrivanje atributa imena za prikaz nije uspjelo. Navedite ga u naprednim postavkama LDAP-a.", "Could not find the desired feature" : "Željena značajka nije pronađena", "Invalid Host" : "Nevažeće računalo", diff --git a/apps/user_ldap/l10n/hu.js b/apps/user_ldap/l10n/hu.js index 564c1d09cd1..e3e7a5de3b3 100644 --- a/apps/user_ldap/l10n/hu.js +++ b/apps/user_ldap/l10n/hu.js @@ -60,8 +60,10 @@ OC.L10N.register( "Your password will expire today." : "A jelszava ma lejár.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["A jelszava %n nap múlva lejár.","A jelszava %n nap múlva lejár."], "LDAP/AD integration" : "LDAP/AD integráció", - "_%s group found_::_%s groups found_" : ["%s csoport található","%s csoport található"], - "_%s user found_::_%s users found_" : ["%s felhasználó található","%s felhasználó található"], + "_%n group found_::_%n groups found_" : ["%n csoport található","%n csoport található"], + "> 1000 groups found" : "> 1000 csoport található", + "> 1000 users found" : "> 1000 felhasználó találhatófound", + "_%n user found_::_%n users found_" : ["%n felhasználó található","%n felhasználó található"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nem lehet észlelni a felhasználó megjelenítendő név attribútumát. Adja meg kézzel a speciális LDAP beállításokban.", "Could not find the desired feature" : "A kívánt funkció nem található", "Invalid Host" : "Érvénytelen gépnév", diff --git a/apps/user_ldap/l10n/hu.json b/apps/user_ldap/l10n/hu.json index b7c9ec73d3e..676bbfdd414 100644 --- a/apps/user_ldap/l10n/hu.json +++ b/apps/user_ldap/l10n/hu.json @@ -58,8 +58,10 @@ "Your password will expire today." : "A jelszava ma lejár.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["A jelszava %n nap múlva lejár.","A jelszava %n nap múlva lejár."], "LDAP/AD integration" : "LDAP/AD integráció", - "_%s group found_::_%s groups found_" : ["%s csoport található","%s csoport található"], - "_%s user found_::_%s users found_" : ["%s felhasználó található","%s felhasználó található"], + "_%n group found_::_%n groups found_" : ["%n csoport található","%n csoport található"], + "> 1000 groups found" : "> 1000 csoport található", + "> 1000 users found" : "> 1000 felhasználó találhatófound", + "_%n user found_::_%n users found_" : ["%n felhasználó található","%n felhasználó található"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nem lehet észlelni a felhasználó megjelenítendő név attribútumát. Adja meg kézzel a speciális LDAP beállításokban.", "Could not find the desired feature" : "A kívánt funkció nem található", "Invalid Host" : "Érvénytelen gépnév", diff --git a/apps/user_ldap/l10n/id.js b/apps/user_ldap/l10n/id.js index 3ccadfeee68..705fd60bea9 100644 --- a/apps/user_ldap/l10n/id.js +++ b/apps/user_ldap/l10n/id.js @@ -56,8 +56,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Kata sandi Anda akan kedaluwarsa besok.", "Your password will expire today." : "Kata sandi Anda akan kedaluwarsa hari ini.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Kata sandi Anda akan kedaluwarsa dalam %n hari."], - "_%s group found_::_%s groups found_" : ["%s grup ditemukan"], - "_%s user found_::_%s users found_" : ["%s pengguna ditemukan"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Atribut nama yang akan ditampilkan tidak terdeteksi. Silahkan tentukan Anda sendiri pada pengaturan lanjutan LDAP.", "Could not find the desired feature" : "Tidak dapat menemukan fitur yang diinginkan", "Invalid Host" : "Host tidak sah", diff --git a/apps/user_ldap/l10n/id.json b/apps/user_ldap/l10n/id.json index 3e57becaec8..e2278af31e0 100644 --- a/apps/user_ldap/l10n/id.json +++ b/apps/user_ldap/l10n/id.json @@ -54,8 +54,6 @@ "Your password will expire tomorrow." : "Kata sandi Anda akan kedaluwarsa besok.", "Your password will expire today." : "Kata sandi Anda akan kedaluwarsa hari ini.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Kata sandi Anda akan kedaluwarsa dalam %n hari."], - "_%s group found_::_%s groups found_" : ["%s grup ditemukan"], - "_%s user found_::_%s users found_" : ["%s pengguna ditemukan"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Atribut nama yang akan ditampilkan tidak terdeteksi. Silahkan tentukan Anda sendiri pada pengaturan lanjutan LDAP.", "Could not find the desired feature" : "Tidak dapat menemukan fitur yang diinginkan", "Invalid Host" : "Host tidak sah", diff --git a/apps/user_ldap/l10n/it.js b/apps/user_ldap/l10n/it.js index fe9e10d44f0..1e3db957866 100644 --- a/apps/user_ldap/l10n/it.js +++ b/apps/user_ldap/l10n/it.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "La tua password scadrà oggi.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La tua password scadrà tra %n giorno.","La tua password scadrà oggi tra %n giorni.","La tua password scadrà oggi tra %n giorni."], "LDAP/AD integration" : "Integrazione LDAP/AD", - "_%s group found_::_%s groups found_" : ["%s gruppo trovato","%s gruppi trovati","%s gruppi trovati"], - "_%s user found_::_%s users found_" : ["%s utente trovato","%s utenti trovati","%s utenti trovati"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Impossibile rilevare l'attributo nome visualizzato dell'utente. Specificalo nelle impostazioni avanzate di LDAP.", "Could not find the desired feature" : "Impossibile trovare la funzionalità desiderata", "Invalid Host" : "Host non valido", diff --git a/apps/user_ldap/l10n/it.json b/apps/user_ldap/l10n/it.json index 1573ad1c417..393f0a51181 100644 --- a/apps/user_ldap/l10n/it.json +++ b/apps/user_ldap/l10n/it.json @@ -58,8 +58,6 @@ "Your password will expire today." : "La tua password scadrà oggi.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["La tua password scadrà tra %n giorno.","La tua password scadrà oggi tra %n giorni.","La tua password scadrà oggi tra %n giorni."], "LDAP/AD integration" : "Integrazione LDAP/AD", - "_%s group found_::_%s groups found_" : ["%s gruppo trovato","%s gruppi trovati","%s gruppi trovati"], - "_%s user found_::_%s users found_" : ["%s utente trovato","%s utenti trovati","%s utenti trovati"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Impossibile rilevare l'attributo nome visualizzato dell'utente. Specificalo nelle impostazioni avanzate di LDAP.", "Could not find the desired feature" : "Impossibile trovare la funzionalità desiderata", "Invalid Host" : "Host non valido", diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js index 59024d7253a..03a83d83a35 100644 --- a/apps/user_ldap/l10n/ja.js +++ b/apps/user_ldap/l10n/ja.js @@ -60,8 +60,6 @@ OC.L10N.register( "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." : "ユーザー表示名の属性を検出できませんでした。詳細設定で対応する属性を指定してください。", "Could not find the desired feature" : "望ましい機能は見つかりませんでした", "Invalid Host" : "無効なホスト", diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json index a2bc3982e49..bae170334bb 100644 --- a/apps/user_ldap/l10n/ja.json +++ b/apps/user_ldap/l10n/ja.json @@ -58,8 +58,6 @@ "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." : "ユーザー表示名の属性を検出できませんでした。詳細設定で対応する属性を指定してください。", "Could not find the desired feature" : "望ましい機能は見つかりませんでした", "Invalid Host" : "無効なホスト", diff --git a/apps/user_ldap/l10n/ka_GE.js b/apps/user_ldap/l10n/ka_GE.js index c75fc8af8fd..e011c19cc2a 100644 --- a/apps/user_ldap/l10n/ka_GE.js +++ b/apps/user_ldap/l10n/ka_GE.js @@ -54,8 +54,6 @@ OC.L10N.register( "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 დღეში."], - "_%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-ის პარამეტრებში თქვენით დააყენოთ ის.", "Could not find the desired feature" : "მოთხოვნილი ფუნქციონალის პოვნა ვერ მოხერხდა", "Invalid Host" : "არასწორი ჰოსტი", diff --git a/apps/user_ldap/l10n/ka_GE.json b/apps/user_ldap/l10n/ka_GE.json index 8e2a71712b1..f0042c13f7b 100644 --- a/apps/user_ldap/l10n/ka_GE.json +++ b/apps/user_ldap/l10n/ka_GE.json @@ -52,8 +52,6 @@ "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 დღეში."], - "_%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-ის პარამეტრებში თქვენით დააყენოთ ის.", "Could not find the desired feature" : "მოთხოვნილი ფუნქციონალის პოვნა ვერ მოხერხდა", "Invalid Host" : "არასწორი ჰოსტი", diff --git a/apps/user_ldap/l10n/ko.js b/apps/user_ldap/l10n/ko.js index 48bdfe448e8..9d76222b03a 100644 --- a/apps/user_ldap/l10n/ko.js +++ b/apps/user_ldap/l10n/ko.js @@ -60,8 +60,6 @@ OC.L10N.register( "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 설정에서 직접 지정하십시오.", "Could not find the desired feature" : "필요한 기능을 찾을 수 없음", "Invalid Host" : "잘못된 호스트", diff --git a/apps/user_ldap/l10n/ko.json b/apps/user_ldap/l10n/ko.json index 7ff55c03669..b380db2d0b5 100644 --- a/apps/user_ldap/l10n/ko.json +++ b/apps/user_ldap/l10n/ko.json @@ -58,8 +58,6 @@ "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 설정에서 직접 지정하십시오.", "Could not find the desired feature" : "필요한 기능을 찾을 수 없음", "Invalid Host" : "잘못된 호스트", diff --git a/apps/user_ldap/l10n/lt_LT.js b/apps/user_ldap/l10n/lt_LT.js index eba6f59c08d..c36eee6ee44 100644 --- a/apps/user_ldap/l10n/lt_LT.js +++ b/apps/user_ldap/l10n/lt_LT.js @@ -55,8 +55,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Jūsų slaptažodžio galiojimo laikas pasibaigs rytoj.", "Your password will expire today." : "Jūsų slaptažodžio galiojimo laikas baigiasi šiandien.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Jūsų slaptažodis nustos galioti po %n dienos.","Jūsų slaptažodis nustos galioti po %n dienų.","Jūsų slaptažodis nustos galioti po %n dienų.","Jūsų slaptažodis nustos galioti po %n dienos."], - "_%s group found_::_%s groups found_" : ["Rasta %s grupė","Rastos %s grupės","Rasta %s grupių","Rasta %s grupė"], - "_%s user found_::_%s users found_" : ["Rastas %s naudotojas","Rasti %s naudotojai","Rasta %s naudotojų","Rastas %s naudotojas"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nepavyko aptikti naudotojo rodomo vardo požymio. Nurodykite jį patys išplėstiniuose LDAP nustatymuose.", "Could not find the desired feature" : "Nepavyko rasti pageidaujamos ypatybės", "Invalid Host" : "Neteisingas serveris", diff --git a/apps/user_ldap/l10n/lt_LT.json b/apps/user_ldap/l10n/lt_LT.json index 5909c4290d9..bac1ea42a09 100644 --- a/apps/user_ldap/l10n/lt_LT.json +++ b/apps/user_ldap/l10n/lt_LT.json @@ -53,8 +53,6 @@ "Your password will expire tomorrow." : "Jūsų slaptažodžio galiojimo laikas pasibaigs rytoj.", "Your password will expire today." : "Jūsų slaptažodžio galiojimo laikas baigiasi šiandien.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Jūsų slaptažodis nustos galioti po %n dienos.","Jūsų slaptažodis nustos galioti po %n dienų.","Jūsų slaptažodis nustos galioti po %n dienų.","Jūsų slaptažodis nustos galioti po %n dienos."], - "_%s group found_::_%s groups found_" : ["Rasta %s grupė","Rastos %s grupės","Rasta %s grupių","Rasta %s grupė"], - "_%s user found_::_%s users found_" : ["Rastas %s naudotojas","Rasti %s naudotojai","Rasta %s naudotojų","Rastas %s naudotojas"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nepavyko aptikti naudotojo rodomo vardo požymio. Nurodykite jį patys išplėstiniuose LDAP nustatymuose.", "Could not find the desired feature" : "Nepavyko rasti pageidaujamos ypatybės", "Invalid Host" : "Neteisingas serveris", diff --git a/apps/user_ldap/l10n/lv.js b/apps/user_ldap/l10n/lv.js index 5d46d46961a..61eb1d75c98 100644 --- a/apps/user_ldap/l10n/lv.js +++ b/apps/user_ldap/l10n/lv.js @@ -35,8 +35,6 @@ OC.L10N.register( "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP operācijas kļūda. Anonīma sasaiste, iespējams, nav atļauta.", "Select attributes" : "Atlasīt atribūtus", "Password change rejected. Hint: " : "Paroles maiņas noraidīja. Padoms:", - "_%s group found_::_%s groups found_" : ["%s grupas atrastas","%s grupas atrastas","%s grupas atrastas"], - "_%s user found_::_%s users found_" : ["%s lietotāji atrasti","%s lietotāji atrasti","%s lietotāji atrasti"], "Invalid Host" : "Nederīgs resursdators", "Test Configuration" : "Testa konfigurācija", "Help" : "Palīdzība", diff --git a/apps/user_ldap/l10n/lv.json b/apps/user_ldap/l10n/lv.json index d0cf49fea50..be82e0717dc 100644 --- a/apps/user_ldap/l10n/lv.json +++ b/apps/user_ldap/l10n/lv.json @@ -33,8 +33,6 @@ "LDAP Operations error. Anonymous bind might not be allowed." : "LDAP operācijas kļūda. Anonīma sasaiste, iespējams, nav atļauta.", "Select attributes" : "Atlasīt atribūtus", "Password change rejected. Hint: " : "Paroles maiņas noraidīja. Padoms:", - "_%s group found_::_%s groups found_" : ["%s grupas atrastas","%s grupas atrastas","%s grupas atrastas"], - "_%s user found_::_%s users found_" : ["%s lietotāji atrasti","%s lietotāji atrasti","%s lietotāji atrasti"], "Invalid Host" : "Nederīgs resursdators", "Test Configuration" : "Testa konfigurācija", "Help" : "Palīdzība", diff --git a/apps/user_ldap/l10n/nb.js b/apps/user_ldap/l10n/nb.js index 1740effbf7d..01dec1979fd 100644 --- a/apps/user_ldap/l10n/nb.js +++ b/apps/user_ldap/l10n/nb.js @@ -56,8 +56,6 @@ OC.L10N.register( "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."], - "_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"], - "_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.", "Could not find the desired feature" : "Fant ikke den ønskede funksjonaliteten", "Invalid Host" : "Ugyldig server", diff --git a/apps/user_ldap/l10n/nb.json b/apps/user_ldap/l10n/nb.json index dbd5ca93f17..edd2c8c6a63 100644 --- a/apps/user_ldap/l10n/nb.json +++ b/apps/user_ldap/l10n/nb.json @@ -54,8 +54,6 @@ "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."], - "_%s group found_::_%s groups found_" : ["%s gruppe funnet","%s grupper funnet"], - "_%s user found_::_%s users found_" : ["%s bruker funnet","%s brukere funnet"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunne ikke påvise attributt for brukers visningsnavn. Du må selv spesifisere det i avanserte LDAP-innstillinger.", "Could not find the desired feature" : "Fant ikke den ønskede funksjonaliteten", "Invalid Host" : "Ugyldig server", diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js index 6db05e8bb33..c6586e099c9 100644 --- a/apps/user_ldap/l10n/nl.js +++ b/apps/user_ldap/l10n/nl.js @@ -60,8 +60,6 @@ OC.L10N.register( "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 vervalt over %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"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde LDAP instellingen.", "Could not find the desired feature" : "Kon de gewenste functie niet vinden", "Invalid Host" : "Ongeldige server", diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json index 1fc8c58781e..3b27f57ac32 100644 --- a/apps/user_ldap/l10n/nl.json +++ b/apps/user_ldap/l10n/nl.json @@ -58,8 +58,6 @@ "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 vervalt over %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"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kon het weergavenaam attribuut van de gebruiker niet vinden. Geef het zelf op in de geavanceerde LDAP instellingen.", "Could not find the desired feature" : "Kon de gewenste functie niet vinden", "Invalid Host" : "Ongeldige server", diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js index 3d722358256..52adb6848dd 100644 --- a/apps/user_ldap/l10n/pl.js +++ b/apps/user_ldap/l10n/pl.js @@ -60,8 +60,10 @@ OC.L10N.register( "Your password will expire today." : "Twoje hasło wygasa dzisiaj.", "_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"], + "_%n group found_::_%n groups found_" : ["Znaleziono %n grupę","Znaleziono %n grupy","Znaleziono %n grup","Znaleziono %n grup"], + "> 1000 groups found" : "> 1000 znalezionych grup", + "> 1000 users found" : "> 1000 znalezionych użytkowników", + "_%n user found_::_%n users found_" : ["Znaleziono %n użytkownika","Znaleziono %n użytkowników","Znaleziono %n użytkowników","Znaleziono %n użytkowników"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nie można wykryć atrybutu wyświetlania nazwy użytkownika.", "Could not find the desired feature" : "Nie można znaleźć żądanej funkcji", "Invalid Host" : "Nieprawidłowy host", diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json index b85ddf959cc..1a2de401f03 100644 --- a/apps/user_ldap/l10n/pl.json +++ b/apps/user_ldap/l10n/pl.json @@ -58,8 +58,10 @@ "Your password will expire today." : "Twoje hasło wygasa dzisiaj.", "_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"], + "_%n group found_::_%n groups found_" : ["Znaleziono %n grupę","Znaleziono %n grupy","Znaleziono %n grup","Znaleziono %n grup"], + "> 1000 groups found" : "> 1000 znalezionych grup", + "> 1000 users found" : "> 1000 znalezionych użytkowników", + "_%n user found_::_%n users found_" : ["Znaleziono %n użytkownika","Znaleziono %n użytkowników","Znaleziono %n użytkowników","Znaleziono %n użytkowników"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nie można wykryć atrybutu wyświetlania nazwy użytkownika.", "Could not find the desired feature" : "Nie można znaleźć żądanej funkcji", "Invalid Host" : "Nieprawidłowy host", diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js index a5af53f7c3f..af156e526f2 100644 --- a/apps/user_ldap/l10n/pt_BR.js +++ b/apps/user_ldap/l10n/pt_BR.js @@ -60,8 +60,6 @@ OC.L10N.register( "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.","Sua senha vai expirar dentro de%ndias."], "LDAP/AD integration" : "LDAP/AD integração", - "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["usuário %s encontrado","%s usuários encontrados","%s usuários encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.", "Could not find the desired feature" : "Não foi possível encontrar o recurso desejado", "Invalid Host" : "Host inválido", diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json index 059663be77f..128c6d9e653 100644 --- a/apps/user_ldap/l10n/pt_BR.json +++ b/apps/user_ldap/l10n/pt_BR.json @@ -58,8 +58,6 @@ "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.","Sua senha vai expirar dentro de%ndias."], "LDAP/AD integration" : "LDAP/AD integração", - "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["usuário %s encontrado","%s usuários encontrados","%s usuários encontrados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Não foi possível detectar o atributo do nome de exibição do usuário. Por favor, especifique-o você mesmo nas configurações LDAP avançadas.", "Could not find the desired feature" : "Não foi possível encontrar o recurso desejado", "Invalid Host" : "Host inválido", diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js index 4a331d58bfb..7a46dd47813 100644 --- a/apps/user_ldap/l10n/pt_PT.js +++ b/apps/user_ldap/l10n/pt_PT.js @@ -41,8 +41,6 @@ OC.L10N.register( "User found and settings verified." : "Utilizador encontrado e definições verificadas.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.", "Please provide a login name to test against" : "Por favor, indique um nome de sessão para testar", - "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["%s utilizador encontrado","%s utilizadores encontrados","%s utilizadores encontrados"], "Could not find the desired feature" : "Não se encontrou a função desejada", "Invalid Host" : "Anfitrião Inválido", "Test Configuration" : "Testar a configuração", diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json index f4077281022..bd8401b9a5a 100644 --- a/apps/user_ldap/l10n/pt_PT.json +++ b/apps/user_ldap/l10n/pt_PT.json @@ -39,8 +39,6 @@ "User found and settings verified." : "Utilizador encontrado e definições verificadas.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de procura é inválido, provavelmente devido a problemas de sintaxe. Verifique se existem números ímpares de parêntisis abertos e/ou fechados. Por favor reveja.", "Please provide a login name to test against" : "Por favor, indique um nome de sessão para testar", - "_%s group found_::_%s groups found_" : ["%s grupo encontrado","%s grupos encontrados","%s grupos encontrados"], - "_%s user found_::_%s users found_" : ["%s utilizador encontrado","%s utilizadores encontrados","%s utilizadores encontrados"], "Could not find the desired feature" : "Não se encontrou a função desejada", "Invalid Host" : "Anfitrião Inválido", "Test Configuration" : "Testar a configuração", diff --git a/apps/user_ldap/l10n/ro.js b/apps/user_ldap/l10n/ro.js index c9a7fa36ca2..47788d4b17b 100644 --- a/apps/user_ldap/l10n/ro.js +++ b/apps/user_ldap/l10n/ro.js @@ -36,8 +36,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Parola ta va expira mâine.", "Your password will expire today." : "Parola ta va expira astăzi.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Parola ta va expira în %n zi.","Parola ta va expira în %n zile.","Parola ta va expira în %n zile."], - "_%s group found_::_%s groups found_" : ["%s grup găsit.","%s grupuri găsite.","%s grupuri găsite."], - "_%s user found_::_%s users found_" : ["%s utilizator găsit.","%s utilizatori găsiți.","%s utilizatori găsiți."], "Could not find the desired feature" : "Nu s-a putut găsi funcționalitatea dorită.", "Invalid Host" : "Host invalid", "Test Configuration" : "Configurare test", diff --git a/apps/user_ldap/l10n/ro.json b/apps/user_ldap/l10n/ro.json index 304367ac2dd..f5fca02f43d 100644 --- a/apps/user_ldap/l10n/ro.json +++ b/apps/user_ldap/l10n/ro.json @@ -34,8 +34,6 @@ "Your password will expire tomorrow." : "Parola ta va expira mâine.", "Your password will expire today." : "Parola ta va expira astăzi.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Parola ta va expira în %n zi.","Parola ta va expira în %n zile.","Parola ta va expira în %n zile."], - "_%s group found_::_%s groups found_" : ["%s grup găsit.","%s grupuri găsite.","%s grupuri găsite."], - "_%s user found_::_%s users found_" : ["%s utilizator găsit.","%s utilizatori găsiți.","%s utilizatori găsiți."], "Could not find the desired feature" : "Nu s-a putut găsi funcționalitatea dorită.", "Invalid Host" : "Host invalid", "Test Configuration" : "Configurare test", diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js index ac0a4fc1134..c1cc7d3c1ae 100644 --- a/apps/user_ldap/l10n/ru.js +++ b/apps/user_ldap/l10n/ru.js @@ -60,8 +60,6 @@ OC.L10N.register( "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 пользователей найдено"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не удалось автоматически определить атрибут, содержащий отображаемое имя пользователя. Зайдите в расширенные настройки LDAP и укажите его вручную.", "Could not find the desired feature" : "Не удается найти требуемую функциональность", "Invalid Host" : "Недопустимый адрес сервера", diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json index f84ca91caa1..2dfb1917227 100644 --- a/apps/user_ldap/l10n/ru.json +++ b/apps/user_ldap/l10n/ru.json @@ -58,8 +58,6 @@ "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 пользователей найдено"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не удалось автоматически определить атрибут, содержащий отображаемое имя пользователя. Зайдите в расширенные настройки LDAP и укажите его вручную.", "Could not find the desired feature" : "Не удается найти требуемую функциональность", "Invalid Host" : "Недопустимый адрес сервера", diff --git a/apps/user_ldap/l10n/sc.js b/apps/user_ldap/l10n/sc.js index 1ee542957e2..928f3a6b0d2 100644 --- a/apps/user_ldap/l10n/sc.js +++ b/apps/user_ldap/l10n/sc.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "Sa crae tua at a iscadire oe.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Sa crae tua at a iscadire a intro de %n dies.","Sa crae tua at a iscadire a intro de %n dies."], "LDAP/AD integration" : "Integratziones LDAP/AP", - "_%s group found_::_%s groups found_" : ["%s grupos agatados","%s grupos agatados"], - "_%s user found_::_%s users found_" : ["%sutente agatadu","%s utentes agatados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No at fatu a rilevare s'atributu nùmene visualizadu dae s'utente. Ispetzìfica•ddu tue in is impostatziones avantzadas LDAP.", "Could not find the desired feature" : "No at fatu a agatare sa funtzione disigiada", "Invalid Host" : "Retzidore no bàlidu", diff --git a/apps/user_ldap/l10n/sc.json b/apps/user_ldap/l10n/sc.json index aa853747535..d13a8fd8a16 100644 --- a/apps/user_ldap/l10n/sc.json +++ b/apps/user_ldap/l10n/sc.json @@ -58,8 +58,6 @@ "Your password will expire today." : "Sa crae tua at a iscadire oe.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Sa crae tua at a iscadire a intro de %n dies.","Sa crae tua at a iscadire a intro de %n dies."], "LDAP/AD integration" : "Integratziones LDAP/AP", - "_%s group found_::_%s groups found_" : ["%s grupos agatados","%s grupos agatados"], - "_%s user found_::_%s users found_" : ["%sutente agatadu","%s utentes agatados"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "No at fatu a rilevare s'atributu nùmene visualizadu dae s'utente. Ispetzìfica•ddu tue in is impostatziones avantzadas LDAP.", "Could not find the desired feature" : "No at fatu a agatare sa funtzione disigiada", "Invalid Host" : "Retzidore no bàlidu", diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js index db140b7d85f..7e020dfe5e7 100644 --- a/apps/user_ldap/l10n/sk.js +++ b/apps/user_ldap/l10n/sk.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "Vaše heslo expiruje dnes.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní.","Vaše heslo expiruje o %n dní."], "LDAP/AD integration" : "Integrácia s LDAP/AD", - "_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín","%s nájdených skupín"], - "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov","%s nájdených používateľov"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nepodarilo sa zistiť atribút pre zobrazenie mena používateľa. Zadajte ho sami v rozšírených nastaveniach LDAP.", "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu", "Invalid Host" : "Neplatný hostiteľ", diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json index fd49f95e6da..abd385b26c7 100644 --- a/apps/user_ldap/l10n/sk.json +++ b/apps/user_ldap/l10n/sk.json @@ -58,8 +58,6 @@ "Your password will expire today." : "Vaše heslo expiruje dnes.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní.","Vaše heslo expiruje o %n dní."], "LDAP/AD integration" : "Integrácia s LDAP/AD", - "_%s group found_::_%s groups found_" : ["%s nájdená skupina","%s nájdené skupiny","%s nájdených skupín","%s nájdených skupín"], - "_%s user found_::_%s users found_" : ["%s nájdený používateľ","%s nájdení používatelia","%s nájdených používateľov","%s nájdených používateľov"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nepodarilo sa zistiť atribút pre zobrazenie mena používateľa. Zadajte ho sami v rozšírených nastaveniach LDAP.", "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu", "Invalid Host" : "Neplatný hostiteľ", diff --git a/apps/user_ldap/l10n/sl.js b/apps/user_ldap/l10n/sl.js index f0ce477ab1a..d6de343d97a 100644 --- a/apps/user_ldap/l10n/sl.js +++ b/apps/user_ldap/l10n/sl.js @@ -60,8 +60,6 @@ OC.L10N.register( "Your password will expire today." : "Geslo vam poteče danes!", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Geslo bo poteklo čez %n dan.","Geslo bo poteklo čez %n dneva","Geslo bo poteklo čez %n dni.","Geslo bo poteklo čez %n dni."], "LDAP/AD integration" : "Združevalnik za LDAP / AD", - "_%s group found_::_%s groups found_" : ["%s najdena skupina","%s najdeni skupini","%s najdene skupine","%s najdenih skupin"], - "_%s user found_::_%s users found_" : ["%s najden uporabnik","%s najdena uporabnika","%s najdeni uporabniki","%s najdenih uporabnikov"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Ni mogoče zaznati atributa prikaznega imena. Določiti ga je treba ročno med nastavitvami LDAP.", "Could not find the desired feature" : "Želene zmožnosti ni mogoče najti", "Invalid Host" : "Neveljaven gostitelj", diff --git a/apps/user_ldap/l10n/sl.json b/apps/user_ldap/l10n/sl.json index b7297f70588..79bcd106014 100644 --- a/apps/user_ldap/l10n/sl.json +++ b/apps/user_ldap/l10n/sl.json @@ -58,8 +58,6 @@ "Your password will expire today." : "Geslo vam poteče danes!", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Geslo bo poteklo čez %n dan.","Geslo bo poteklo čez %n dneva","Geslo bo poteklo čez %n dni.","Geslo bo poteklo čez %n dni."], "LDAP/AD integration" : "Združevalnik za LDAP / AD", - "_%s group found_::_%s groups found_" : ["%s najdena skupina","%s najdeni skupini","%s najdene skupine","%s najdenih skupin"], - "_%s user found_::_%s users found_" : ["%s najden uporabnik","%s najdena uporabnika","%s najdeni uporabniki","%s najdenih uporabnikov"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Ni mogoče zaznati atributa prikaznega imena. Določiti ga je treba ročno med nastavitvami LDAP.", "Could not find the desired feature" : "Želene zmožnosti ni mogoče najti", "Invalid Host" : "Neveljaven gostitelj", diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js index f5b6cbc78c8..ee433d876d2 100644 --- a/apps/user_ldap/l10n/sq.js +++ b/apps/user_ldap/l10n/sq.js @@ -54,8 +54,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Fjalëkalimi juaj do të skadojë nesër", "Your password will expire today." : "Fjalëkalimi juaj do të skadojë sot.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Fjalëkalimi juaj do të skadojë brenad %n ditëve","Fjalëkalimi juaj do të skadojë brenad %n ditëve"], - "_%s group found_::_%s groups found_" : ["U gjet %s grup","U gjetën %s grupe"], - "_%s user found_::_%s users found_" : ["U gjet %s përdorues","U gjetën %s përdorues"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nuk mund të zbulohej atributi i emrit të ekranit të përdoruesit. Ju lutemi specifikoni vetë në avancë parametrat e LDAP.", "Could not find the desired feature" : "S’u gjet dot veçoria e dëshiruar", "Invalid Host" : "Strehë e Pavlefshme", diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json index ad49d8a5a3c..3f70efccb7d 100644 --- a/apps/user_ldap/l10n/sq.json +++ b/apps/user_ldap/l10n/sq.json @@ -52,8 +52,6 @@ "Your password will expire tomorrow." : "Fjalëkalimi juaj do të skadojë nesër", "Your password will expire today." : "Fjalëkalimi juaj do të skadojë sot.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Fjalëkalimi juaj do të skadojë brenad %n ditëve","Fjalëkalimi juaj do të skadojë brenad %n ditëve"], - "_%s group found_::_%s groups found_" : ["U gjet %s grup","U gjetën %s grupe"], - "_%s user found_::_%s users found_" : ["U gjet %s përdorues","U gjetën %s përdorues"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nuk mund të zbulohej atributi i emrit të ekranit të përdoruesit. Ju lutemi specifikoni vetë në avancë parametrat e LDAP.", "Could not find the desired feature" : "S’u gjet dot veçoria e dëshiruar", "Invalid Host" : "Strehë e Pavlefshme", diff --git a/apps/user_ldap/l10n/sr.js b/apps/user_ldap/l10n/sr.js index 3b85272d269..1f9d589068f 100644 --- a/apps/user_ldap/l10n/sr.js +++ b/apps/user_ldap/l10n/sr.js @@ -56,8 +56,6 @@ OC.L10N.register( "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 дана."], - "_%s group found_::_%s groups found_" : ["нађена %s група","нађене %s групе","Нађено %s група"], - "_%s user found_::_%s users found_" : ["нађен %s корисник","нађена %s корисника","Нађено %s корисника"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не могу да пронађем атрибут имена за приказ корисника. Молимо сами га наведите у LDAP напредним подешавањима.", "Could not find the desired feature" : "Не могу да пронађем жељену особину", "Invalid Host" : "Неисправан домаћин", diff --git a/apps/user_ldap/l10n/sr.json b/apps/user_ldap/l10n/sr.json index 013c18bb991..0bf2382a477 100644 --- a/apps/user_ldap/l10n/sr.json +++ b/apps/user_ldap/l10n/sr.json @@ -54,8 +54,6 @@ "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 дана."], - "_%s group found_::_%s groups found_" : ["нађена %s група","нађене %s групе","Нађено %s група"], - "_%s user found_::_%s users found_" : ["нађен %s корисник","нађена %s корисника","Нађено %s корисника"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Не могу да пронађем атрибут имена за приказ корисника. Молимо сами га наведите у LDAP напредним подешавањима.", "Could not find the desired feature" : "Не могу да пронађем жељену особину", "Invalid Host" : "Неисправан домаћин", diff --git a/apps/user_ldap/l10n/sv.js b/apps/user_ldap/l10n/sv.js index 32544d9f960..5467a9359a4 100644 --- a/apps/user_ldap/l10n/sv.js +++ b/apps/user_ldap/l10n/sv.js @@ -56,8 +56,6 @@ OC.L10N.register( "Your password will expire tomorrow." : "Ditt lösenord kommer att gå ut imorgon.", "Your password will expire today." : "Ditt lösenord kommer att gå ut idag.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ditt lösenord kommer gå ut inom %n dag.","Ditt lösenord kommer gå ut inom %n dagar."], - "_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"], - "_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunde inte upptäcka ditt visningsnamnsattribut. Vänligen specificera det själv i avancerade inställningar för LDAP.", "Could not find the desired feature" : "Det gick inte hitta den önskade funktionen", "Invalid Host" : "Felaktig värd", diff --git a/apps/user_ldap/l10n/sv.json b/apps/user_ldap/l10n/sv.json index a043a5b11a0..d214492094d 100644 --- a/apps/user_ldap/l10n/sv.json +++ b/apps/user_ldap/l10n/sv.json @@ -54,8 +54,6 @@ "Your password will expire tomorrow." : "Ditt lösenord kommer att gå ut imorgon.", "Your password will expire today." : "Ditt lösenord kommer att gå ut idag.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Ditt lösenord kommer gå ut inom %n dag.","Ditt lösenord kommer gå ut inom %n dagar."], - "_%s group found_::_%s groups found_" : ["%s grupp hittad","%s grupper hittade"], - "_%s user found_::_%s users found_" : ["%s användare hittad","%s användare hittade"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Kunde inte upptäcka ditt visningsnamnsattribut. Vänligen specificera det själv i avancerade inställningar för LDAP.", "Could not find the desired feature" : "Det gick inte hitta den önskade funktionen", "Invalid Host" : "Felaktig värd", diff --git a/apps/user_ldap/l10n/th.js b/apps/user_ldap/l10n/th.js index 371e862656d..f0537e1ce56 100644 --- a/apps/user_ldap/l10n/th.js +++ b/apps/user_ldap/l10n/th.js @@ -41,8 +41,6 @@ OC.L10N.register( "User found and settings verified." : "พบผู้ใช้และการตั้งค่าได้รับการตรวจสอบแล้ว", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ตัวกรองการค้นหาไม่ถูกต้องอาจเป็นเพราะปัญหาไวยากรณ์เช่นหมายเลขที่ไม่สม่ำเสมอของวงเล็บเปิดและปิด กรุณาแก้ไข", "Please provide a login name to test against" : "โปรดระบุชื่อที่ใช้ในการเข้าสู่ระบบเพื่อทดสอบข้อขัดแย้ง", - "_%s group found_::_%s groups found_" : ["พบ %s กลุ่ม"], - "_%s user found_::_%s users found_" : ["พบผู้ใช้ %s คน"], "Could not find the desired feature" : "ไม่พบคุณลักษณะที่ต้องการ", "Invalid Host" : "โฮสต์ไม่ถูกต้อง", "Test Configuration" : "ทดสอบการตั้งค่า", diff --git a/apps/user_ldap/l10n/th.json b/apps/user_ldap/l10n/th.json index 4f755b0873a..29f532b9ba0 100644 --- a/apps/user_ldap/l10n/th.json +++ b/apps/user_ldap/l10n/th.json @@ -39,8 +39,6 @@ "User found and settings verified." : "พบผู้ใช้และการตั้งค่าได้รับการตรวจสอบแล้ว", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "ตัวกรองการค้นหาไม่ถูกต้องอาจเป็นเพราะปัญหาไวยากรณ์เช่นหมายเลขที่ไม่สม่ำเสมอของวงเล็บเปิดและปิด กรุณาแก้ไข", "Please provide a login name to test against" : "โปรดระบุชื่อที่ใช้ในการเข้าสู่ระบบเพื่อทดสอบข้อขัดแย้ง", - "_%s group found_::_%s groups found_" : ["พบ %s กลุ่ม"], - "_%s user found_::_%s users found_" : ["พบผู้ใช้ %s คน"], "Could not find the desired feature" : "ไม่พบคุณลักษณะที่ต้องการ", "Invalid Host" : "โฮสต์ไม่ถูกต้อง", "Test Configuration" : "ทดสอบการตั้งค่า", diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js index 2fff2b537ce..dc4241e589a 100644 --- a/apps/user_ldap/l10n/tr.js +++ b/apps/user_ldap/l10n/tr.js @@ -56,12 +56,14 @@ OC.L10N.register( "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", "LDAP User backend" : "LDAP kullanıcı arka yüzü", - "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 tomorrow." : "Parolanızın geçerlilik süresi yarın dolacak.", + "Your password will expire today." : "Parolanızın geçerlilik 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"], + "_%n group found_::_%n groups found_" : ["%n grup bulundu","%n grup bulundu"], + "> 1000 groups found" : "> 1000 grup bulundu", + "> 1000 users found" : "> 1000 kullanıcı bulundu", + "_%n user found_::_%n users found_" : ["%n kullanıcı bulundu","%n kullanıcı bulundu"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş LDAP ayarları bölümünden siz belirtin.", "Could not find the desired feature" : "İstenilen özellik bulunamadı", "Invalid Host" : "Sunucu geçersiz", diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json index c7e9d1a55d1..8134a8b23af 100644 --- a/apps/user_ldap/l10n/tr.json +++ b/apps/user_ldap/l10n/tr.json @@ -54,12 +54,14 @@ "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", "LDAP User backend" : "LDAP kullanıcı arka yüzü", - "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 tomorrow." : "Parolanızın geçerlilik süresi yarın dolacak.", + "Your password will expire today." : "Parolanızın geçerlilik 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"], + "_%n group found_::_%n groups found_" : ["%n grup bulundu","%n grup bulundu"], + "> 1000 groups found" : "> 1000 grup bulundu", + "> 1000 users found" : "> 1000 kullanıcı bulundu", + "_%n user found_::_%n users found_" : ["%n kullanıcı bulundu","%n kullanıcı bulundu"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Görüntülenecek kullanıcı adı özniteliği algılanamadı. Lütfen gelişmiş LDAP ayarları bölümünden siz belirtin.", "Could not find the desired feature" : "İstenilen özellik bulunamadı", "Invalid Host" : "Sunucu geçersiz", diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js index ff2b1ca6b27..8d4d45c7582 100644 --- a/apps/user_ldap/l10n/uk.js +++ b/apps/user_ldap/l10n/uk.js @@ -27,37 +27,52 @@ OC.L10N.register( "Select object classes" : "Виберіть класи об'єктів", "Please check the credentials, they seem to be wrong." : "Перевірте дані авторизації, можливо, що вони неправильні.", "Please specify the port, it could not be auto-detected." : "Будь ласка, вкажіть порт, він не може бути визначений автоматично.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Неможливо автоматично визначити базове DN, перегляньте облікові дані, хост і порт.", + "Could not detect Base DN, please enter it manually." : "Не вдалося визначити базовий DN, введіть його вручну.", "{nthServer}. Server" : "{nthServer}. Сервер", + "No object found in the given Base DN. Please revise." : "Не знайдено жодного об’єкта в даному базовому DN. Будь ласка, перегляньте.", + "More than 1,000 directory entries available." : "Доступно понад 1000 записів каталогу.", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Сталась помилка. Будь ласка, перевірте базове DN, а також налаштування підключення та облікові дані.", "Do you really want to delete the current Server Configuration?" : "Дійсно вилучити поточну конфігурацію сервера ?", "Confirm Deletion" : "Підтвердіть вилучення", "Mappings cleared successfully!" : "Відображення успішно очищенні!", "Error while clearing the mappings." : "Помилка при очищенні відображень.", + "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, це може зайняти деякий час. Ви все ще хочете змінити режим?", + "Mode switch" : "Перемикач режимів", "Select attributes" : "Виберіть атрибути", "User found and settings verified." : "Користувача знайдено і налаштування перевірені.", + "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Фільтр пошуку недійсний, ймовірно, через синтаксичні проблеми, наприклад нерівну кількість відкритих і закритих дужок. Будь ласка, перегляньте.", + "Please provide a login name to test against" : "Будь ласка, введіть ім’я для входу для перевірки", "LDAP User backend" : "Інтерфейс керування користувачами LDAP", "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 днів."], - "_%s group found_::_%s groups found_" : [" %s група знайдена "," %s груп знайдено ","%s груп знайдено ","%s груп знайдено "], - "_%s user found_::_%s users found_" : ["%s користувача знайдено","%s користувачів знайдено","%s користувачів знайдено","%s користувачів знайдено"], "Could not find the desired feature" : "Не вдалося знайти потрібну функцію", "Invalid Host" : "Невірний Host", "LDAP user and group backend" : "Інтерфейс керування користувачами та групами LDAP", "Test Configuration" : "Тестове налаштування", "Help" : "Допомога", "Groups meeting these criteria are available in %s:" : "Групи, що відповідають цим критеріям доступні в %s:", + "Only these object classes:" : "Тільки ці класи об'єктів:", "Only from these groups:" : "Лише з цих груп:", "Search groups" : "Пошук груп", "Available groups" : "Доступні групи", "Selected groups" : "Обрані групи", + "Edit LDAP Query" : "Редагувати запит LDAP", "LDAP Filter:" : "LDAP фільтр:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.", "Verify settings and count the groups" : "Перевірити налаштування та порахувати групи", + "When logging in, %s will find the user based on the following attributes:" : "Під час входу в систему %s знайде користувача за такими атрибутами:", "Other Attributes:" : "Інші Атрибути:", "Test Loginname" : "Тестове ім'я при вході", "Verify settings" : "Перевірити налаштування", "%s. Server:" : "%s. Сервер:", "Add a new configuration" : "Додати нову конфігурацію", + "Copy current configuration into new directory binding" : "Скопіюйте поточну конфігурацію в новий каталог", + "Delete the current configuration" : "Видалити поточну конфігурацію", "Host" : "Хост", "Port" : "Порт", "Detect Port" : "Визначити Порт", @@ -72,6 +87,7 @@ 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 (рекомендується для великих каталогів)", + "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Найпоширенішими класами об’єктів для користувачів є organizationalPerson, person, user і inetOrgPerson. Якщо ви не впевнені, який клас об’єктів вибрати, зверніться до свого адміністратора каталогу.", "The filter specifies which LDAP users shall have access to the %s instance." : "Фільтр визначає, які користувачі LDAP повинні мати доступ до примірника %s.", "Verify settings and count users" : "Перевірити налаштування та порахувати користувачів", "Saving" : "Збереження", @@ -107,6 +123,8 @@ OC.L10N.register( "Directory Settings" : "Налаштування каталогу", "User Display Name Field" : "Поле, яке відображає Ім'я Користувача", "The LDAP attribute to use to generate the user's display name." : "Атрибут LDAP, який використовується для генерації імен користувачів.", + "2nd User Display Name Field" : "2-е поле відображуваного імені користувача", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Додатково. Атрибут LDAP, який потрібно додати до відображуваного імені в дужках. Результати, напр. »Джон Доу (john.doe@example.org)«.", "Base User Tree" : "Основне Дерево Користувачів", "One User Base DN per line" : "Один Користувач Base DN на рядок", "User Search Attributes" : "Пошукові Атрибути Користувача", @@ -117,6 +135,8 @@ OC.L10N.register( "One Group Base DN per line" : "Одна Група Base DN на рядок", "Group Search Attributes" : "Пошукові Атрибути Групи", "Group-Member association" : "Асоціація Група-Член", + "Dynamic Group Member URL" : "URL-адреса члена динамічної групи", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Атрибут LDAP, який об’єктів групи містить URL-адресу пошуку LDAP, яка визначає, які об’єкти належать до групи. (Пусте налаштування вимикає функцію динамічного членства в групі.)", "Nested Groups" : "Вкладені Групи", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "При включенні, групи, які містять групи підтримуються. (Працює тільки якщо атрибут члена групи містить DNS.)", "Paging chunksize" : "Розмір підкачки", diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json index 7d19ac50a5d..f07864f7ab0 100644 --- a/apps/user_ldap/l10n/uk.json +++ b/apps/user_ldap/l10n/uk.json @@ -25,37 +25,52 @@ "Select object classes" : "Виберіть класи об'єктів", "Please check the credentials, they seem to be wrong." : "Перевірте дані авторизації, можливо, що вони неправильні.", "Please specify the port, it could not be auto-detected." : "Будь ласка, вкажіть порт, він не може бути визначений автоматично.", + "Base DN could not be auto-detected, please revise credentials, host and port." : "Неможливо автоматично визначити базове DN, перегляньте облікові дані, хост і порт.", + "Could not detect Base DN, please enter it manually." : "Не вдалося визначити базовий DN, введіть його вручну.", "{nthServer}. Server" : "{nthServer}. Сервер", + "No object found in the given Base DN. Please revise." : "Не знайдено жодного об’єкта в даному базовому DN. Будь ласка, перегляньте.", + "More than 1,000 directory entries available." : "Доступно понад 1000 записів каталогу.", + "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Сталась помилка. Будь ласка, перевірте базове DN, а також налаштування підключення та облікові дані.", "Do you really want to delete the current Server Configuration?" : "Дійсно вилучити поточну конфігурацію сервера ?", "Confirm Deletion" : "Підтвердіть вилучення", "Mappings cleared successfully!" : "Відображення успішно очищенні!", "Error while clearing the mappings." : "Помилка при очищенні відображень.", + "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, це може зайняти деякий час. Ви все ще хочете змінити режим?", + "Mode switch" : "Перемикач режимів", "Select attributes" : "Виберіть атрибути", "User found and settings verified." : "Користувача знайдено і налаштування перевірені.", + "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Фільтр пошуку недійсний, ймовірно, через синтаксичні проблеми, наприклад нерівну кількість відкритих і закритих дужок. Будь ласка, перегляньте.", + "Please provide a login name to test against" : "Будь ласка, введіть ім’я для входу для перевірки", "LDAP User backend" : "Інтерфейс керування користувачами LDAP", "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 днів."], - "_%s group found_::_%s groups found_" : [" %s група знайдена "," %s груп знайдено ","%s груп знайдено ","%s груп знайдено "], - "_%s user found_::_%s users found_" : ["%s користувача знайдено","%s користувачів знайдено","%s користувачів знайдено","%s користувачів знайдено"], "Could not find the desired feature" : "Не вдалося знайти потрібну функцію", "Invalid Host" : "Невірний Host", "LDAP user and group backend" : "Інтерфейс керування користувачами та групами LDAP", "Test Configuration" : "Тестове налаштування", "Help" : "Допомога", "Groups meeting these criteria are available in %s:" : "Групи, що відповідають цим критеріям доступні в %s:", + "Only these object classes:" : "Тільки ці класи об'єктів:", "Only from these groups:" : "Лише з цих груп:", "Search groups" : "Пошук груп", "Available groups" : "Доступні групи", "Selected groups" : "Обрані групи", + "Edit LDAP Query" : "Редагувати запит LDAP", "LDAP Filter:" : "LDAP фільтр:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.", "Verify settings and count the groups" : "Перевірити налаштування та порахувати групи", + "When logging in, %s will find the user based on the following attributes:" : "Під час входу в систему %s знайде користувача за такими атрибутами:", "Other Attributes:" : "Інші Атрибути:", "Test Loginname" : "Тестове ім'я при вході", "Verify settings" : "Перевірити налаштування", "%s. Server:" : "%s. Сервер:", "Add a new configuration" : "Додати нову конфігурацію", + "Copy current configuration into new directory binding" : "Скопіюйте поточну конфігурацію в новий каталог", + "Delete the current configuration" : "Видалити поточну конфігурацію", "Host" : "Хост", "Port" : "Порт", "Detect Port" : "Визначити Порт", @@ -70,6 +85,7 @@ "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 (рекомендується для великих каталогів)", + "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Найпоширенішими класами об’єктів для користувачів є organizationalPerson, person, user і inetOrgPerson. Якщо ви не впевнені, який клас об’єктів вибрати, зверніться до свого адміністратора каталогу.", "The filter specifies which LDAP users shall have access to the %s instance." : "Фільтр визначає, які користувачі LDAP повинні мати доступ до примірника %s.", "Verify settings and count users" : "Перевірити налаштування та порахувати користувачів", "Saving" : "Збереження", @@ -105,6 +121,8 @@ "Directory Settings" : "Налаштування каталогу", "User Display Name Field" : "Поле, яке відображає Ім'я Користувача", "The LDAP attribute to use to generate the user's display name." : "Атрибут LDAP, який використовується для генерації імен користувачів.", + "2nd User Display Name Field" : "2-е поле відображуваного імені користувача", + "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "Додатково. Атрибут LDAP, який потрібно додати до відображуваного імені в дужках. Результати, напр. »Джон Доу (john.doe@example.org)«.", "Base User Tree" : "Основне Дерево Користувачів", "One User Base DN per line" : "Один Користувач Base DN на рядок", "User Search Attributes" : "Пошукові Атрибути Користувача", @@ -115,6 +133,8 @@ "One Group Base DN per line" : "Одна Група Base DN на рядок", "Group Search Attributes" : "Пошукові Атрибути Групи", "Group-Member association" : "Асоціація Група-Член", + "Dynamic Group Member URL" : "URL-адреса члена динамічної групи", + "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "Атрибут LDAP, який об’єктів групи містить URL-адресу пошуку LDAP, яка визначає, які об’єкти належать до групи. (Пусте налаштування вимикає функцію динамічного членства в групі.)", "Nested Groups" : "Вкладені Групи", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "При включенні, групи, які містять групи підтримуються. (Працює тільки якщо атрибут члена групи містить DNS.)", "Paging chunksize" : "Розмір підкачки", diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js index 87f2a3b4518..c01a3ed7039 100644 --- a/apps/user_ldap/l10n/zh_CN.js +++ b/apps/user_ldap/l10n/zh_CN.js @@ -60,8 +60,6 @@ OC.L10N.register( "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 设置中指定。", "Could not find the desired feature" : "无法找到所需的功能", "Invalid Host" : "无效的主机", diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json index f1dda1ab41a..e791075ae50 100644 --- a/apps/user_ldap/l10n/zh_CN.json +++ b/apps/user_ldap/l10n/zh_CN.json @@ -58,8 +58,6 @@ "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 设置中指定。", "Could not find the desired feature" : "无法找到所需的功能", "Invalid Host" : "无效的主机", diff --git a/apps/user_ldap/l10n/zh_HK.js b/apps/user_ldap/l10n/zh_HK.js index 9f85154ca74..221969351d6 100644 --- a/apps/user_ldap/l10n/zh_HK.js +++ b/apps/user_ldap/l10n/zh_HK.js @@ -60,8 +60,10 @@ OC.L10N.register( "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 位用戶"], + "_%n group found_::_%n groups found_" : ["找到 %n 個群組"], + "> 1000 groups found" : "找到 > 1000 個群組", + "> 1000 users found" : "找到 > 1000 位用戶", + "_%n user found_::_%n users found_" : ["找到 %n 位用戶"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "無法檢測到用戶顯示名稱屬性。請在高級LDAP設置中自行指定。", "Could not find the desired feature" : "無法找到所需的功能", "Invalid Host" : "無效的 Host", diff --git a/apps/user_ldap/l10n/zh_HK.json b/apps/user_ldap/l10n/zh_HK.json index f5901f08ac4..c30ba105025 100644 --- a/apps/user_ldap/l10n/zh_HK.json +++ b/apps/user_ldap/l10n/zh_HK.json @@ -58,8 +58,10 @@ "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 位用戶"], + "_%n group found_::_%n groups found_" : ["找到 %n 個群組"], + "> 1000 groups found" : "找到 > 1000 個群組", + "> 1000 users found" : "找到 > 1000 位用戶", + "_%n user found_::_%n users found_" : ["找到 %n 位用戶"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "無法檢測到用戶顯示名稱屬性。請在高級LDAP設置中自行指定。", "Could not find the desired feature" : "無法找到所需的功能", "Invalid Host" : "無效的 Host", diff --git a/apps/user_ldap/l10n/zh_TW.js b/apps/user_ldap/l10n/zh_TW.js index de31af6ef40..78ebcb1db2b 100644 --- a/apps/user_ldap/l10n/zh_TW.js +++ b/apps/user_ldap/l10n/zh_TW.js @@ -60,8 +60,10 @@ OC.L10N.register( "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 使用者"], + "_%n group found_::_%n groups found_" : ["找到 %n 個群組"], + "> 1000 groups found" : "找到 > 1000 個群組", + "> 1000 users found" : "找到 > 1000 個使用者", + "_%n user found_::_%n users found_" : ["找到 %n 個使用者"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "偵測不到使用者顯示名稱屬性。請在進階 LDAP 設定中自行指定。", "Could not find the desired feature" : "找不到所需的功能", "Invalid Host" : "無效的主機", diff --git a/apps/user_ldap/l10n/zh_TW.json b/apps/user_ldap/l10n/zh_TW.json index 8fe173c391c..eb0ac202b46 100644 --- a/apps/user_ldap/l10n/zh_TW.json +++ b/apps/user_ldap/l10n/zh_TW.json @@ -58,8 +58,10 @@ "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 使用者"], + "_%n group found_::_%n groups found_" : ["找到 %n 個群組"], + "> 1000 groups found" : "找到 > 1000 個群組", + "> 1000 users found" : "找到 > 1000 個使用者", + "_%n user found_::_%n users found_" : ["找到 %n 個使用者"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "偵測不到使用者顯示名稱屬性。請在進階 LDAP 設定中自行指定。", "Could not find the desired feature" : "找不到所需的功能", "Invalid Host" : "無效的主機", diff --git a/apps/user_ldap/lib/Jobs/Sync.php b/apps/user_ldap/lib/Jobs/Sync.php index 3d0dd88dfd2..d9171f4aab7 100644 --- a/apps/user_ldap/lib/Jobs/Sync.php +++ b/apps/user_ldap/lib/Jobs/Sync.php @@ -24,7 +24,6 @@ */ namespace OCA\User_LDAP\Jobs; -use OC\BackgroundJob\TimedJob; use OC\ServerNotAvailableException; use OCA\User_LDAP\AccessFactory; use OCA\User_LDAP\Configuration; @@ -33,6 +32,8 @@ use OCA\User_LDAP\Helper; use OCA\User_LDAP\LDAP; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\User\Manager; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\TimedJob; use OCP\IAvatarManager; use OCP\IConfig; use OCP\IDBConnection; @@ -68,7 +69,8 @@ class Sync extends TimedJob { /** @var AccessFactory */ protected $accessFactory; - public function __construct(Manager $userManager) { + public function __construct(Manager $userManager, ITimeFactory $time) { + parent::__construct($time); $this->userManager = $userManager; $this->setInterval( \OC::$server->getConfig()->getAppValue( @@ -298,8 +300,6 @@ class Sync extends TimedJob { /** * "fixes" DI - * - * @param array $argument */ public function setArgument($argument) { if (isset($argument['config'])) { diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php index ae9546be08b..e85e65a7d70 100644 --- a/apps/user_ldap/lib/Wizard.php +++ b/apps/user_ldap/lib/Wizard.php @@ -120,25 +120,11 @@ class Wizard extends LDAPUtility { return (int)$result; } - /** - * formats the return value of a count operation to the string to be - * inserted. - * - * @param int $count - * @return string - */ - private function formatCountResult(int $count): string { - if ($count > 1000) { - return '> 1000'; - } - return (string)$count; - } - public function countGroups() { $filter = $this->configuration->ldapGroupFilter; if (empty($filter)) { - $output = self::$l->n('%s group found', '%s groups found', 0, [0]); + $output = self::$l->n('%n group found', '%n groups found', 0); $this->result->addChange('ldap_group_count', $output); return $this->result; } @@ -152,12 +138,16 @@ class Wizard extends LDAPUtility { } return false; } - $output = self::$l->n( - '%s group found', - '%s groups found', - $groupsTotal, - [$this->formatCountResult($groupsTotal)] - ); + + if ($groupsTotal > 1000) { + $output = self::$l->t('> 1000 groups found'); + } else { + $output = self::$l->n( + '%n group found', + '%n groups found', + $groupsTotal + ); + } $this->result->addChange('ldap_group_count', $output); return $this->result; } @@ -170,12 +160,15 @@ class Wizard extends LDAPUtility { $filter = $this->access->getFilterForUserCount(); $usersTotal = $this->countEntries($filter, 'users'); - $output = self::$l->n( - '%s user found', - '%s users found', - $usersTotal, - [$this->formatCountResult($usersTotal)] - ); + if ($usersTotal > 1000) { + $output = self::$l->t('> 1000 users found'); + } else { + $output = self::$l->n( + '%n user found', + '%n users found', + $usersTotal + ); + } $this->result->addChange('ldap_user_count', $output); return $this->result; } diff --git a/apps/user_ldap/templates/part.settingcontrols.php b/apps/user_ldap/templates/part.settingcontrols.php index a418885f47e..97f80bc13f7 100644 --- a/apps/user_ldap/templates/part.settingcontrols.php +++ b/apps/user_ldap/templates/part.settingcontrols.php @@ -4,7 +4,7 @@ </button> <a href="<?php p(link_to_docs('admin-ldap')); ?>" target="_blank" rel="noreferrer noopener"> - <img src="<?php print_unescaped(image_path('', 'actions/info.svg')); ?>" + <img src="<?php print_unescaped(image_path('core', 'actions/info.svg')); ?>" style="height:1.75ex" /> <?php p($l->t('Help'));?> </a> diff --git a/apps/user_ldap/templates/part.wizardcontrols.php b/apps/user_ldap/templates/part.wizardcontrols.php index bd84b23c76d..d9a6fab60e7 100644 --- a/apps/user_ldap/templates/part.wizardcontrols.php +++ b/apps/user_ldap/templates/part.wizardcontrols.php @@ -10,7 +10,7 @@ </button> <a href="<?php p(link_to_docs('admin-ldap')); ?>" target="_blank" rel="noreferrer noopener"> - <img src="<?php print_unescaped(image_path('', 'actions/info.svg')); ?>" + <img src="<?php print_unescaped(image_path('core', 'actions/info.svg')); ?>" style="height:1.75ex" /> <span class="ldap_grey"><?php p($l->t('Help'));?></span> </a> diff --git a/apps/user_ldap/tests/Jobs/SyncTest.php b/apps/user_ldap/tests/Jobs/SyncTest.php index 5592a2531bc..8d23efb4da8 100644 --- a/apps/user_ldap/tests/Jobs/SyncTest.php +++ b/apps/user_ldap/tests/Jobs/SyncTest.php @@ -34,6 +34,7 @@ use OCA\User_LDAP\Jobs\Sync; use OCA\User_LDAP\LDAP; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\User\Manager; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\IAvatarManager; use OCP\IConfig; use OCP\IDBConnection; @@ -98,7 +99,7 @@ class SyncTest extends TestCase { 'accessFactory' => $this->accessFactory, ]; - $this->sync = new Sync($this->userManager); + $this->sync = new Sync($this->userManager, $this->createMock(ITimeFactory::class)); } public function intervalDataProvider() { diff --git a/apps/user_status/composer/composer/installed.php b/apps/user_status/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/user_status/composer/composer/installed.php +++ b/apps/user_status/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/user_status/l10n/cs.js b/apps/user_status/l10n/cs.js index 4b058fbc720..773acd2da3e 100644 --- a/apps/user_status/l10n/cs.js +++ b/apps/user_status/l10n/cs.js @@ -23,11 +23,11 @@ OC.L10N.register( "Away" : "Pryč", "Do not disturb" : "Nerušit", "{status}, {timestamp}" : "{status}, {timestamp}", - "Don't clear" : "Nikdy", + "Don't clear" : "Do odvolání", "Today" : "Dnes", "This week" : "Tento týden", "Online" : "Online", - "Invisible" : "Neviditelný", + "Invisible" : "Není vidět", "Offline" : "Offline", "There was an error saving the new status" : "Při ukládání nového stavu došlo k chybě", "30 minutes" : "30 minut", diff --git a/apps/user_status/l10n/cs.json b/apps/user_status/l10n/cs.json index bcec96ec7a7..d82faeea05d 100644 --- a/apps/user_status/l10n/cs.json +++ b/apps/user_status/l10n/cs.json @@ -21,11 +21,11 @@ "Away" : "Pryč", "Do not disturb" : "Nerušit", "{status}, {timestamp}" : "{status}, {timestamp}", - "Don't clear" : "Nikdy", + "Don't clear" : "Do odvolání", "Today" : "Dnes", "This week" : "Tento týden", "Online" : "Online", - "Invisible" : "Neviditelný", + "Invisible" : "Není vidět", "Offline" : "Offline", "There was an error saving the new status" : "Při ukládání nového stavu došlo k chybě", "30 minutes" : "30 minut", diff --git a/apps/user_status/l10n/de.js b/apps/user_status/l10n/de.js index a55ca794d57..c2d70ec6221 100644 --- a/apps/user_status/l10n/de.js +++ b/apps/user_status/l10n/de.js @@ -11,7 +11,7 @@ OC.L10N.register( "User status" : "Benutzerstatus", "View profile" : "Profil ansehen", "Clear status after" : "Status löschen nach", - "What is your status?" : "Wie ist Dein Status?", + "What is your status?" : "Wie ist dein Status?", "Set status" : "Status setzen", "Online status" : "Online-Status", "Status message" : "Statusnachricht", @@ -36,6 +36,6 @@ OC.L10N.register( "Mute all notifications" : "Alle Benachrichtigungen stummschalten", "Appear offline" : "Offline erscheinen", "Clear status message after" : "Statusnachricht löschen nach", - "What's your status?" : "Wie ist Dein Status?" + "What's your status?" : "Wie ist dein Status?" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_status/l10n/de.json b/apps/user_status/l10n/de.json index a24794095fc..a4efc34a67a 100644 --- a/apps/user_status/l10n/de.json +++ b/apps/user_status/l10n/de.json @@ -9,7 +9,7 @@ "User status" : "Benutzerstatus", "View profile" : "Profil ansehen", "Clear status after" : "Status löschen nach", - "What is your status?" : "Wie ist Dein Status?", + "What is your status?" : "Wie ist dein Status?", "Set status" : "Status setzen", "Online status" : "Online-Status", "Status message" : "Statusnachricht", @@ -34,6 +34,6 @@ "Mute all notifications" : "Alle Benachrichtigungen stummschalten", "Appear offline" : "Offline erscheinen", "Clear status message after" : "Statusnachricht löschen nach", - "What's your status?" : "Wie ist Dein Status?" + "What's your status?" : "Wie ist dein Status?" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_status/lib/Connector/UserStatusProvider.php b/apps/user_status/lib/Connector/UserStatusProvider.php index 46b89739f7c..cc674c9967e 100644 --- a/apps/user_status/lib/Connector/UserStatusProvider.php +++ b/apps/user_status/lib/Connector/UserStatusProvider.php @@ -62,10 +62,10 @@ class UserStatusProvider implements IProvider, ISettableProvider { } public function revertUserStatus(string $userId, string $messageId, string $status): void { - $this->service->revertUserStatus($userId, $messageId, $status); + $this->service->revertUserStatus($userId, $messageId); } public function revertMultipleUserStatus(array $userIds, string $messageId, string $status): void { - $this->service->revertMultipleUserStatus($userIds, $messageId, $status); + $this->service->revertMultipleUserStatus($userIds, $messageId); } } diff --git a/apps/user_status/lib/Db/UserStatusMapper.php b/apps/user_status/lib/Db/UserStatusMapper.php index 10939116a53..4f48ea46818 100644 --- a/apps/user_status/lib/Db/UserStatusMapper.php +++ b/apps/user_status/lib/Db/UserStatusMapper.php @@ -160,15 +160,13 @@ class UserStatusMapper extends QBMapper { * * @param string $userId * @param string $messageId - * @param string $status * @return bool True if an entry was deleted */ - public function deleteCurrentStatusToRestoreBackup(string $userId, string $messageId, string $status): bool { + public function deleteCurrentStatusToRestoreBackup(string $userId, string $messageId): bool { $qb = $this->db->getQueryBuilder(); $qb->delete($this->tableName) ->where($qb->expr()->eq('user_id', $qb->createNamedParameter($userId))) ->andWhere($qb->expr()->eq('message_id', $qb->createNamedParameter($messageId))) - ->andWhere($qb->expr()->eq('status', $qb->createNamedParameter($status))) ->andWhere($qb->expr()->eq('is_backup', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))); return $qb->executeStatement() > 0; } diff --git a/apps/user_status/lib/Service/StatusService.php b/apps/user_status/lib/Service/StatusService.php index 858db48f31f..1b7b44d95d3 100644 --- a/apps/user_status/lib/Service/StatusService.php +++ b/apps/user_status/lib/Service/StatusService.php @@ -496,7 +496,7 @@ class StatusService { } } - public function revertUserStatus(string $userId, string $messageId, string $status): void { + public function revertUserStatus(string $userId, string $messageId): void { try { /** @var UserStatus $userStatus */ $backupUserStatus = $this->mapper->findByUserId($userId, true); @@ -505,7 +505,7 @@ class StatusService { return; } - $deleted = $this->mapper->deleteCurrentStatusToRestoreBackup($userId, $messageId, $status); + $deleted = $this->mapper->deleteCurrentStatusToRestoreBackup($userId, $messageId); if (!$deleted) { // Another status is set automatically or no status, do nothing return; @@ -517,7 +517,7 @@ class StatusService { $this->mapper->update($backupUserStatus); } - public function revertMultipleUserStatus(array $userIds, string $messageId, string $status): void { + public function revertMultipleUserStatus(array $userIds, string $messageId): void { // Get all user statuses and the backups $findById = $userIds; foreach ($userIds as $userId) { @@ -528,8 +528,7 @@ class StatusService { $backups = $restoreIds = $statuesToDelete = []; foreach ($userStatuses as $userStatus) { if (!$userStatus->getIsBackup() - && $userStatus->getMessageId() === $messageId - && $userStatus->getStatus() === $status) { + && $userStatus->getMessageId() === $messageId) { $statuesToDelete[$userStatus->getUserId()] = $userStatus->getId(); } else if ($userStatus->getIsBackup()) { $backups[$userStatus->getUserId()] = $userStatus->getId(); diff --git a/apps/user_status/src/UserStatus.vue b/apps/user_status/src/UserStatus.vue index 644ff97d689..4bee4e6ea6c 100644 --- a/apps/user_status/src/UserStatus.vue +++ b/apps/user_status/src/UserStatus.vue @@ -20,7 +20,7 @@ --> <template> - <li> + <component :is="elementTag"> <div class="user-status-menu-item"> <!-- Username display --> <a v-if="!inline" @@ -51,7 +51,7 @@ <!-- Status management modal --> <SetStatusModal v-if="isModalOpen" @close="closeModal" /> - </li> + </component> </template> <script> @@ -94,6 +94,9 @@ export default { } }, computed: { + elementTag() { + return this.inline ? 'div' : 'li' + }, /** * The profile page link * @@ -290,7 +293,7 @@ export default { margin: 0; border: 0; border-radius: var(--border-radius-pill); - background-color: var(--color-background-translucent); + background-color: var(--color-main-background-blur); font-size: inherit; font-weight: normal; diff --git a/apps/user_status/src/components/ClearAtSelect.vue b/apps/user_status/src/components/ClearAtSelect.vue index d0a88ea8255..620b72a3a41 100644 --- a/apps/user_status/src/components/ClearAtSelect.vue +++ b/apps/user_status/src/components/ClearAtSelect.vue @@ -21,10 +21,11 @@ <template> <div class="clear-at-select"> - <span class="clear-at-select__label"> + <label class="clear-at-select__label" for="clearStatus"> {{ $t('user_status', 'Clear status after') }} - </span> - <Multiselect label="label" + </label> + <NcMultiselect id="clearStatus" + label="label" :value="option" :options="options" open-direction="top" @@ -33,14 +34,14 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import { getAllClearAtOptions } from '../services/clearAtOptionsService' import { clearAtFilter } from '../filters/clearAtFilter' export default { name: 'ClearAtSelect', components: { - Multiselect, + NcMultiselect, }, props: { clearAt: { diff --git a/apps/user_status/src/components/CustomMessageInput.vue b/apps/user_status/src/components/CustomMessageInput.vue index 88956e6871b..731bd6dd91f 100644 --- a/apps/user_status/src/components/CustomMessageInput.vue +++ b/apps/user_status/src/components/CustomMessageInput.vue @@ -19,9 +19,17 @@ - --> <template> - <form class="custom-input__form" - @submit.prevent> + <div class="custom-input__form"> + <NcEmojiPicker container=".custom-input__form" @select="setIcon"> + <NcButton class="custom-input__emoji-button" type="tertiary-no-background"> + {{ visibleIcon }} + </NcButton> + </NcEmojiPicker> + <label class="hidden-visually" for="user_status_message"> + {{ t('user_status', 'What is your status?') }} + </label> <input ref="input" + id="user_status_message" maxlength="80" :disabled="disabled" :placeholder="$t('user_status', 'What is your status?')" @@ -31,12 +39,19 @@ @keyup="change" @paste="change" @keyup.enter="submit"> - </form> + </div> </template> <script> +import NcButton from '@nextcloud/vue/dist/Components/NcButton.js' +import NcEmojiPicker from '@nextcloud/vue/dist/Components/NcEmojiPicker.js' + export default { name: 'CustomMessageInput', + components: { + NcButton, + NcEmojiPicker, + }, props: { message: { type: String, @@ -48,6 +63,21 @@ export default { default: false, }, }, + emits: [ + 'change', + 'submit', + 'icon-selected', + ], + computed: { + /** + * Returns the user-set icon or a smiley in case no icon is set + * + * @return {string} + */ + visibleIcon() { + return this.icon || '😀' + }, + }, methods: { focus() { this.$refs.input.focus() @@ -65,6 +95,10 @@ export default { submit(event) { this.$emit('submit', event.target.value) }, + + setIcon(event) { + this.$emit('icon-selected', event) + }, }, } </script> @@ -72,10 +106,16 @@ export default { <style lang="scss" scoped> .custom-input__form { flex-grow: 1; + position: relative; + + .v-popper { + position: absolute; + } input { width: 100%; border-radius: 0 var(--border-radius) var(--border-radius) 0; + padding-left: 44px !important; } } </style> diff --git a/apps/user_status/src/components/SetStatusModal.vue b/apps/user_status/src/components/SetStatusModal.vue index 0c95128c8d2..e1ba63337ef 100644 --- a/apps/user_status/src/components/SetStatusModal.vue +++ b/apps/user_status/src/components/SetStatusModal.vue @@ -20,7 +20,7 @@ --> <template> - <Modal size="normal" + <NcModal size="normal" :title="$t('user_status', 'Set status')" @close="closeModal"> <div class="set-status-modal"> @@ -41,44 +41,39 @@ <h3>{{ $t('user_status', 'Status message') }}</h3> </div> <div class="set-status-modal__custom-input"> - <EmojiPicker @select="setIcon"> - <button class="custom-input__emoji-button"> - {{ visibleIcon }} - </button> - </EmojiPicker> <CustomMessageInput ref="customMessageInput" :message="message" @change="setMessage" - @submit="saveStatus" /> + @submit="saveStatus" + @iconSelected="setIcon" /> </div> <PredefinedStatusesList @select-status="selectPredefinedMessage" /> <ClearAtSelect :clear-at="clearAt" @select-clear-at="setClearAt" /> <div class="status-buttons"> - <ButtonVue :wide="true" + <NcButton :wide="true" type="tertiary" :text="$t('user_status', 'Clear status message')" :disabled="isSavingStatus" @click="clearStatus"> {{ $t('user_status', 'Clear status message') }} - </ButtonVue> - <ButtonVue :wide="true" + </NcButton> + <NcButton :wide="true" type="primary" :text="$t('user_status', 'Set status message')" :disabled="isSavingStatus" @click="saveStatus"> {{ $t('user_status', 'Set status message') }} - </ButtonVue> + </NcButton> </div> </div> - </Modal> + </NcModal> </template> <script> import { showError } from '@nextcloud/dialogs' -import EmojiPicker from '@nextcloud/vue/dist/Components/EmojiPicker' -import Modal from '@nextcloud/vue/dist/Components/Modal' -import ButtonVue from '@nextcloud/vue/dist/Components/Button' +import NcModal from '@nextcloud/vue/dist/Components/NcModal' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' import { getAllStatusOptions } from '../services/statusOptionsService' import OnlineStatusMixin from '../mixins/OnlineStatusMixin' import PredefinedStatusesList from './PredefinedStatusesList' @@ -92,11 +87,10 @@ export default { components: { ClearAtSelect, CustomMessageInput, - EmojiPicker, - Modal, + NcModal, OnlineStatusSelect, PredefinedStatusesList, - ButtonVue, + NcButton, }, mixins: [OnlineStatusMixin], @@ -110,16 +104,6 @@ export default { statuses: getAllStatusOptions(), } }, - computed: { - /** - * Returns the user-set icon or a smiley in case no icon is set - * - * @return {string} - */ - visibleIcon() { - return this.icon || '😀' - }, - }, /** * Loads the current status when a user opens dialog diff --git a/apps/user_status/src/menu.js b/apps/user_status/src/menu.js index 19d21939544..8714df3a1ff 100644 --- a/apps/user_status/src/menu.js +++ b/apps/user_status/src/menu.js @@ -26,7 +26,7 @@ import Vue from 'vue' import { getRequestToken } from '@nextcloud/auth' import UserStatus from './UserStatus' import store from './store' -import Avatar from '@nextcloud/vue/dist/Components/Avatar' +import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' import { loadState } from '@nextcloud/initial-state' // eslint-disable-next-line camelcase @@ -50,8 +50,8 @@ const propsData = { disableTooltip: true, } -const AvatarInMenu = Vue.extend(Avatar) -new AvatarInMenu({ propsData }).$mount('#avatardiv-menu') +const NcAvatarInMenu = Vue.extend(NcAvatar) +new NcAvatarInMenu({ propsData }).$mount('#avatardiv-menu') // Register settings menu entry export default new Vue({ diff --git a/apps/user_status/src/views/Dashboard.vue b/apps/user_status/src/views/Dashboard.vue index b8f68d77fdc..2b24ec6032f 100644 --- a/apps/user_status/src/views/Dashboard.vue +++ b/apps/user_status/src/views/Dashboard.vue @@ -27,7 +27,7 @@ <DashboardWidgetItem :main-text="item.mainText" :sub-text="item.subText"> <template #avatar> - <Avatar class="item-avatar" + <NcAvatar class="item-avatar" :size="44" :user="item.avatarUsername" :display-name="item.mainText" @@ -37,12 +37,12 @@ </DashboardWidgetItem> </template> <template #empty-content> - <EmptyContent id="user_status-widget-empty-content"> + <NcEmptyContent id="user_status-widget-empty-content"> <template #icon> <div class="icon-user-status" /> </template> {{ t('user_status', 'No recent status changes') }} - </EmptyContent> + </NcEmptyContent> </template> </DashboardWidget> </template> @@ -50,17 +50,17 @@ <script> import { DashboardWidget, DashboardWidgetItem } from '@nextcloud/vue-dashboard' import { loadState } from '@nextcloud/initial-state' -import Avatar from '@nextcloud/vue/dist/Components/Avatar' -import EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent' +import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar' +import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent' import moment from '@nextcloud/moment' export default { name: 'Dashboard', components: { - Avatar, + NcAvatar, DashboardWidget, DashboardWidgetItem, - EmptyContent, + NcEmptyContent, }, data() { return { diff --git a/apps/user_status/tests/Unit/Service/StatusServiceTest.php b/apps/user_status/tests/Unit/Service/StatusServiceTest.php index df31cf0d5ad..413cecce595 100644 --- a/apps/user_status/tests/Unit/Service/StatusServiceTest.php +++ b/apps/user_status/tests/Unit/Service/StatusServiceTest.php @@ -795,24 +795,34 @@ class StatusServiceTest extends TestCase { $backupOnly->setUserId('_backuponly'); $backupOnly->setIsBackup(true); + $noBackupDND = new UserStatus(); + $noBackupDND->setId(5); + $noBackupDND->setStatus(IUserStatus::DND); + $noBackupDND->setStatusTimestamp(1337); + $noBackupDND->setIsUserDefined(false); + $noBackupDND->setMessageId('call'); + $noBackupDND->setUserId('nobackupanddnd'); + $noBackupDND->setIsBackup(false); + $this->mapper->expects($this->once()) ->method('findByUserIds') - ->with(['john', 'nobackup', 'backuponly', '_john', '_nobackup', '_backuponly']) + ->with(['john', 'nobackup', 'backuponly', 'nobackupanddnd', '_john', '_nobackup', '_backuponly', '_nobackupanddnd']) ->willReturn([ $john, $johnBackup, $noBackup, $backupOnly, + $noBackupDND, ]); $this->mapper->expects($this->once()) ->method('deleteByIds') - ->with([1, 3]); + ->with([1, 3, 5]); $this->mapper->expects($this->once()) ->method('restoreBackupStatuses') ->with([2]); - $this->service->revertMultipleUserStatus(['john', 'nobackup', 'backuponly'], 'call', IUserStatus::AWAY); + $this->service->revertMultipleUserStatus(['john', 'nobackup', 'backuponly', 'nobackupanddnd'], 'call'); } } diff --git a/apps/weather_status/l10n/cs.js b/apps/weather_status/l10n/cs.js index e83018187d8..f4bf4ce706e 100644 --- a/apps/weather_status/l10n/cs.js +++ b/apps/weather_status/l10n/cs.js @@ -6,57 +6,57 @@ OC.L10N.register( "Malformed JSON data." : "Nesprávně formátovaná JSON data.", "Error" : "Chyba", "Weather status" : "Stav počasí", - "Weather status in your dashboard" : "Stav počasí ve vašem přehledu", - "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Napojení stavu počasí pro aplikaci Přehled.\n Polohu uživatele je možné zjistit automaticky nebo zadat ručně. Poté je zobrazována předpověď na příštích 6 hodin.\n Tento stav je také možné začlenit do ostatních míst, jako například Kalendář.", + "Weather status in your dashboard" : "Stav počasí na vaší nástěnce", + "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Napojení ohledně stavu počasí pro aplikaci Nástěnka.\n Polohu uživatele je možné zjistit automaticky nebo zadat ručně. Poté je zobrazována předpověď na příštích 6 hodin.\n Tento stav je také možné začlenit do ostatních míst, jako například Kalendář.", "Detect location" : "Zjistit polohu", - "Set custom address" : "Nastavit uživatelsky určenou adresu", + "Set custom address" : "Nastavit vlastní adresu", "Favorites" : "Oblíbené", - "{temperature} {unit} clear sky later today" : "{temperature} {unit} jasná obloha dnes", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} bude jasná obloha", "{temperature} {unit} clear sky" : "{temperature} {unit} jasná obloha", - "{temperature} {unit} cloudy later today" : "{temperature} {unit} zataženo dnes později", + "{temperature} {unit} cloudy later today" : "{temperature} {unit} bude zataženo", "{temperature} {unit} cloudy" : "{temperature} {unit} zataženo", - "{temperature} {unit} fair weather later today" : "{temperature} {unit} krásný den dnes později", - "{temperature} {unit} fair weather" : "{temperature} {unit} krásný den", - "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Polojasno dnes později", + "{temperature} {unit} fair weather later today" : "{temperature} {unit} bude hezky", + "{temperature} {unit} fair weather" : "{temperature} {unit} krásné počasí", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} bude polojasno", "{temperature} {unit} partly cloudy" : "{temperature} {unit} polojasno", - "{temperature} {unit} foggy later today" : "{temperature} {unit} mlhavo dnes později", + "{temperature} {unit} foggy later today" : "{temperature} {unit} bude mlhavo", "{temperature} {unit} foggy" : "{temperature} {unit} mlhavo", - "{temperature} {unit} light rainfall later today" : "{temperature} {unit} drobný déšť dnes později", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} bude drobně pršet", "{temperature} {unit} light rainfall" : "{temperature} {unit} drobný déšť", - "{temperature} {unit} rainfall later today" : "{temperature} {unit} drobný déšť dnes později", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} bude pršet", "{temperature} {unit} rainfall" : "{temperature} {unit} déšť", - "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} hustý déšť dnes později", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} bude vydatně pršet", "{temperature} {unit} heavy rainfall" : "{temperature} {unit} hustý déšť", - "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} přeháňky dnes později", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} budou přeháňky", "{temperature} {unit} rainfall showers" : "{temperature} {unit} přeháňky", - "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} drobné přeháňky dnes později", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} budou drobné přeháňky", "{temperature} {unit} light rainfall showers" : "{temperature} {unit} drobné přeháňky", - "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} intenzivní přeháňky dnes později", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} budou vydatné přeháňky", "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} intenzivní přeháňky", "More weather for {adr}" : "Více o počasí pro {adr}", - "Loading weather" : "Načítá se počasí", + "Loading weather" : "Načítání údajů o počasí", "Remove from favorites" : "Odebrat z oblíbených", - "Add as favorite" : "Přidat jako oblíbené", + "Add as favorite" : "Přidat do oblíbených", "You are not logged in." : "Nejste přihlášení.", "There was an error getting the weather status information." : "Při získávání informací o stavu počasí došlo k chybě.", - "No weather information found" : "Nenalezeny žádné informace o počasí", + "No weather information found" : "Nenalezeny žádné údaje o počasí", "Location not found" : "Umístění nenalezeno", - "There was an error setting the location address." : "Došlo k chybě při nastavování adresy umístění.", + "There was an error setting the location address." : "Při nastavování adresy umístění došlo k chybě.", "There was an error setting the location." : "Při nastavování umístění došlo k chybě.", "There was an error saving the mode." : "Při ukládání režimu došlo k chybě.", - "There was an error using personal address." : "Při použití osobní adresy došlo k chybě.", + "There was an error using personal address." : "Při použití vaší osobní adresy došlo k chybě.", "Set location for weather" : "Nastavit místo pro které předpovídat počasí", - "{temperature} {unit} Clear sky at {time}" : "{temperature} {unit} Jasná obloha v {time}", - "{temperature} {unit} Cloudy at {time}" : "{temperature} {unit} Zataženo v {time}", - "{temperature} {unit} Fair day at {time}" : "{temperature} {unit} Krásný den v {time}", - "{temperature} {unit} Fair night at {time}" : "{temperature} {unit} Bezmračná noc v {time}", - "{temperature} {unit} Partly cloudy at {time}" : "{temperature} {unit} Polojasno v {time}", - "{temperature} {unit} Foggy at {time}" : "{temperature} {unit} Mlhavo v {time}", - "{temperature} {unit} Light rain at {time}" : "{temperature} {unit} Drobný déšť v {time}", - "{temperature} {unit} Rain at {time}" : "{temperature} {unit} Désť v {time}", - "{temperature} {unit} Heavy rain at {time}" : "{temperature} {unit} Hustý déšť {time}", - "{temperature} {unit} Rain showers at {time}" : "{temperature} {unit} Přeháňky v {time}", - "{temperature} {unit} Light rain showers at {time}" : "{temperature} {unit} Lehké přeháňky v {time}", - "{temperature} {unit} Heavy rain showers at {time}" : "{temperature} {unit} Vydatné deště v {time}" + "{temperature} {unit} Clear sky at {time}" : "{temperature} {unit} jasná obloha v {time}", + "{temperature} {unit} Cloudy at {time}" : "{temperature} {unit} zataženo v {time}", + "{temperature} {unit} Fair day at {time}" : "{temperature} {unit} krásné počasí v {time}", + "{temperature} {unit} Fair night at {time}" : "{temperature} {unit} bezmračná noc v {time}", + "{temperature} {unit} Partly cloudy at {time}" : "{temperature} {unit} polojasno v {time}", + "{temperature} {unit} Foggy at {time}" : "{temperature} {unit} mlhavo v {time}", + "{temperature} {unit} Light rain at {time}" : "{temperature} {unit} drobný déšť v {time}", + "{temperature} {unit} Rain at {time}" : "{temperature} {unit} déšť v {time}", + "{temperature} {unit} Heavy rain at {time}" : "{temperature} {unit} hustý déšť {time}", + "{temperature} {unit} Rain showers at {time}" : "{temperature} {unit} přeháňky v {time}", + "{temperature} {unit} Light rain showers at {time}" : "{temperature} {unit} lehké přeháňky v {time}", + "{temperature} {unit} Heavy rain showers at {time}" : "{temperature} {unit} intenzivní přeháňky v {time}" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/weather_status/l10n/cs.json b/apps/weather_status/l10n/cs.json index 1a90e43161d..8dde4b45692 100644 --- a/apps/weather_status/l10n/cs.json +++ b/apps/weather_status/l10n/cs.json @@ -4,57 +4,57 @@ "Malformed JSON data." : "Nesprávně formátovaná JSON data.", "Error" : "Chyba", "Weather status" : "Stav počasí", - "Weather status in your dashboard" : "Stav počasí ve vašem přehledu", - "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Napojení stavu počasí pro aplikaci Přehled.\n Polohu uživatele je možné zjistit automaticky nebo zadat ručně. Poté je zobrazována předpověď na příštích 6 hodin.\n Tento stav je také možné začlenit do ostatních míst, jako například Kalendář.", + "Weather status in your dashboard" : "Stav počasí na vaší nástěnce", + "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Napojení ohledně stavu počasí pro aplikaci Nástěnka.\n Polohu uživatele je možné zjistit automaticky nebo zadat ručně. Poté je zobrazována předpověď na příštích 6 hodin.\n Tento stav je také možné začlenit do ostatních míst, jako například Kalendář.", "Detect location" : "Zjistit polohu", - "Set custom address" : "Nastavit uživatelsky určenou adresu", + "Set custom address" : "Nastavit vlastní adresu", "Favorites" : "Oblíbené", - "{temperature} {unit} clear sky later today" : "{temperature} {unit} jasná obloha dnes", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} bude jasná obloha", "{temperature} {unit} clear sky" : "{temperature} {unit} jasná obloha", - "{temperature} {unit} cloudy later today" : "{temperature} {unit} zataženo dnes později", + "{temperature} {unit} cloudy later today" : "{temperature} {unit} bude zataženo", "{temperature} {unit} cloudy" : "{temperature} {unit} zataženo", - "{temperature} {unit} fair weather later today" : "{temperature} {unit} krásný den dnes později", - "{temperature} {unit} fair weather" : "{temperature} {unit} krásný den", - "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Polojasno dnes později", + "{temperature} {unit} fair weather later today" : "{temperature} {unit} bude hezky", + "{temperature} {unit} fair weather" : "{temperature} {unit} krásné počasí", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} bude polojasno", "{temperature} {unit} partly cloudy" : "{temperature} {unit} polojasno", - "{temperature} {unit} foggy later today" : "{temperature} {unit} mlhavo dnes později", + "{temperature} {unit} foggy later today" : "{temperature} {unit} bude mlhavo", "{temperature} {unit} foggy" : "{temperature} {unit} mlhavo", - "{temperature} {unit} light rainfall later today" : "{temperature} {unit} drobný déšť dnes později", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} bude drobně pršet", "{temperature} {unit} light rainfall" : "{temperature} {unit} drobný déšť", - "{temperature} {unit} rainfall later today" : "{temperature} {unit} drobný déšť dnes později", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} bude pršet", "{temperature} {unit} rainfall" : "{temperature} {unit} déšť", - "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} hustý déšť dnes později", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} bude vydatně pršet", "{temperature} {unit} heavy rainfall" : "{temperature} {unit} hustý déšť", - "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} přeháňky dnes později", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} budou přeháňky", "{temperature} {unit} rainfall showers" : "{temperature} {unit} přeháňky", - "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} drobné přeháňky dnes později", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} budou drobné přeháňky", "{temperature} {unit} light rainfall showers" : "{temperature} {unit} drobné přeháňky", - "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} intenzivní přeháňky dnes později", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} budou vydatné přeháňky", "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} intenzivní přeháňky", "More weather for {adr}" : "Více o počasí pro {adr}", - "Loading weather" : "Načítá se počasí", + "Loading weather" : "Načítání údajů o počasí", "Remove from favorites" : "Odebrat z oblíbených", - "Add as favorite" : "Přidat jako oblíbené", + "Add as favorite" : "Přidat do oblíbených", "You are not logged in." : "Nejste přihlášení.", "There was an error getting the weather status information." : "Při získávání informací o stavu počasí došlo k chybě.", - "No weather information found" : "Nenalezeny žádné informace o počasí", + "No weather information found" : "Nenalezeny žádné údaje o počasí", "Location not found" : "Umístění nenalezeno", - "There was an error setting the location address." : "Došlo k chybě při nastavování adresy umístění.", + "There was an error setting the location address." : "Při nastavování adresy umístění došlo k chybě.", "There was an error setting the location." : "Při nastavování umístění došlo k chybě.", "There was an error saving the mode." : "Při ukládání režimu došlo k chybě.", - "There was an error using personal address." : "Při použití osobní adresy došlo k chybě.", + "There was an error using personal address." : "Při použití vaší osobní adresy došlo k chybě.", "Set location for weather" : "Nastavit místo pro které předpovídat počasí", - "{temperature} {unit} Clear sky at {time}" : "{temperature} {unit} Jasná obloha v {time}", - "{temperature} {unit} Cloudy at {time}" : "{temperature} {unit} Zataženo v {time}", - "{temperature} {unit} Fair day at {time}" : "{temperature} {unit} Krásný den v {time}", - "{temperature} {unit} Fair night at {time}" : "{temperature} {unit} Bezmračná noc v {time}", - "{temperature} {unit} Partly cloudy at {time}" : "{temperature} {unit} Polojasno v {time}", - "{temperature} {unit} Foggy at {time}" : "{temperature} {unit} Mlhavo v {time}", - "{temperature} {unit} Light rain at {time}" : "{temperature} {unit} Drobný déšť v {time}", - "{temperature} {unit} Rain at {time}" : "{temperature} {unit} Désť v {time}", - "{temperature} {unit} Heavy rain at {time}" : "{temperature} {unit} Hustý déšť {time}", - "{temperature} {unit} Rain showers at {time}" : "{temperature} {unit} Přeháňky v {time}", - "{temperature} {unit} Light rain showers at {time}" : "{temperature} {unit} Lehké přeháňky v {time}", - "{temperature} {unit} Heavy rain showers at {time}" : "{temperature} {unit} Vydatné deště v {time}" + "{temperature} {unit} Clear sky at {time}" : "{temperature} {unit} jasná obloha v {time}", + "{temperature} {unit} Cloudy at {time}" : "{temperature} {unit} zataženo v {time}", + "{temperature} {unit} Fair day at {time}" : "{temperature} {unit} krásné počasí v {time}", + "{temperature} {unit} Fair night at {time}" : "{temperature} {unit} bezmračná noc v {time}", + "{temperature} {unit} Partly cloudy at {time}" : "{temperature} {unit} polojasno v {time}", + "{temperature} {unit} Foggy at {time}" : "{temperature} {unit} mlhavo v {time}", + "{temperature} {unit} Light rain at {time}" : "{temperature} {unit} drobný déšť v {time}", + "{temperature} {unit} Rain at {time}" : "{temperature} {unit} déšť v {time}", + "{temperature} {unit} Heavy rain at {time}" : "{temperature} {unit} hustý déšť {time}", + "{temperature} {unit} Rain showers at {time}" : "{temperature} {unit} přeháňky v {time}", + "{temperature} {unit} Light rain showers at {time}" : "{temperature} {unit} lehké přeháňky v {time}", + "{temperature} {unit} Heavy rain showers at {time}" : "{temperature} {unit} intenzivní přeháňky v {time}" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/weather_status/l10n/de.js b/apps/weather_status/l10n/de.js index 7d9339c2a8e..7faccc71046 100644 --- a/apps/weather_status/l10n/de.js +++ b/apps/weather_status/l10n/de.js @@ -6,7 +6,7 @@ OC.L10N.register( "Malformed JSON data." : "Fehlerhafte JSON-Daten.", "Error" : "Fehler", "Weather status" : "Wetterstatus", - "Weather status in your dashboard" : "Wetterstatus für Dein Dashboard", + "Weather status in your dashboard" : "Wetterstatus für dein Dashboard", "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Wetterstatus wird in die Dashboard-App integriert.\nDie Position des Benutzers kann automatisch bestimmt oder manuell definiert werden. Anschließend wird eine 6-Stunden-Vorhersage angezeigt.\nDieser Status kann auch an anderen Stellen wie in der Kalender-App integriert werden.", "Detect location" : "Standort ermitteln", "Set custom address" : "Benutzerdefinierte Adresse festlegen", diff --git a/apps/weather_status/l10n/de.json b/apps/weather_status/l10n/de.json index a950dc8d4d7..239d905de4b 100644 --- a/apps/weather_status/l10n/de.json +++ b/apps/weather_status/l10n/de.json @@ -4,7 +4,7 @@ "Malformed JSON data." : "Fehlerhafte JSON-Daten.", "Error" : "Fehler", "Weather status" : "Wetterstatus", - "Weather status in your dashboard" : "Wetterstatus für Dein Dashboard", + "Weather status in your dashboard" : "Wetterstatus für dein Dashboard", "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Wetterstatus wird in die Dashboard-App integriert.\nDie Position des Benutzers kann automatisch bestimmt oder manuell definiert werden. Anschließend wird eine 6-Stunden-Vorhersage angezeigt.\nDieser Status kann auch an anderen Stellen wie in der Kalender-App integriert werden.", "Detect location" : "Standort ermitteln", "Set custom address" : "Benutzerdefinierte Adresse festlegen", diff --git a/apps/weather_status/l10n/mk.js b/apps/weather_status/l10n/mk.js index f59fa837c16..4ed7e8356c6 100644 --- a/apps/weather_status/l10n/mk.js +++ b/apps/weather_status/l10n/mk.js @@ -11,6 +11,28 @@ OC.L10N.register( "Detect location" : "Детектирај локација", "Set custom address" : "Поставете адреса", "Favorites" : "Омилени", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} Ведро небо подоцна денеска", + "{temperature} {unit} clear sky" : "{temperature} {unit} Ведро небо", + "{temperature} {unit} cloudy later today" : "{temperature} {unit} Облачно подоцна денеска", + "{temperature} {unit} cloudy" : "{temperature} {unit} Облачно", + "{temperature} {unit} fair weather later today" : "{temperature} {unit} Убаво време подоцна денеска", + "{temperature} {unit} fair weather" : "{temperature} {unit} Убаво време", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Променливо облачно подоцна денеска", + "{temperature} {unit} partly cloudy" : "{temperature} {unit} Променливо облачно", + "{temperature} {unit} foggy later today" : "{temperature} {unit} Магливо подоцна денеска", + "{temperature} {unit} foggy" : "{temperature} {unit} Магливо", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Слаби врнежи од дожд подоцна денеска", + "{temperature} {unit} light rainfall" : "{temperature} {unit} Слаби врнежи", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} Врнежи од дожд подоцна денеска", + "{temperature} {unit} rainfall" : "{temperature} {unit} Врнежи од дожд", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Обилни врнежи од дожд подоцна денеска", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Обилни врнежи од дожд", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Врнежи од дожд подоцна денеска", + "{temperature} {unit} rainfall showers" : "{temperature} {unit} Врнежи од дожд", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Слаби врнежи од дожд подоцна денеска", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Слаби врнежи", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Обилни врнежи од дожд подоцна денеска", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Обилни врнежи од дожд", "More weather for {adr}" : "Повеќе информации за временската прогноза за {adr}", "Loading weather" : "Вчитување на временска прогноза", "Remove from favorites" : "Отстрани од фаворити", diff --git a/apps/weather_status/l10n/mk.json b/apps/weather_status/l10n/mk.json index e9217a1a6de..da962b2702e 100644 --- a/apps/weather_status/l10n/mk.json +++ b/apps/weather_status/l10n/mk.json @@ -9,6 +9,28 @@ "Detect location" : "Детектирај локација", "Set custom address" : "Поставете адреса", "Favorites" : "Омилени", + "{temperature} {unit} clear sky later today" : "{temperature} {unit} Ведро небо подоцна денеска", + "{temperature} {unit} clear sky" : "{temperature} {unit} Ведро небо", + "{temperature} {unit} cloudy later today" : "{temperature} {unit} Облачно подоцна денеска", + "{temperature} {unit} cloudy" : "{temperature} {unit} Облачно", + "{temperature} {unit} fair weather later today" : "{temperature} {unit} Убаво време подоцна денеска", + "{temperature} {unit} fair weather" : "{temperature} {unit} Убаво време", + "{temperature} {unit} partly cloudy later today" : "{temperature} {unit} Променливо облачно подоцна денеска", + "{temperature} {unit} partly cloudy" : "{temperature} {unit} Променливо облачно", + "{temperature} {unit} foggy later today" : "{temperature} {unit} Магливо подоцна денеска", + "{temperature} {unit} foggy" : "{temperature} {unit} Магливо", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} Слаби врнежи од дожд подоцна денеска", + "{temperature} {unit} light rainfall" : "{temperature} {unit} Слаби врнежи", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} Врнежи од дожд подоцна денеска", + "{temperature} {unit} rainfall" : "{temperature} {unit} Врнежи од дожд", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} Обилни врнежи од дожд подоцна денеска", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} Обилни врнежи од дожд", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} Врнежи од дожд подоцна денеска", + "{temperature} {unit} rainfall showers" : "{temperature} {unit} Врнежи од дожд", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} Слаби врнежи од дожд подоцна денеска", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit} Слаби врнежи", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} Обилни врнежи од дожд подоцна денеска", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} Обилни врнежи од дожд", "More weather for {adr}" : "Повеќе информации за временската прогноза за {adr}", "Loading weather" : "Вчитување на временска прогноза", "Remove from favorites" : "Отстрани од фаворити", diff --git a/apps/weather_status/l10n/zh_CN.js b/apps/weather_status/l10n/zh_CN.js index 2e91ad2b902..9be5f51a71d 100644 --- a/apps/weather_status/l10n/zh_CN.js +++ b/apps/weather_status/l10n/zh_CN.js @@ -7,7 +7,7 @@ OC.L10N.register( "Error" : "错误", "Weather status" : "天气状况", "Weather status in your dashboard" : "仪表盘中的天气状况", - "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "仪表盘仪表盘应用程序中集成了天气状况。\n用户的位置可以自动确定或手动定义。然后将会显示 6 小时的预报。\n此状况也可以集成到其他地方,例如日历应用。", + "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "仪表盘应用程序中集成的天气状况。\n用户可以自动或手动确定位置。然后会显示 6 小时的预报。\n此状况也可以集成到其他地方,例如日历应用。", "Detect location" : "检测地点", "Set custom address" : "自定义地址", "Favorites" : "收藏", diff --git a/apps/weather_status/l10n/zh_CN.json b/apps/weather_status/l10n/zh_CN.json index d2bc40e4cd4..f408a11b5aa 100644 --- a/apps/weather_status/l10n/zh_CN.json +++ b/apps/weather_status/l10n/zh_CN.json @@ -5,7 +5,7 @@ "Error" : "错误", "Weather status" : "天气状况", "Weather status in your dashboard" : "仪表盘中的天气状况", - "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "仪表盘仪表盘应用程序中集成了天气状况。\n用户的位置可以自动确定或手动定义。然后将会显示 6 小时的预报。\n此状况也可以集成到其他地方,例如日历应用。", + "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "仪表盘应用程序中集成的天气状况。\n用户可以自动或手动确定位置。然后会显示 6 小时的预报。\n此状况也可以集成到其他地方,例如日历应用。", "Detect location" : "检测地点", "Set custom address" : "自定义地址", "Favorites" : "收藏", diff --git a/apps/weather_status/src/App.vue b/apps/weather_status/src/App.vue index 89482f61124..e287df4f914 100644 --- a/apps/weather_status/src/App.vue +++ b/apps/weather_status/src/App.vue @@ -22,51 +22,51 @@ <template> <li :class="{ inline }"> <div id="weather-status-menu-item"> - <Actions class="weather-status-menu-item__subheader" + <NcActions class="weather-status-menu-item__subheader" :default-icon="weatherIcon" :menu-title="currentWeatherMessage"> - <ActionText v-if="gotWeather" + <NcActionText v-if="gotWeather" :icon="futureWeatherIcon"> {{ forecastMessage }} - </ActionText> - <ActionLink v-if="gotWeather" + </NcActionText> + <NcActionLink v-if="gotWeather" icon="icon-address" target="_blank" :href="weatherLinkTarget" :close-after-click="true"> {{ locationText }} - </ActionLink> - <ActionButton v-if="gotWeather" + </NcActionLink> + <NcActionButton v-if="gotWeather" :icon="addRemoveFavoriteIcon" @click="onAddRemoveFavoriteClick"> {{ addRemoveFavoriteText }} - </ActionButton> - <ActionSeparator v-if="address && !errorMessage" /> - <ActionButton icon="icon-crosshair" + </NcActionButton> + <NcActionSeparator v-if="address && !errorMessage" /> + <NcActionButton icon="icon-crosshair" :close-after-click="true" @click="onBrowserLocationClick"> {{ t('weather_status', 'Detect location') }} - </ActionButton> - <ActionInput ref="addressInput" + </NcActionButton> + <NcActionInput ref="addressInput" :disabled="false" icon="icon-rename" type="text" value="" @submit="onAddressSubmit"> {{ t('weather_status', 'Set custom address') }} - </ActionInput> - <ActionButton v-show="favorites.length > 0" + </NcActionInput> + <NcActionButton v-show="favorites.length > 0" :icon="toggleFavoritesIcon" @click="showFavorites = !showFavorites"> {{ t('weather_status', 'Favorites') }} - </ActionButton> - <ActionButton v-for="f in displayedFavorites" + </NcActionButton> + <NcActionButton v-for="f in displayedFavorites" :key="f" icon="icon-starred" @click="onFavoriteClick($event, f)"> {{ f }} - </ActionButton> - </Actions> + </NcActionButton> + </NcActions> </div> </li> </template> @@ -75,12 +75,12 @@ import { showError } from '@nextcloud/dialogs' import moment from '@nextcloud/moment' import { getLocale } from '@nextcloud/l10n' -import Actions from '@nextcloud/vue/dist/Components/Actions' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import ActionInput from '@nextcloud/vue/dist/Components/ActionInput' -import ActionLink from '@nextcloud/vue/dist/Components/ActionLink' -import ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator' -import ActionText from '@nextcloud/vue/dist/Components/ActionText' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput' +import NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink' +import NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator' +import NcActionText from '@nextcloud/vue/dist/Components/NcActionText' import * as network from './services/weatherStatusService' const MODE_BROWSER_LOCATION = 1 @@ -193,7 +193,12 @@ const weatherOptions = { export default { name: 'App', components: { - Actions, ActionButton, ActionInput, ActionLink, ActionSeparator, ActionText, + NcActions, + NcActionButton, + NcActionInput, + NcActionLink, + NcActionSeparator, + NcActionText, }, props: { inline: { @@ -499,9 +504,9 @@ export default { if (loading) { return 'icon-loading-small' } else { - return weatherCode && weatherCode in weatherOptions + return 'icon-weather ' + (weatherCode && weatherCode in weatherOptions ? weatherOptions[weatherCode].icon - : 'icon-fair-day' + : 'icon-fair-day') } }, getWeatherMessage(weatherCode, temperature, later = false) { @@ -518,6 +523,9 @@ export default { </script> <style lang="scss"> +.icon-weather { + background-size: 16px; +} .icon-weather-status { background-image: url('./../img/app-dark.svg'); } diff --git a/apps/workflowengine/composer/composer/installed.php b/apps/workflowengine/composer/composer/installed.php index 5440719fa40..c54b7ff5437 100644 --- a/apps/workflowengine/composer/composer/installed.php +++ b/apps/workflowengine/composer/composer/installed.php @@ -1,22 +1,22 @@ <?php return array( 'root' => array( + 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', - 'name' => '__root__', 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '7669331be09dd3cb848182ae8edc2408802a4fb4', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'c6429e6cd19c57582364338362e543580821cf99', 'dev_requirement' => false, ), ), diff --git a/apps/workflowengine/l10n/de.js b/apps/workflowengine/l10n/de.js index e2513515921..043d83d51f5 100644 --- a/apps/workflowengine/l10n/de.js +++ b/apps/workflowengine/l10n/de.js @@ -54,6 +54,7 @@ OC.L10N.register( "Images" : "Bilder", "Office documents" : "Office Dokumente", "PDF documents" : "PDF-Dokumente", + "Custom MIME type" : "Benutzerdefinierter MIME Typ", "Custom mimetype" : "Benutzerdefinierter Mime-Typ", "Select a tag" : "Schlagwort auswählen", "No results" : "Keine Ergebnisse", @@ -81,7 +82,7 @@ OC.L10N.register( "Active" : "Aktiv", "Save" : "Speichern", "Available flows" : "Verfügbare Abläufe", - "For details on how to write your own flow, check out the development documentation." : "Informationen wie eigene Abläufe erstellt werden, findest Du in der Entwickler-Dokumentation.", + "For details on how to write your own flow, check out the development documentation." : "Informationen wie eigene Abläufe erstellt werden, findest du in der Entwickler-Dokumentation.", "More flows" : "Weitere Abläufe", "Browse the App Store" : "App-Store durchsuchen", "Show less" : "Weniger anzeigen", diff --git a/apps/workflowengine/l10n/de.json b/apps/workflowengine/l10n/de.json index 9e1d2211ae8..73ad1339704 100644 --- a/apps/workflowengine/l10n/de.json +++ b/apps/workflowengine/l10n/de.json @@ -52,6 +52,7 @@ "Images" : "Bilder", "Office documents" : "Office Dokumente", "PDF documents" : "PDF-Dokumente", + "Custom MIME type" : "Benutzerdefinierter MIME Typ", "Custom mimetype" : "Benutzerdefinierter Mime-Typ", "Select a tag" : "Schlagwort auswählen", "No results" : "Keine Ergebnisse", @@ -79,7 +80,7 @@ "Active" : "Aktiv", "Save" : "Speichern", "Available flows" : "Verfügbare Abläufe", - "For details on how to write your own flow, check out the development documentation." : "Informationen wie eigene Abläufe erstellt werden, findest Du in der Entwickler-Dokumentation.", + "For details on how to write your own flow, check out the development documentation." : "Informationen wie eigene Abläufe erstellt werden, findest du in der Entwickler-Dokumentation.", "More flows" : "Weitere Abläufe", "Browse the App Store" : "App-Store durchsuchen", "Show less" : "Weniger anzeigen", diff --git a/apps/workflowengine/l10n/es_SV.js b/apps/workflowengine/l10n/es_SV.js index 213682ef075..69840e65583 100644 --- a/apps/workflowengine/l10n/es_SV.js +++ b/apps/workflowengine/l10n/es_SV.js @@ -60,4 +60,4 @@ OC.L10N.register( "is member of" : "es miembro de", "is not member of" : "no es miembro de" }, -"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); +"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/workflowengine/l10n/es_SV.json b/apps/workflowengine/l10n/es_SV.json index 8f5f607dfe6..f86304753b3 100644 --- a/apps/workflowengine/l10n/es_SV.json +++ b/apps/workflowengine/l10n/es_SV.json @@ -57,5 +57,5 @@ "User group membership" : "Membresia al grupo de usuarios", "is member of" : "es miembro de", "is not member of" : "no es miembro de" -},"pluralForm" :"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" +},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/workflowengine/l10n/fr.js b/apps/workflowengine/l10n/fr.js index aa6eddbe531..b4ad395766e 100644 --- a/apps/workflowengine/l10n/fr.js +++ b/apps/workflowengine/l10n/fr.js @@ -54,6 +54,7 @@ OC.L10N.register( "Images" : "Images", "Office documents" : "Documents Office", "PDF documents" : "Documents PDF", + "Custom MIME type" : "Type MIME personnalisé", "Custom mimetype" : "mimetype personnalisé", "Select a tag" : "Choisir une étiquette", "No results" : "Aucun résultat", diff --git a/apps/workflowengine/l10n/fr.json b/apps/workflowengine/l10n/fr.json index 45cafd242e2..d314995394c 100644 --- a/apps/workflowengine/l10n/fr.json +++ b/apps/workflowengine/l10n/fr.json @@ -52,6 +52,7 @@ "Images" : "Images", "Office documents" : "Documents Office", "PDF documents" : "Documents PDF", + "Custom MIME type" : "Type MIME personnalisé", "Custom mimetype" : "mimetype personnalisé", "Select a tag" : "Choisir une étiquette", "No results" : "Aucun résultat", diff --git a/apps/workflowengine/src/components/Check.vue b/apps/workflowengine/src/components/Check.vue index d1c18f9d8a0..459c97a0d05 100644 --- a/apps/workflowengine/src/components/Check.vue +++ b/apps/workflowengine/src/components/Check.vue @@ -1,6 +1,6 @@ <template> <div v-click-outside="hideDelete" class="check" @click="showDelete"> - <Multiselect ref="checkSelector" + <NcMultiselect ref="checkSelector" v-model="currentOption" :options="options" label="name" @@ -8,7 +8,7 @@ :allow-empty="false" :placeholder="t('workflowengine', 'Select a filter')" @input="updateCheck" /> - <Multiselect v-model="currentOperator" + <NcMultiselect v-model="currentOperator" :disabled="!currentOption" :options="operators" class="comparator" @@ -34,24 +34,24 @@ :placeholder="valuePlaceholder" class="option" @input="updateCheck"> - <Actions v-if="deleteVisible || !currentOption"> - <ActionButton icon="icon-close" @click="$emit('remove')" /> - </Actions> + <NcActions v-if="deleteVisible || !currentOption"> + <NcActionButton icon="icon-close" @click="$emit('remove')" /> + </NcActions> </div> </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' -import Actions from '@nextcloud/vue/dist/Components/Actions' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' import ClickOutside from 'vue-click-outside' export default { name: 'Check', components: { - ActionButton, - Actions, - Multiselect, + NcActionButton, + NcActions, + NcMultiselect, }, directives: { ClickOutside, @@ -191,6 +191,6 @@ export default { margin-bottom: -5px; } .invalid { - border: 1px solid var(--color-error) !important; + border-color: var(--color-error) !important; } </style> diff --git a/apps/workflowengine/src/components/Checks/FileMimeType.vue b/apps/workflowengine/src/components/Checks/FileMimeType.vue index 1b227fb549a..86f1a6b8cb1 100644 --- a/apps/workflowengine/src/components/Checks/FileMimeType.vue +++ b/apps/workflowengine/src/components/Checks/FileMimeType.vue @@ -22,7 +22,7 @@ <template> <div> - <Multiselect :value="currentValue" + <NcMultiselect :value="currentValue" :placeholder="t('workflowengine', 'Select a file type')" label="label" track-by="pattern" @@ -32,15 +32,21 @@ @input="setValue"> <template slot="singleLabel" slot-scope="props"> <span v-if="props.option.icon" class="option__icon" :class="props.option.icon" /> - <img v-else :src="props.option.iconUrl"> + <img v-else + class="option__icon-img" + :src="props.option.iconUrl" + alt=""> <span class="option__title option__title_single">{{ props.option.label }}</span> </template> <template slot="option" slot-scope="props"> <span v-if="props.option.icon" class="option__icon" :class="props.option.icon" /> - <img v-else :src="props.option.iconUrl"> + <img v-else + class="option__icon-img" + :src="props.option.iconUrl" + alt=""> <span class="option__title">{{ props.option.label }}</span> </template> - </Multiselect> + </NcMultiselect> <input v-if="!isPredefined" type="text" :value="currentValue.pattern" @@ -50,14 +56,14 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import valueMixin from './../../mixins/valueMixin' import { imagePath } from '@nextcloud/router' export default { name: 'FileMimeType', components: { - Multiselect, + NcMultiselect, }, mixins: [ valueMixin, @@ -137,7 +143,7 @@ export default { }, } </script> -<style scoped> +<style scoped lang="scss"> .multiselect, input[type='text'] { width: 100%; } @@ -148,4 +154,14 @@ export default { overflow: hidden; text-overflow: ellipsis; } + + .option__icon { + display: inline-block; + min-width: 30px; + background-position: left; + } + + .option__icon-img { + margin-right: 14px; + } </style> diff --git a/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue b/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue index c5419f69c3f..780d66fd45e 100644 --- a/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue +++ b/apps/workflowengine/src/components/Checks/MultiselectTag/MultiselectTag.vue @@ -21,7 +21,7 @@ --> <template> - <Multiselect v-model="inputValObjects" + <NcMultiselect v-model="inputValObjects" :options="tags" :options-limit="5" :placeholder="label" @@ -37,18 +37,18 @@ <template #option="scope"> {{ tagLabel(scope.option) }} </template> - </multiselect> + </NcMultiselect> </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import { searchTags } from './api' let uuid = 0 export default { name: 'MultiselectTag', components: { - Multiselect, + NcMultiselect, }, props: { label: { diff --git a/apps/workflowengine/src/components/Checks/RequestTime.vue b/apps/workflowengine/src/components/Checks/RequestTime.vue index 6723ba52f93..d8bfaff63a5 100644 --- a/apps/workflowengine/src/components/Checks/RequestTime.vue +++ b/apps/workflowengine/src/components/Checks/RequestTime.vue @@ -12,7 +12,7 @@ <p v-if="!valid" class="invalid-hint"> {{ t('workflowengine', 'Please enter a valid time span') }} </p> - <Multiselect v-show="valid" + <NcMultiselect v-show="valid" v-model="newValue.timezone" :options="timezones" @input="update" /> @@ -20,7 +20,7 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import moment from 'moment-timezone' import valueMixin from '../../mixins/valueMixin' @@ -28,7 +28,7 @@ const zones = moment.tz.names() export default { name: 'RequestTime', components: { - Multiselect, + NcMultiselect, }, mixins: [ valueMixin, diff --git a/apps/workflowengine/src/components/Checks/RequestURL.vue b/apps/workflowengine/src/components/Checks/RequestURL.vue index c9b241eddfa..1a5b5cc7f87 100644 --- a/apps/workflowengine/src/components/Checks/RequestURL.vue +++ b/apps/workflowengine/src/components/Checks/RequestURL.vue @@ -22,7 +22,7 @@ <template> <div> - <Multiselect :value="currentValue" + <NcMultiselect :value="currentValue" :placeholder="t('workflowengine', 'Select a request URL')" label="label" track-by="pattern" @@ -40,7 +40,7 @@ <span class="option__icon" :class="props.option.icon" /> <span class="option__title">{{ props.option.label }} {{ props.option.$groupLabel }}</span> </template> - </Multiselect> + </NcMultiselect> <input v-if="!isPredefined" type="text" :value="currentValue.pattern" @@ -50,13 +50,13 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import valueMixin from '../../mixins/valueMixin' export default { name: 'RequestURL', components: { - Multiselect, + NcMultiselect, }, mixins: [ valueMixin, @@ -136,8 +136,14 @@ export default { }, } </script> -<style scoped> +<style scoped lang="scss"> .multiselect, input[type='text'] { width: 100%; } + + .option__icon { + display: inline-block; + min-width: 30px; + background-position: left; + } </style> diff --git a/apps/workflowengine/src/components/Checks/RequestUserAgent.vue b/apps/workflowengine/src/components/Checks/RequestUserAgent.vue index 2bab6d7fed5..c4a5265ac99 100644 --- a/apps/workflowengine/src/components/Checks/RequestUserAgent.vue +++ b/apps/workflowengine/src/components/Checks/RequestUserAgent.vue @@ -22,7 +22,7 @@ <template> <div> - <Multiselect :value="currentValue" + <NcMultiselect :value="currentValue" :placeholder="t('workflowengine', 'Select a user agent')" label="label" track-by="pattern" @@ -43,7 +43,7 @@ <!-- eslint-disable-next-line vue/no-v-html --> <span v-else class="option__title" v-html="props.option.label" /> </template> - </Multiselect> + </NcMultiselect> <input v-if="!isPredefined" type="text" :value="currentValue.pattern" @@ -52,13 +52,13 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import valueMixin from '../../mixins/valueMixin' export default { name: 'RequestUserAgent', components: { - Multiselect, + NcMultiselect, }, mixins: [ valueMixin, diff --git a/apps/workflowengine/src/components/Checks/RequestUserGroup.vue b/apps/workflowengine/src/components/Checks/RequestUserGroup.vue index 8fba0fe9211..ba55d88c81c 100644 --- a/apps/workflowengine/src/components/Checks/RequestUserGroup.vue +++ b/apps/workflowengine/src/components/Checks/RequestUserGroup.vue @@ -22,7 +22,7 @@ <template> <div> - <Multiselect :value="currentValue" + <NcMultiselect :value="currentValue" :loading="status.isLoading && groups.length === 0" :options="groups" :multiple="false" @@ -34,7 +34,7 @@ </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import axios from '@nextcloud/axios' import { generateOcsUrl } from '@nextcloud/router' @@ -46,7 +46,7 @@ const status = { export default { name: 'RequestUserGroup', components: { - Multiselect, + NcMultiselect, }, props: { value: { diff --git a/apps/workflowengine/src/components/Event.vue b/apps/workflowengine/src/components/Event.vue index 5f4b8dd87b0..be0030095e1 100644 --- a/apps/workflowengine/src/components/Event.vue +++ b/apps/workflowengine/src/components/Event.vue @@ -1,10 +1,10 @@ <template> <div class="event"> <div v-if="operation.isComplex && operation.fixedEntity !== ''" class="isComplex"> - <img class="option__icon" :src="entity.icon"> + <img class="option__icon" :src="entity.icon" alt=""> <span class="option__title option__title_single">{{ operation.triggerHint }}</span> </div> - <Multiselect v-else + <NcMultiselect v-else :value="currentEvent" :options="allEvents" track-by="id" @@ -14,26 +14,26 @@ @input="updateEvent"> <template slot="selection" slot-scope="{ values, isOpen }"> <div v-if="values.length && !isOpen" class="eventlist"> - <img class="option__icon" :src="values[0].entity.icon"> + <img class="option__icon" :src="values[0].entity.icon" alt=""> <span v-for="(value, index) in values" :key="value.id" class="text option__title option__title_single">{{ value.displayName }} <span v-if="index+1 < values.length">, </span></span> </div> </template> <template slot="option" slot-scope="props"> - <img class="option__icon" :src="props.option.entity.icon"> + <img class="option__icon" :src="props.option.entity.icon" alt=""> <span class="option__title">{{ props.option.displayName }}</span> </template> - </Multiselect> + </NcMultiselect> </div> </template> <script> -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect' import { showWarning } from '@nextcloud/dialogs' export default { name: 'Event', components: { - Multiselect, + NcMultiselect, }, props: { rule: { @@ -131,6 +131,7 @@ export default { .option__icon { width: 16px; height: 16px; + filter: var(--background-invert-if-dark); } .eventlist img, diff --git a/apps/workflowengine/src/components/Operation.vue b/apps/workflowengine/src/components/Operation.vue index a148ef3097b..64875605b0b 100644 --- a/apps/workflowengine/src/components/Operation.vue +++ b/apps/workflowengine/src/components/Operation.vue @@ -4,9 +4,9 @@ <div class="actions__item__description"> <h3>{{ operation.name }}</h3> <small>{{ operation.description }}</small> - <Button v-if="colored"> + <NcButton v-if="colored"> {{ t('workflowengine', 'Add new flow') }} - </Button> + </NcButton> </div> <div class="actions__item_options"> <slot /> @@ -15,12 +15,12 @@ </template> <script> -import Button from '@nextcloud/vue/dist/Components/Button' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' export default { name: 'Operation', components: { - Button, + NcButton, }, props: { operation: { diff --git a/apps/workflowengine/src/components/Rule.vue b/apps/workflowengine/src/components/Rule.vue index 3ee01680819..4c5162da926 100644 --- a/apps/workflowengine/src/components/Rule.vue +++ b/apps/workflowengine/src/components/Rule.vue @@ -31,19 +31,19 @@ @input="updateOperation" /> </Operation> <div class="buttons"> - <Button v-if="rule.id < -1 || dirty" @click="cancelRule"> + <NcButton v-if="rule.id < -1 || dirty" @click="cancelRule"> {{ t('workflowengine', 'Cancel') }} - </Button> - <Button v-else-if="!dirty" @click="deleteRule"> + </NcButton> + <NcButton v-else-if="!dirty" @click="deleteRule"> {{ t('workflowengine', 'Delete') }} - </Button> - <Button :type="ruleStatus.type" + </NcButton> + <NcButton :type="ruleStatus.type" @click="saveRule"> <template #icon> <component :is="ruleStatus.icon" :size="20" /> </template> {{ ruleStatus.title }} - </Button> + </NcButton> </div> <p v-if="error" class="error-message"> {{ error }} @@ -54,9 +54,9 @@ <script> import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' -import Actions from '@nextcloud/vue/dist/Components/Actions' -import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcActions from '@nextcloud/vue/dist/Components/NcActions' +import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' import ArrowRight from 'vue-material-design-icons/ArrowRight.vue' import CheckMark from 'vue-material-design-icons/Check.vue' import Close from 'vue-material-design-icons/Close.vue' @@ -68,7 +68,15 @@ import Operation from './Operation' export default { name: 'Rule', components: { - Operation, Check, Event, Actions, ActionButton, Button, ArrowRight, CheckMark, Close, + ArrowRight, + Check, + CheckMark, + Close, + Event, + NcActionButton, + NcActions, + NcButton, + Operation, }, directives: { Tooltip, diff --git a/apps/workflowengine/src/components/Workflow.vue b/apps/workflowengine/src/components/Workflow.vue index f81a53563b5..bc33d03014d 100644 --- a/apps/workflowengine/src/components/Workflow.vue +++ b/apps/workflowengine/src/components/Workflow.vue @@ -1,8 +1,7 @@ <template> <div id="workflowengine"> - <SettingsSection :title="t('workflowengine', 'Available flows')" + <NcSettingsSection :title="t('workflowengine', 'Available flows')" :doc-url="workflowDocUrl"> - <p v-if="scope === 0" class="settings-hint"> <a href="https://nextcloud.com/developer/">{{ t('workflowengine', 'For details on how to write your own flow, check out the development documentation.') }}</a> </p> @@ -26,13 +25,13 @@ </transition-group> <div v-if="hasMoreOperations" class="actions__more"> - <Button @click="showMoreOperations = !showMoreOperations"> + <NcButton @click="showMoreOperations = !showMoreOperations"> <template #icon> <MenuUp v-if="showMoreOperations" :size="20" /> <MenuDown v-else :size="20" /> </template> {{ showMoreOperations ? t('workflowengine', 'Show less') : t('workflowengine', 'Show more') }} - </Button> + </NcButton> </div> <h2 v-if="scope === 0" class="configured-flows"> @@ -41,7 +40,7 @@ <h2 v-else class="configured-flows"> {{ t('workflowengine', 'Your flows') }} </h2> - </SettingsSection> + </NcSettingsSection> <transition-group v-if="rules.length > 0" name="slide"> <Rule v-for="rule in rules" :key="rule.id" :rule="rule" /> @@ -52,8 +51,8 @@ <script> import Rule from './Rule' import Operation from './Operation' -import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' -import Button from '@nextcloud/vue/dist/Components/Button' +import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection' +import NcButton from '@nextcloud/vue/dist/Components/NcButton' import { mapGetters, mapState } from 'vuex' import { generateUrl } from '@nextcloud/router' import { loadState } from '@nextcloud/initial-state' @@ -65,12 +64,12 @@ const ACTION_LIMIT = 3 export default { name: 'Workflow', components: { - Button, + NcButton, MenuDown, MenuUp, Operation, Rule, - SettingsSection, + NcSettingsSection, }, data() { return { diff --git a/apps/workflowengine/src/styles/operation.scss b/apps/workflowengine/src/styles/operation.scss index d936c64e2de..860258f2851 100644 --- a/apps/workflowengine/src/styles/operation.scss +++ b/apps/workflowengine/src/styles/operation.scss @@ -68,11 +68,11 @@ small { margin: 0; margin-right: 10px; &:not(.icon-invert) { - filter: invert(1); + filter: var(--background-invert-if-bright); } } } .colored .icon-invert { - filter: invert(1); + filter: var(--background-invert-if-bright); } |