diff options
73 files changed, 1604 insertions, 626 deletions
@@ -5,6 +5,7 @@ tmp/ node_modules/ .vscode/ +.idea/ .build/* packages/kadira-flow-router/ packages/meteor-useraccounts-core/ diff --git a/.meteor/packages b/.meteor/packages index 7c04f207..7e67c10d 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -79,3 +79,4 @@ shell-server@0.2.3 simple:rest-accounts-password useraccounts:core email@1.2.3 +horka:swipebox diff --git a/.meteor/versions b/.meteor/versions index 689362ea..38ee1e3f 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -58,6 +58,7 @@ es5-shim@4.6.15 fastclick@1.0.13 fortawesome:fontawesome@4.7.0 geojson-utils@1.0.10 +horka:swipebox@1.0.2 hot-code-push@1.0.4 html-tools@1.0.11 htmljs@1.0.11 @@ -39,7 +39,7 @@ host = https://www.transifex.com # tap:i18n requires us to use `-` separator in the language identifiers whereas # Transifex uses a `_` separator, without an option to customize it on one side # or the other, so we need to do a Manual mapping. -lang_map = en_GB:en-GB, fa_IR:fa, fi_FI:fi, hu_HU:hu, id_ID:id, no:nb, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW +lang_map = en_GB:en-GB, es_AR:es-AR, fa_IR:fa, fi_FI:fi, hu_HU:hu, id_ID:id, no:nb, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW [wekan.application] file_filter = i18n/<lang>.i18n.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 91b014e1..5ce8e144 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,62 @@ +# Upcoming Wekan release + +This release adds the following new features: + +* [Markdown in card/minicard/checlist titles and checklist items. Next line: Shift+Enter. Submit: Enter.](https://github.com/wekan/wekan/pull/1334); +* [User Admin to Admin Panel: List users. Change: is user admin, name, fullname, email address, is user active. Not changing password yet.](https://github.com/wekan/wekan/pull/1325); +* [REST API better error output](https://github.com/wekan/wekan/pull/1323). + +and fixes the following bugs: + +* [Emoji detection breaks MAC addresses](https://github.com/wekan/wekan/issues/1248); +* [Codeblocks should not be scanned for emoji](https://github.com/wekan/wekan/issues/643); +* [Whitespace trimming breaks Markdown code block indentation](https://github.com/wekan/wekan/issues/1288): +* [Helper to list boards for user](https://github.com/wekan/wekan/pull/1327). + +Thanks to Github users brooksbecton, milesibastos, soohwa, thuanpq and xet7 for their contributions. + +# v0.54 2017-11-02 Wekan release + +This release adds the following new features: + +* [Soft WIP Limit](https://github.com/wekan/wekan/pull/1319). + +Thanks to GitHub users amadilsons and xet7 for their contributions. + +# v0.53 2017-11-02 Wekan release + +(This was canceled, it had some missing version numbers). + +# v0.52 2017-10-31 Wekan release + +This release adds the following new features: + +* [Permit editing WIP limit](https://github.com/wekan/wekan/pull/1312); +* [Image attachment resize on smaller screens and swipebox](https://github.com/wekan/wekan/pull/1315); +* [Add iPhone favicon for Wekan](https://github.com/wekan/wekan/issues/1317). + +and fixes the following bugs: + +* [Members do not get included on board import from Wekan](https://github.com/wekan/wekan/pull/1316). + +Thanks to GitHub users brooksbecton, guillaumebriday, nztqa, ocdtrekkie and Tentoe for their contributions. + +# v0.51 2017-10-25 Wekan release + +This release adds the following new features: + +* [REST API: Disable and enable user login. Take ownership boards of a user. List boards of user.](https://github.com/wekan/wekan/pull/1296); +* [Add translation: Spanish of Argentina](https://github.com/wekan/wekan/commit/b105f0e2e72c49a2f1ba3f6c87532a5418192386); +* [Add more languages to Roboto font](https://github.com/wekan/wekan/issues/1299). + +and fixes the following bugs: + +* [Segfault on Alpine Linux](https://github.com/wekan/wekan/issues/1303); +* [Change invitation link from sign-in to sign-up](https://github.com/wekan/wekan/issues/1300); +* [User with comment only permission can add cards](https://github.com/wekan/wekan/issues/1301). + +Thanks to GitHub users chromas-cro, soohwa, wenerme and xet7 for their contributions. + # v0.50 2017-10-10 Wekan release This release fixes the following bugs: @@ -12,7 +12,8 @@ ARG ARCHITECTURE ARG SRC_PATH # Set the environment variables (defaults where required) -ENV BUILD_DEPS="wget curl bzip2 build-essential python git ca-certificates gcc-4.9" +# paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303 +ENV BUILD_DEPS="wget curl bzip2 build-essential python git ca-certificates gcc-4.9 paxctl" ENV GOSU_VERSION=1.10 ENV NODE_VERSION ${NODE_VERSION:-v4.8.4} ENV METEOR_RELEASE ${METEOR_RELEASE:-1.4.4.1} @@ -78,6 +79,9 @@ RUN \ ln -s /opt/nodejs/bin/node /usr/bin/node && \ ln -s /opt/nodejs/bin/npm /usr/bin/npm && \ \ + # paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303 + paxctl -mC `which node` && \ + \ # Install Node dependencies npm install -g npm@${NPM_VERSION} && \ npm install -g node-gyp && \ diff --git a/client/components/cards/attachments.jade b/client/components/cards/attachments.jade index e35b364a..c8442691 100644 --- a/client/components/cards/attachments.jade +++ b/client/components/cards/attachments.jade @@ -21,11 +21,11 @@ template(name="attachmentDeletePopup") template(name="attachmentsGalery") .attachments-galery each attachments - a.attachment-item.js-open-viewer(title="{{_ 'added'}} {{ moment uploadedAt }}") + a.attachment-item.swipebox(href="{{url}}" title="{{name}}") .attachment-thumbnail if isUploaded if isImage - img.attachment-thumbnail-img.js-preview-image(src="{{url}}") + img.attachment-thumbnail-img(src="{{url}}") else span.attachment-thumbnail-ext= extension else diff --git a/client/components/cards/attachments.js b/client/components/cards/attachments.js index 95cb9f55..36e8a5ec 100644 --- a/client/components/cards/attachments.js +++ b/client/components/cards/attachments.js @@ -11,9 +11,6 @@ Template.attachmentsGalery.events({ 'click .js-download'(event) { event.stopPropagation(); }, - 'click .js-open-viewer'() { - // XXX Not implemented! - }, 'click .js-add-cover'() { Cards.findOne(this.cardId).setCover(this._id); }, diff --git a/client/components/cards/attachments.styl b/client/components/cards/attachments.styl index 9a5d0645..4a22fd8a 100644 --- a/client/components/cards/attachments.styl +++ b/client/components/cards/attachments.styl @@ -58,7 +58,28 @@ .preview-clipboard-image width: 280px + max-width: 100%; height: 200px display: block border: 1px solid black box-shadow: 0 1px 2px rgba(0,0,0,.2) + +@media screen and (max-width: 800px) + .attachments-galery + flex-direction + row + .attachment-item + width: 50% - 2% + + .attachment-thumbnail + height: 130px + .attachment-details + font-size: 1.1em + +@media screen and (max-width: 360px) + .attachments-galery + .attachment-item + width: 100% + + .attachment-thumbnail + height: 200px diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index ce93d6fd..b6572251 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -9,9 +9,10 @@ template(name="cardDetails") a.fa.fa-navicon.card-details-menu.js-open-card-details-menu h2.card-details-title.js-card-title( class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}") - = title - if isWatching - i.fa.fa-eye.card-details-watch + +viewer + = title + if isWatching + i.fa.fa-eye.card-details-watch if archived p.warning {{_ 'card-archived'}} diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 836a2353..3825bda8 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -197,7 +197,8 @@ Template.editCardTitleForm.onRendered(function () { Template.editCardTitleForm.events({ 'keydown .js-edit-card-title' (evt) { // If enter key was pressed, submit the data - if (evt.keyCode === 13) { + // Unless the shift key is also being pressed + if (evt.keyCode === 13 && !event.shiftKey) { $('.js-submit-edit-card-title-form').click(); } }, diff --git a/client/components/cards/checklists.jade b/client/components/cards/checklists.jade index 9ff52d8e..42fe3bd4 100644 --- a/client/components/cards/checklists.jade +++ b/client/components/cards/checklists.jade @@ -28,9 +28,13 @@ template(name="checklistDetail") span.checklist-stat(class="{{#if checklist.isFinished}}is-finished{{/if}}") {{checklist.finishedCount}}/{{checklist.itemCount}} if canModifyCard - h2.title.js-open-inlined-form.is-editable {{checklist.title}} + h2.title.js-open-inlined-form.is-editable + +viewer + = checklist.title else - h2.title {{checklist.title}} + h2.title + +viewer + = checklist.title +checklistItems(checklist = checklist) template(name="checklistDeleteDialog") @@ -83,7 +87,11 @@ template(name='itemDetail') .item.js-checklist-item if canModifyCard .check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}") - .item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}") {{item.title}} + .item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}") + +viewer + = item.title else .materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}") - .item-title(class="{{#if item.isFinished }}is-checked{{/if}}") {{item.title}} + .item-title(class="{{#if item.isFinished }}is-checked{{/if}}") + +viewer + = item.title diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 1cd77c9f..d3a946f0 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -146,8 +146,9 @@ BlazeComponent.extendComponent({ }, pressKey(event) { - //If user press enter key inside a form, submit it, so user doesn't have to leave keyboard to submit a form. - if (event.keyCode === 13) { + //If user press enter key inside a form, submit it + //Unless the user is also holding down the 'shift' key + if (event.keyCode === 13 && !event.shiftKey) { event.preventDefault(); const $form = $(event.currentTarget).closest('form'); $form.find('button[type=submit]').click(); diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade index 6fd83386..3e582b6f 100644 --- a/client/components/cards/minicard.jade +++ b/client/components/cards/minicard.jade @@ -6,7 +6,9 @@ template(name="minicard") .minicard-labels each labels .minicard-label(class="card-label-{{color}}" title="{{name}}") - .minicard-title= title + .minicard-title + +viewer + = title .dates if startAt .date diff --git a/client/components/lists/list.styl b/client/components/lists/list.styl index f426b243..b7bc33e8 100644 --- a/client/components/lists/list.styl +++ b/client/components/lists/list.styl @@ -79,6 +79,9 @@ .list-header-plus-icon color: #a6a6a6 + .highlight + color: #ce1414 + .list-body flex: 1 display: flex @@ -126,3 +129,9 @@ .wip-limit-error display: none + + .soft-wip-limit + margin-right: 8px + + div + float: left diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js index 22ed9e57..fe2f1630 100644 --- a/client/components/lists/listBody.js +++ b/client/components/lists/listBody.js @@ -102,8 +102,7 @@ BlazeComponent.extendComponent({ reachedWipLimit() { const list = Template.currentData(); - if( !list.getWipLimit() ) { return false; } - return list.getWipLimit('enabled') && list.getWipLimit('value') === list.cards().count(); + return !list.getWipLimit('soft') && list.getWipLimit('enabled') && list.getWipLimit('value') <= list.cards().count(); }, events() { diff --git a/client/components/lists/listHeader.jade b/client/components/lists/listHeader.jade index c1055008..4bbc023c 100644 --- a/client/components/lists/listHeader.jade +++ b/client/components/lists/listHeader.jade @@ -5,10 +5,12 @@ template(name="listHeader") else h2.list-header-name( class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}") - = title - if isWipLimitEnabled - span - | ({{cards.count}}/#{wipLimit.value}) + = title + if wipLimit.enabled + | ( + span(class="{{#if reachedWipLimit}}highlight{{/if}}") {{cards.count}} + |/#{wipLimit.value}) + if showCardsCountForList cards.count = cards.count span.lowercase @@ -17,9 +19,10 @@ template(name="listHeader") if isWatching i.list-header-watch-icon.fa.fa-eye div.list-header-menu - unless isWipLimitEnabled - a.js-add-card.fa.fa-plus.list-header-plus-icon - a.fa.fa-navicon.js-open-list-menu + unless currentUser.isCommentOnly + if canSeeAddCard + a.js-add-card.fa.fa-plus.list-header-plus-icon + a.fa.fa-navicon.js-open-list-menu template(name="editListTitleForm") .list-composer @@ -75,16 +78,20 @@ template(name="listDeletePopup") template(name="setWipLimitPopup") #js-wip-limit-edit - lable {{_ 'set-wip-limit-value'}} + label {{_ 'set-wip-limit-value'}} ul.pop-over-list li: a.js-enable-wip-limit {{_ 'enable-wip-limit'}} if isWipLimitEnabled i.fa.fa-check if isWipLimitEnabled p - input.wip-limit-value(type="number" value="{{ wipLimitValue }}" min="1" max="99" onkeydown="return false") + input.wip-limit-value(type="number" value="{{ wipLimitValue }}" min="1" max="99") input.wip-limit-apply(type="submit" value="{{_ 'apply'}}") input.wip-limit-error + p + .soft-wip-limit + .materialCheckBox(class="{{#if isWipLimitSoft}}is-checked{{/if}}") + label {{_ 'soft-wip-limit'}} template(name="wipLimitErrorPopup") .wip-limit-invalid diff --git a/client/components/lists/listHeader.js b/client/components/lists/listHeader.js index 9974c788..04dba683 100644 --- a/client/components/lists/listHeader.js +++ b/client/components/lists/listHeader.js @@ -1,4 +1,9 @@ BlazeComponent.extendComponent({ + canSeeAddCard() { + const list = Template.currentData(); + return !list.getWipLimit('enabled') || list.getWipLimit('soft') || !this.reachedWipLimit(); + }, + editTitle(evt) { evt.preventDefault(); const newTitle = this.childComponents('inlinedForm')[0].getValue().trim(); @@ -13,18 +18,15 @@ BlazeComponent.extendComponent({ return list.findWatcher(Meteor.userId()); }, - isWipLimitEnabled() { - const wipLimit = this.currentData().getWipLimit(); - if(!wipLimit) { - return 0; - } - return wipLimit.enabled && wipLimit.value > 0; - }, - limitToShowCardsCount() { return Meteor.user().getLimitToShowCardsCount(); }, + reachedWipLimit() { + const list = Template.currentData(); + return list.getWipLimit('enabled') && list.getWipLimit('value') <= list.cards().count(); + }, + showCardsCountForList(count) { return count > this.limitToShowCardsCount(); }, @@ -82,7 +84,7 @@ BlazeComponent.extendComponent({ const list = Template.currentData(); const limit = parseInt(Template.instance().$('.wip-limit-value').val(), 10); - if(limit < list.cards().count()){ + if(limit < list.cards().count() && !list.getWipLimit('soft')){ Template.instance().$('.wip-limit-error').click(); } else { Meteor.call('applyWipLimit', list._id, limit); @@ -90,15 +92,28 @@ BlazeComponent.extendComponent({ } }, + enableSoftLimit() { + const list = Template.currentData(); + + if(list.getWipLimit('soft') && list.getWipLimit('value') < list.cards().count()){ + list.setWipLimit(list.cards().count()); + } + Meteor.call('enableSoftLimit', Template.currentData()._id); + }, + enableWipLimit() { const list = Template.currentData(); // Prevent user from using previously stored wipLimit.value if it is less than the current number of cards in the list - if(list.getWipLimit() && !list.getWipLimit('enabled') && list.getWipLimit('value') < list.cards().count()){ + if(!list.getWipLimit('enabled') && list.getWipLimit('value') < list.cards().count()){ list.setWipLimit(list.cards().count()); } Meteor.call('enableWipLimit', list._id); }, + isWipLimitSoft() { + return Template.currentData().getWipLimit('soft'); + }, + isWipLimitEnabled() { return Template.currentData().getWipLimit('enabled'); }, @@ -112,6 +127,7 @@ BlazeComponent.extendComponent({ 'click .js-enable-wip-limit': this.enableWipLimit, 'click .wip-limit-apply': this.applyWipLimit, 'click .wip-limit-error': Popup.open('wipLimitError'), + 'click .materialCheckBox': this.enableSoftLimit, }]; }, }).register('setWipLimitPopup'); diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade index a51a35e0..4d76aabb 100644 --- a/client/components/main/layouts.jade +++ b/client/components/main/layouts.jade @@ -8,6 +8,7 @@ head difficult to do that cleanly with Blaze -- at least without adding extra packages. link(rel="shortcut icon" href="/wekan-favicon.png") + link(rel="apple-touch-icon" href="/wekan-favicon.png") link(rel="manifest" href="/wekan-manifest.json") template(name="userFormsLayout") diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade new file mode 100644 index 00000000..d6568720 --- /dev/null +++ b/client/components/settings/peopleBody.jade @@ -0,0 +1,89 @@ +template(name="people") + .setting-content + unless currentUser.isAdmin + | {{_ 'error-notAuthorized'}} + else + .content-title + span {{_ 'people'}} + .content-body + .side-menu + ul + li.active + a.js-setting-menu(data-id="people-setting") {{_ 'people'}} + .main-body + if loading.get + +spinner + else if people.get + +peopleGeneral + +template(name="peopleGeneral") + table + tbody + tr + th {{_ 'username'}} + th {{_ 'fullname'}} + th {{_ 'admin'}} + th {{_ 'email'}} + th {{_ 'verified'}} + th {{_ 'createdAt'}} + th {{_ 'active'}} + th + each user in peopleList + +peopleRow(userId=user._id) + +template(name="peopleRow") + tr + td.username {{ userData.username }} + td {{ userData.profile.fullname }} + td + if userData.isAdmin + | {{_ 'yes'}} + else + | {{_ 'no'}} + td {{ userData.emails.[0].address }} + td + if userData.emails.[0].verified + | {{_ 'yes'}} + else + | {{_ 'no'}} + td {{ moment userData.createdAt 'LLL' }} + td + if userData.loginDisabled + | {{_ 'no'}} + else + | {{_ 'yes'}} + td + a.edit-user + | {{_ 'edit'}} + +template(name="editUserPopup") + form + label.hide.userId(type="text" value=user._id) + label + | {{_ 'fullname'}} + input.js-profile-fullname(type="text" value=user.profile.fullname autofocus) + label + | {{_ 'username'}} + span.error.hide.username-taken + | {{_ 'error-username-taken'}} + input.js-profile-username(type="text" value=user.username) + label + | {{_ 'initials'}} + input.js-profile-initials(type="text" value=user.profile.initials) + label + | {{_ 'email'}} + span.error.hide.email-taken + | {{_ 'error-email-taken'}} + input.js-profile-email(type="email" value="{{user.emails.[0].address}}") + label + | {{_ 'admin'}} + select.select-role.js-profile-isadmin + option(value="false") {{_ 'no'}} + option(value="true" selected="{{user.isAdmin}}") {{_ 'yes'}} + label + | {{_ 'active'}} + select.select-active.js-profile-isactive + option(value="false") {{_ 'yes'}} + option(value="true" selected="{{user.loginDisabled}}") {{_ 'no'}} + + input.primary.wide(type="submit" value="{{_ 'save'}}") diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js new file mode 100644 index 00000000..d0da60d0 --- /dev/null +++ b/client/components/settings/peopleBody.js @@ -0,0 +1,156 @@ +const usersPerPage = 25; + +BlazeComponent.extendComponent({ + mixins() { + return [Mixins.InfiniteScrolling]; + }, + onCreated() { + this.error = new ReactiveVar(''); + this.loading = new ReactiveVar(false); + this.people = new ReactiveVar(true); + + this.page = new ReactiveVar(1); + this.loadNextPageLocked = false; + this.callFirstWith(null, 'resetNextPeak'); + this.autorun(() => { + const limit = this.page.get() * usersPerPage; + + this.subscribe('people', limit, () => { + this.loadNextPageLocked = false; + const nextPeakBefore = this.callFirstWith(null, 'getNextPeak'); + this.calculateNextPeak(); + const nextPeakAfter = this.callFirstWith(null, 'getNextPeak'); + if (nextPeakBefore === nextPeakAfter) { + this.callFirstWith(null, 'resetNextPeak'); + } + }); + }); + }, + loadNextPage() { + if (this.loadNextPageLocked === false) { + this.page.set(this.page.get() + 1); + this.loadNextPageLocked = true; + } + }, + calculateNextPeak() { + const element = this.find('.main-body'); + if (element) { + const altitude = element.scrollHeight; + this.callFirstWith(this, 'setNextPeak', altitude); + } + }, + reachNextPeak() { + this.loadNextPage(); + }, + setError(error) { + this.error.set(error); + }, + setLoading(w) { + this.loading.set(w); + }, + peopleList() { + return Users.find({}, { + fields: {_id: true}, + }); + }, +}).register('people'); + +Template.peopleRow.helpers({ + userData() { + const userCollection = this.esSearch ? ESSearchResults : Users; + return userCollection.findOne(this.userId); + }, +}); + +Template.editUserPopup.helpers({ + user() { + return Users.findOne(this.userId); + }, +}); + +BlazeComponent.extendComponent({ + onCreated() { + }, + user() { + return Users.findOne(this.userId); + }, + events() { + return [{ + 'click a.edit-user': Popup.open('editUser'), + }]; + }, +}).register('peopleRow'); + +Template.editUserPopup.events({ + submit(evt, tpl) { + evt.preventDefault(); + const user = Users.findOne(this.userId); + const fullname = tpl.find('.js-profile-fullname').value.trim(); + const username = tpl.find('.js-profile-username').value.trim(); + const initials = tpl.find('.js-profile-initials').value.trim(); + const isAdmin = tpl.find('.js-profile-isadmin').value.trim(); + const isActive = tpl.find('.js-profile-isactive').value.trim(); + const email = tpl.find('.js-profile-email').value.trim(); + let isChangeUserName = false; + let isChangeEmail = false; + + Users.update(this.userId, { + $set: { + 'profile.fullname': fullname, + 'profile.initials': initials, + 'isAdmin': isAdmin === 'true', + 'loginDisabled': isActive === 'true', + }, + }); + + isChangeUserName = username !== user.username; + isChangeEmail = email.toLowerCase() !== user.emails[0].address.toLowerCase(); + + if (isChangeUserName && isChangeEmail) { + Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), this.userId, function (error) { + const usernameMessageElement = tpl.$('.username-taken'); + const emailMessageElement = tpl.$('.email-taken'); + if (error) { + const errorElement = error.error; + if (errorElement === 'username-already-taken') { + usernameMessageElement.show(); + emailMessageElement.hide(); + } else if (errorElement === 'email-already-taken') { + usernameMessageElement.hide(); + emailMessageElement.show(); + } + } else { + usernameMessageElement.hide(); + emailMessageElement.hide(); + Popup.close(); + } + }); + } else if (isChangeUserName) { + Meteor.call('setUsername', username, this.userId, function (error) { + const usernameMessageElement = tpl.$('.username-taken'); + if (error) { + const errorElement = error.error; + if (errorElement === 'username-already-taken') { + usernameMessageElement.show(); + } + } else { + usernameMessageElement.hide(); + Popup.close(); + } + }); + } else if (isChangeEmail) { + Meteor.call('setEmail', email.toLowerCase(), this.userId, function (error) { + const emailMessageElement = tpl.$('.email-taken'); + if (error) { + const errorElement = error.error; + if (errorElement === 'email-already-taken') { + emailMessageElement.show(); + } + } else { + emailMessageElement.hide(); + Popup.close(); + } + }); + } else Popup.close(); + }, +}); diff --git a/client/components/settings/peopleBody.styl b/client/components/settings/peopleBody.styl new file mode 100644 index 00000000..2e89ea3b --- /dev/null +++ b/client/components/settings/peopleBody.styl @@ -0,0 +1,15 @@ +.main-body + overflow: scroll; + +table + font-family: arial, sans-serif; + border-collapse: collapse; + width: 100%; + + td, th + border: 1px solid #d2d0d0; + text-align: left; + padding: 8px; + + tr:nth-child(even) + background-color: #dddddd; diff --git a/client/components/settings/settingHeader.jade b/client/components/settings/settingHeader.jade index c22cf5c6..c2d4db3a 100644 --- a/client/components/settings/settingHeader.jade +++ b/client/components/settings/settingHeader.jade @@ -9,13 +9,14 @@ template(name="settingHeaderBar") a.setting-header-btn.settings(href="{{pathFor 'setting'}}") i.fa(class="fa-cog") span {{_ 'settings'}} + + a.setting-header-btn.people(href="{{pathFor 'people'}}") + i.fa(class="fa-users") + span {{_ 'people'}} + a.setting-header-btn.informations(href="{{pathFor 'information'}}") i.fa(class="fa-info-circle") span {{_ 'info'}} -//TODO -// a.setting-header-btn.people -// i.fa(class="fa-users") -// span {{_ 'people'}} else a.setting-header-btn.js-log-in( diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index 90205ee1..481b13c3 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -42,7 +42,7 @@ Template.editProfilePopup.events({ isChangeUserName = username !== Meteor.user().username; isChangeEmail = email.toLowerCase() !== Meteor.user().emails[0].address.toLowerCase(); if (isChangeUserName && isChangeEmail) { - Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), function(error) { + Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), Meteor.userId(), function (error) { const usernameMessageElement = tpl.$('.username-taken'); const emailMessageElement = tpl.$('.email-taken'); if (error) { @@ -61,7 +61,7 @@ Template.editProfilePopup.events({ } }); } else if (isChangeUserName) { - Meteor.call('setUsername', username, function(error) { + Meteor.call('setUsername', username, Meteor.userId(), function (error) { const messageElement = tpl.$('.username-taken'); if (error) { messageElement.show(); @@ -71,7 +71,7 @@ Template.editProfilePopup.events({ } }); } else if (isChangeEmail) { - Meteor.call('setEmail', email.toLowerCase(), function(error) { + Meteor.call('setEmail', email.toLowerCase(), Meteor.userId(), function (error) { const messageElement = tpl.$('.email-taken'); if (error) { messageElement.show(); @@ -105,7 +105,7 @@ Template.editNotificationPopup.events({ // XXX For some reason the useraccounts autofocus isnt working in this case. // See https://github.com/meteor-useraccounts/core/issues/384 -Template.changePasswordPopup.onRendered(function() { +Template.changePasswordPopup.onRendered(function () { this.find('#at-field-current_password').focus(); }); @@ -116,7 +116,7 @@ Template.changeLanguagePopup.helpers({ tag: code, name: lang.name === 'br' ? 'Brezhoneg' : lang.name, }; - }).sort(function(a, b) { + }).sort(function (a, b) { if (a.name === b.name) { return 0; } else { diff --git a/config/router.js b/config/router.js index 7f657820..c86a92ac 100644 --- a/config/router.js +++ b/config/router.js @@ -140,6 +140,26 @@ FlowRouter.route('/information', { }, }); +FlowRouter.route('/people', { + name: 'people', + triggersEnter: [ + AccountsTemplates.ensureSignedIn, + () => { + Session.set('currentBoard', null); + Session.set('currentCard', null); + + Filter.reset(); + EscapeActions.executeAll(); + }, + ], + action() { + BlazeLayout.render('defaultLayout', { + headerBar: 'settingHeaderBar', + content: 'people', + }); + }, +}); + FlowRouter.notFound = { action() { BlazeLayout.render('defaultLayout', { content: 'notFound' }); diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index a68706e6..daaf977c 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -54,7 +54,7 @@ "addMemberPopup-title": "الأعضاء", "admin": "المدير", "admin-desc": "إمكانية مشاهدة و تعديل و حذف أعضاء ، و تعديل إعدادات اللوحة أيضا.", - "admin-announcement": "Announcement", + "admin-announcement": "إعلان", "admin-announcement-active": "Active System-Wide Announcement", "admin-announcement-title": "Announcement from Administrator", "all-boards": "كل اللوحات", @@ -150,8 +150,8 @@ "comment-only-desc": "يمكن التعليق على بطاقات فقط.", "computer": "حاسوب", "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist", - "copy-card-link-to-clipboard": "Copy card link to clipboard", - "copyCardPopup-title": "Copy Card", + "copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة", + "copyCardPopup-title": "نسخ البطاقة", "create": "إنشاء", "createBoardPopup-title": "إنشاء لوحة", "chooseBoardSourcePopup-title": "استيراد لوحة", @@ -172,6 +172,7 @@ "edit-avatar": "تعديل الصورة الشخصية", "edit-profile": "تعديل الملف الشخصي", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "تغيير تاريخ البدء", "editCardDueDatePopup-title": "تغيير تاريخ الاستحقاق", "editLabelPopup-title": "تعديل العلامة", @@ -201,7 +202,7 @@ "error-user-notAllowSelf": "لا يمكنك دعوة نفسك", "error-user-notCreated": "This user is not created", "error-username-taken": "إسم المستخدم مأخوذ مسبقا", - "error-email-taken": "Email has already been taken", + "error-email-taken": "البريد الإلكتروني مأخوذ بالفعل", "export-board": "Export board", "filter": "تصفية", "filter-cards": "تصفية البطاقات", @@ -232,7 +233,7 @@ "import-show-user-mapping": "Review members mapping", "import-user-select": "Pick the Wekan user you want to use as this member", "importMapMembersAddPopup-title": "حدّد عضو ويكان", - "info": "Version", + "info": "الإصدار", "initials": "أولية", "invalid-date": "تاريخ غير صالح", "joined": "انضمّ", @@ -246,7 +247,7 @@ "last-admin-desc": "لا يمكن تعديل الأدوار لأن ذلك يتطلب صلاحيات المدير.", "leave-board": "مغادرة اللوحة", "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", - "leaveBoardPopup-title": "Leave Board ?", + "leaveBoardPopup-title": "مغادرة اللوحة ؟", "link-card": "ربط هذه البطاقة", "list-archive-cards": "أرضفت بطاقات هذه القائمة", "list-archive-cards-pop": "سيقتضي هذا أرشفة جميع بطاقات هذه القائمة. لمشاهدة أرشيف البطاقات أو إعادتها إلى اللوحة، اضغط على -القائمة- ثم - أرشيف العناصر-", @@ -267,12 +268,12 @@ "menu": "القائمة", "move-selection": "Move selection", "moveCardPopup-title": "نقل البطاقة", - "moveCardToBottom-title": "Move to Bottom", - "moveCardToTop-title": "Move to Top", + "moveCardToBottom-title": "التحرك إلى القاع", + "moveCardToTop-title": "التحرك إلى الأعلى", "moveSelectionPopup-title": "Move selection", "multi-selection": "تحديد أكثر من واحدة", "multi-selection-on": "Multi-Selection is on", - "muted": "Muted", + "muted": "مكتوم", "muted-info": "You will never be notified of any changes in this board", "my-boards": "لوحاتي", "name": "اسم", @@ -290,7 +291,7 @@ "page-not-found": "صفحة غير موجودة", "password": "كلمة المرور", "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)", - "participating": "Participating", + "participating": "المشاركة", "preview": "Preview", "previewAttachedImagePopup-title": "Preview", "previewClipboardImagePopup-title": "Preview", @@ -302,8 +303,8 @@ "quick-access-description": "أضف لوحة إلى المفضلة لإنشاء اختصار في هذا الشريط.", "remove-cover": "حذف الغلاف", "remove-from-board": "حذف من اللوحة", - "remove-label": "Remove Label", - "listDeletePopup-title": "Delete List ?", + "remove-label": "إزالة التصنيف", + "listDeletePopup-title": "حذف القائمة ؟", "remove-member": "حذف العضو", "remove-member-from-card": "حذف من البطاقة", "remove-member-pop": "حذف __name__ (__username__) من __boardTitle__ ? سيتم حذف هذا العضو من جميع بطاقة اللوحة مع إرسال إشعار له بذاك.", @@ -313,7 +314,7 @@ "restore": "استعادة", "save": "حفظ", "search": "بحث", - "select-color": "Select Color", + "select-color": "اختيار اللون", "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", "setWipLimitPopup-title": "Set WIP Limit", "shortcut-assign-self": "Assign yourself to current card", @@ -325,9 +326,9 @@ "shortcut-show-shortcuts": "عرض قائمة الإختصارات ،تلك", "shortcut-toggle-filterbar": "Toggle Filter Sidebar", "shortcut-toggle-sidebar": "إظهار-إخفاء الشريط الجانبي للوحة", - "show-cards-minimum-count": "Show cards count if list contains more than", - "sidebar-open": "Open Sidebar", - "sidebar-close": "Close Sidebar", + "show-cards-minimum-count": "إظهار عدد البطاقات إذا كانت القائمة تتضمن أكثر من", + "sidebar-open": "فتح الشريط الجانبي", + "sidebar-close": "إغلاق الشريط الجانبي", "signupPopup-title": "إنشاء حساب", "star-board-title": "اضغط لإضافة هذه اللوحة إلى المفضلة . سوف يتم إظهارها على رأس بقية اللوحات.", "starred-boards": "اللوحات المفضلة", @@ -336,72 +337,75 @@ "team": "فريق", "this-board": "هذه اللوحة", "this-card": "هذه البطاقة", - "time": "Time", + "time": "الوقت", "title": "عنوان", - "tracking": "Tracking", + "tracking": "تتبع", "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.", "unassign-member": "إلغاء تعيين العضو", "unsaved-description": "لديك وصف غير محفوظ", - "unwatch": "Unwatch", + "unwatch": "غير مُشاهد", "upload": "Upload", "upload-avatar": "رفع صورة شخصية", "uploaded-avatar": "تم رفع الصورة الشخصية", "username": "اسم المستخدم", "view-it": "شاهدها", "warn-list-archived": "انتبه : هذه البطاقة في أرشيف القائمات", - "watch": "Watch", - "watching": "Watching", + "watch": "مُشاهد", + "watching": "مشاهدة", "watching-info": "You will be notified of any change in this board", "welcome-board": "لوحة التّرحيب", - "welcome-list1": "Basics", - "welcome-list2": "Advanced", + "welcome-list1": "المبادئ", + "welcome-list2": "متقدم", "what-to-do": "ماذا تريد أن تنجز?", "wipLimitErrorPopup-title": "Invalid WIP Limit", "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", - "admin-panel": "Admin Panel", - "settings": "Settings", - "people": "People", - "registration": "Registration", + "admin-panel": "لوحة التحكم", + "settings": "الإعدادات", + "people": "الناس", + "registration": "تسجيل", "disable-self-registration": "Disable Self-Registration", - "invite": "Invite", - "invite-people": "Invite People", + "invite": "دعوة", + "invite-people": "الناس المدعوين", "to-boards": "إلى اللوحات", - "email-addresses": "Email Addresses", + "email-addresses": "عناوين البريد الإلكتروني", "smtp-host-description": "The address of the SMTP server that handles your emails.", "smtp-port-description": "The port your SMTP server uses for outgoing emails.", - "smtp-tls-description": "Enable TLS support for SMTP server", - "smtp-host": "SMTP Host", - "smtp-port": "SMTP Port", + "smtp-tls-description": "تفعيل دعم TLS من اجل خادم SMTP", + "smtp-host": "مضيف SMTP", + "smtp-port": "منفذ SMTP", "smtp-username": "اسم المستخدم", "smtp-password": "كلمة المرور", - "smtp-tls": "TLS support", - "send-from": "From", - "invitation-code": "Invitation Code", - "email-invite-register-subject": "__inviter__ sent you an invitation", + "smtp-tls": "دعم التي ال سي", + "send-from": "من", + "invitation-code": "رمز الدعوة", + "email-invite-register-subject": "__inviter__ أرسل دعوة لك", "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", - "error-invitation-code-not-exist": "Invitation code doesn't exist", - "error-notAuthorized": "You are not authorized to view this page.", - "outgoing-webhooks": "Outgoing Webhooks", - "outgoingWebhooksPopup-title": "Outgoing Webhooks", - "new-outgoing-webhook": "New Outgoing Webhook", - "no-name": "(Unknown)", - "Wekan_version": "Wekan version", - "Node_version": "Node version", - "OS_Arch": "OS Arch", - "OS_Cpus": "OS CPU Count", - "OS_Freemem": "OS Free Memory", - "OS_Loadavg": "OS Load Average", - "OS_Platform": "OS Platform", - "OS_Release": "OS Release", - "OS_Totalmem": "OS Total Memory", - "OS_Type": "OS Type", - "OS_Uptime": "OS Uptime", - "hours": "hours", - "minutes": "minutes", - "seconds": "seconds", - "yes": "Yes", - "no": "No", - "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "error-invitation-code-not-exist": "رمز الدعوة غير موجود", + "error-notAuthorized": "أنتَ لا تملك الصلاحيات لرؤية هذه الصفحة.", + "outgoing-webhooks": "الويبهوك الصادرة", + "outgoingWebhooksPopup-title": "الويبهوك الصادرة", + "new-outgoing-webhook": "ويبهوك جديدة ", + "no-name": "(غير معروف)", + "Wekan_version": "إصدار ويكان", + "Node_version": "إصدار النود", + "OS_Arch": "معمارية نظام التشغيل", + "OS_Cpus": "استهلاك وحدة المعالجة المركزية لنظام التشغيل", + "OS_Freemem": "الذاكرة الحرة لنظام التشغيل", + "OS_Loadavg": "متوسط حمل نظام التشغيل", + "OS_Platform": "منصة نظام التشغيل", + "OS_Release": "إصدار نظام التشغيل", + "OS_Totalmem": "الذاكرة الكلية لنظام التشغيل", + "OS_Type": "نوع نظام التشغيل", + "OS_Uptime": "مدة تشغيل نظام التشغيل", + "hours": "الساعات", + "minutes": "الدقائق", + "seconds": "الثواني", + "yes": "نعم", + "no": "لا", + "accounts": "الحسابات", + "accounts-allowEmailChange": "السماح بتغيير البريد الإلكتروني", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index 3a51ddcd..9cd5603b 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json index 18a5d21c..057dd08a 100644 --- a/i18n/ca.i18n.json +++ b/i18n/ca.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Canvia Avatar", "edit-profile": "Edita el teu Perfil", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Canvia data d'inici", "editCardDueDatePopup-title": "Canvia data de finalització", "editLabelPopup-title": "Canvia etiqueta", @@ -403,5 +404,8 @@ "yes": "Si", "no": "No", "accounts": "Comptes", - "accounts-allowEmailChange": "Permet modificar correu electrònic" + "accounts-allowEmailChange": "Permet modificar correu electrònic", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index 428a323e..f4556a99 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Změnit avatar", "edit-profile": "Upravit profil", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Změnit datum startu úkolu", "editCardDueDatePopup-title": "Změnit datum dokončení úkolu", "editLabelPopup-title": "Změnit štítek", @@ -403,5 +404,8 @@ "yes": "Ano", "no": "Ne", "accounts": "Účty", - "accounts-allowEmailChange": "Povolit změnu Emailu" + "accounts-allowEmailChange": "Povolit změnu Emailu", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index 0dd43edd..766b1d5b 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -72,7 +72,7 @@ "archived-items": "Archivierte Einträge", "archived-boards": "Achivierte Boards", "restore-board": "Board wiederherstellen", - "no-archived-boards": "keine archivierten Boards", + "no-archived-boards": "Keine archivierten Boards", "archives": "Archive", "assign-member": "Mitglied zuweisen", "attached": "angehängt", @@ -88,7 +88,7 @@ "board-not-found": "Board nicht gefunden", "board-private-info": "Dieses Board wird <strong>privat</strong> sein.", "board-public-info": "Dieses Board wird <strong>öffentlich</strong> sein.", - "boardChangeColorPopup-title": "Boardfarbe ändern", + "boardChangeColorPopup-title": "Farbe des Boards ändern", "boardChangeTitlePopup-title": "Board umbenennen", "boardChangeVisibilityPopup-title": "Sichtbarkeit ändern", "boardChangeWatchPopup-title": "Beobachtung ändern", @@ -97,7 +97,7 @@ "bucket-example": "z.B. \"Löffelliste\"", "cancel": "Abbrechen", "card-archived": "Diese Karte wurde archiviert.", - "card-comments-title": "Diese Karte hat %s Kommentare.", + "card-comments-title": "Diese Karte hat %s Kommentar(e).", "card-delete-notice": "Löschen ist unwiderruflich. Alle Aktionen die dieser Karte zugeordnet sind werden ebenfalls gelöscht.", "card-delete-pop": "Alle Aktionen werden vom Aktivitätsfeed entfernt und die Karte kann nicht mehr geöffnet werden. Das Löschen kann nicht widerrufen werden!", "card-delete-suggest-archive": "Sie können eine Karte archivieren, um sie von dem Board zu entfernen und die Aktivitäten zu behalten.", @@ -172,6 +172,7 @@ "edit-avatar": "Profilbild ändern", "edit-profile": "Profil ändern", "edit-wip-limit": "WIP-Limit bearbeiten", + "soft-wip-limit": "Soft WIP-Limit", "editCardStartDatePopup-title": "Startdatum ändern", "editCardDueDatePopup-title": "Enddatum ändern", "editLabelPopup-title": "Label ändern", @@ -228,7 +229,7 @@ "import-board-instruction-wekan": "Gehen Sie in Ihrem Wekan board auf 'Menü', und dann auf 'Board exportieren'. Kopieren Sie anschließend den Text aus der heruntergeladenen Datei.", "import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein", "import-map-members": "Mitglieder zuordnen", - "import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen Sie die Mitglieder, die importiert werden sollen, Wekan-Nutzern zu", + "import-members-map": "Das importierte Board hat Mitglieder. Bitte ordnen Sie jene, die importiert werden sollen, vorhandenen Wekan-Nutzern zu", "import-show-user-mapping": "Mitgliederzuordnung überprüfen", "import-user-select": "Wählen Sie den Wekan-Nutzer aus, der dieses Mitglied sein soll", "importMapMembersAddPopup-title": "Wekan-Nutzer auswählen", @@ -267,13 +268,13 @@ "menu": "Menü", "move-selection": "Auswahl verschieben", "moveCardPopup-title": "Karte verschieben", - "moveCardToBottom-title": "Zum Ende verschieben", + "moveCardToBottom-title": "Ans Ende verschieben", "moveCardToTop-title": "Zum Anfang verschieben", "moveSelectionPopup-title": "Auswahl verschieben", "multi-selection": "Mehrfachauswahl", "multi-selection-on": "Mehrfachauswahl ist aktiv", "muted": "Stumm", - "muted-info": "Sie werden über keine Änderung in diesem Board benachrichtigt", + "muted-info": "Sie werden nicht über Änderungen auf diesem Board benachrichtigt", "my-boards": "Meine Boards", "name": "Name", "no-archived-cards": "Keine archivierten Karten.", @@ -282,7 +283,7 @@ "normal": "Normal", "normal-desc": "Kann Karten anschauen und bearbeiten, aber keine Einstellungen ändern.", "not-accepted-yet": "Die Einladung wurde noch nicht angenommen", - "notify-participate": "Benachrichtigungen über alle Karten erhalten, bei denen Sie als Ersteller oder Mitglied teilnehmen", + "notify-participate": "Benachrichtigungen zu allen Karten erhalten, an denen Sie teilnehmen", "notify-watch": "Benachrichtigungen über alle Boards, Listen oder Karten erhalten, die Sie beobachten", "optional": "optional", "or": "oder", @@ -403,5 +404,8 @@ "yes": "Ja", "no": "Nein", "accounts": "Konten", - "accounts-allowEmailChange": "Zulassen E-Mail ändern" + "accounts-allowEmailChange": "E-Mail ändern zulassen", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json index 568976b5..c3d783c1 100644 --- a/i18n/en-GB.i18n.json +++ b/i18n/en-GB.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index ccd28c5f..5ec6a5f0 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" } diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index 0bb850af..6abb07d6 100644 --- a/i18n/eo.i18n.json +++ b/i18n/eo.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Redakti profilo", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Redakti komencdato", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Ŝanĝi etikedo", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json new file mode 100644 index 00000000..85508e14 --- /dev/null +++ b/i18n/es-AR.i18n.json @@ -0,0 +1,411 @@ +{ + "accept": "Aceptar", + "act-activity-notify": "[Wekan] Notificación de Actividad", + "act-addAttachment": "adjunto __attachment__ a __card__", + "act-addChecklist": "lista de ítems __checklist__ agregada a __card__", + "act-addChecklistItem": " __checklistItem__ agregada a lista de ítems __checklist__ en __card__", + "act-addComment": "comentado en __card__: __comment__", + "act-createBoard": "__board__ creado", + "act-createCard": "agregada __card__ a __list__", + "act-createList": "agregada __list__ a __board__", + "act-addBoardMember": "agregado __member__ a __board__", + "act-archivedBoard": "__board__ archivado", + "act-archivedCard": "__card__ archivada", + "act-archivedList": "__list__ archivada", + "act-importBoard": "__board__ importado", + "act-importCard": "__card__ importada", + "act-importList": "__list__ importada", + "act-joinMember": "__member__ agregado a __card__", + "act-moveCard": "__card__ movida de __oldList__ a __list__", + "act-removeBoardMember": "__member__ removido de __board__", + "act-restoredCard": "__card__ restaurada a __board__", + "act-unjoinMember": "__member__ removido de __card__", + "act-withBoardTitle": "__board__ [Wekan]", + "act-withCardTitle": "__card__ [__board__] ", + "actions": "Acciones", + "activities": "Actividades", + "activity": "Actividad", + "activity-added": "agregadas %s a %s", + "activity-archived": "archivadas %s", + "activity-attached": "adjuntadas %s a %s", + "activity-created": "creadas %s", + "activity-excluded": "excluidas %s de %s", + "activity-imported": "importadas %s en %s de %s", + "activity-imported-board": "importadas %s de %s", + "activity-joined": "unidas %s", + "activity-moved": "movidas %s de %s a %s", + "activity-on": "en %s", + "activity-removed": "eliminadas %s de %s", + "activity-sent": "enviadas %s a %s", + "activity-unjoined": "separadas %s", + "activity-checklist-added": "agregada lista de tareas a %s", + "activity-checklist-item-added": "agregado item de lista de tareas a '%s' en %s", + "add": "Agregar", + "add-attachment": "Agregar Adjunto", + "add-board": "Agregar Tablero", + "add-card": "Agregar Tarjeta", + "add-checklist": "Agregar Lista de Tareas", + "add-checklist-item": "Agregar ítem a lista de tareas", + "add-cover": "Agregar Portadas", + "add-label": "Agregar Etiqueta", + "add-list": "Agregar Lista", + "add-members": "Agregar Miembros", + "added": "Agregadas", + "addMemberPopup-title": "Miembros", + "admin": "Administrador", + "admin-desc": "Puede ver y editar tarjetas, eliminar miembros, y cambiar opciones para el tablero.", + "admin-announcement": "Anuncio", + "admin-announcement-active": "Anuncio del Sistema Activo", + "admin-announcement-title": "Anuncio del Administrador", + "all-boards": "Todos los tableros", + "and-n-other-card": "Y __count__ otra tarjeta", + "and-n-other-card_plural": "Y __count__ otras tarjetas", + "apply": "Aplicar", + "app-is-offline": "Wekan está cargándose, por favor espere. Refrescar la página va a causar pérdida de datos. Si Wekan no se carga, por favor revise que el servidor de Wekan no se haya detenido.", + "archive": "Archivar", + "archive-all": "Archivar Todo", + "archive-board": "Archivar Tablero", + "archive-card": "Archivar Tarjeta", + "archive-list": "Archivar Lista", + "archive-selection": "Archivar selección", + "archiveBoardPopup-title": "Archivar Tablero?", + "archived-items": "Items Archivados", + "archived-boards": "Tableros Archivados", + "restore-board": "Restaurar Tablero", + "no-archived-boards": "Tableros no archivados.", + "archives": "Archivos", + "assign-member": "Asignar miembro", + "attached": "adjunto(s)", + "attachment": "Adjunto", + "attachment-delete-pop": "Borrar un adjunto es permanente. No hay deshacer.", + "attachmentDeletePopup-title": "¿Borrar Adjunto?", + "attachments": "Adjuntos", + "auto-watch": "Seguir tableros automáticamente al crearlos", + "avatar-too-big": "El avatar es muy grande (70KB max)", + "back": "Atrás", + "board-change-color": "Cambiar color", + "board-nb-stars": "%s estrellas", + "board-not-found": "Tablero no encontrado", + "board-private-info": "Este tablero va a ser <strong>privado</strong>.", + "board-public-info": "Este tablero va a ser <strong>público</strong>.", + "boardChangeColorPopup-title": "Cambiar Fondo del Tablero", + "boardChangeTitlePopup-title": "Renombrar Tablero", + "boardChangeVisibilityPopup-title": "Cambiar Visibilidad", + "boardChangeWatchPopup-title": "Alternar Seguimiento", + "boardMenuPopup-title": "Menú del Tablero", + "boards": "Tableros", + "bucket-example": "Como \"Lista de Contenedores\" por ejemplo", + "cancel": "Cancelar", + "card-archived": "Esta tarjeta está archivada", + "card-comments-title": "Esta tarjeta tiene %s comentario.", + "card-delete-notice": "Borrar es permanente. Perderás todas las acciones asociadas con esta tarjeta.", + "card-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podrás re-abrir la tarjeta. No hay deshacer.", + "card-delete-suggest-archive": "Tu puedes archivar una tarjeta para removerla del tablero y preservar la actividad.", + "card-due": "Vence", + "card-due-on": "Vence en", + "card-edit-attachments": "Editar adjuntos", + "card-edit-labels": "Editar etiquetas", + "card-edit-members": "Editar miembros", + "card-labels-title": "Cambiar las etiquetas de la tarjeta.", + "card-members-title": "Agregar o eliminar de la tarjeta miembros del tablero.", + "card-start": "Empieza", + "card-start-on": "Empieza el", + "cardAttachmentsPopup-title": "Adjuntar De", + "cardDeletePopup-title": "¿Borrar Tarjeta?", + "cardDetailsActionsPopup-title": "Acciones de la Tarjeta", + "cardLabelsPopup-title": "Etiquetas", + "cardMembersPopup-title": "Miembros", + "cardMorePopup-title": "Mas", + "cards": "Tarjetas", + "change": "Cambiar", + "change-avatar": "Cambiar Avatar", + "change-password": "Cambiar Contraseña", + "change-permissions": "Cambiar permisos", + "change-settings": "Cambiar Opciones", + "changeAvatarPopup-title": "Cambiar Avatar", + "changeLanguagePopup-title": "Cambiar Lenguaje", + "changePasswordPopup-title": "Cambiar Contraseña", + "changePermissionsPopup-title": "Cambiar Permisos", + "changeSettingsPopup-title": "Cambiar Opciones", + "checklists": "Listas de ítems", + "click-to-star": "Clickeá para darle una estrella a este tablero.", + "click-to-unstar": "Clickeá para sacarle la estrella al tablero.", + "clipboard": "Portapapeles o arrastrar y soltar", + "close": "Cerrar", + "close-board": "Cerrar Tablero", + "close-board-pop": "Podrás restaurar el tablero apretando el botón \"Archivos\" del encabezado en inicio.", + "color-black": "negro", + "color-blue": "azul", + "color-green": "verde", + "color-lime": "lima", + "color-orange": "naranja", + "color-pink": "rosa", + "color-purple": "púrpura", + "color-red": "rojo", + "color-sky": "cielo", + "color-yellow": "amarillo", + "comment": "Comentario", + "comment-placeholder": "Comentar", + "comment-only": "Comentar solamente", + "comment-only-desc": "Puede comentar en tarjetas solamente.", + "computer": "Computadora", + "confirm-checklist-delete-dialog": "¿Estás segur@ que querés borrar la lista de ítems?", + "copy-card-link-to-clipboard": "Copiar enlace a tarjeta en el portapapeles", + "copyCardPopup-title": "Copiar Tarjeta", + "create": "Crear", + "createBoardPopup-title": "Crear Tablero", + "chooseBoardSourcePopup-title": "Importar tablero", + "createLabelPopup-title": "Crear Etiqueta", + "current": "actual", + "date": "Fecha", + "decline": "Rechazar", + "default-avatar": "Avatar por defecto", + "delete": "Borrar", + "deleteLabelPopup-title": "¿Borrar Etiqueta?", + "description": "Descripción", + "disambiguateMultiLabelPopup-title": "Desambiguación de Acción de Etiqueta", + "disambiguateMultiMemberPopup-title": "Desambiguación de Acción de Miembro", + "discard": "Descartar", + "done": "Hecho", + "download": "Descargar", + "edit": "Editar", + "edit-avatar": "Cambiar Avatar", + "edit-profile": "Editar Perfil", + "edit-wip-limit": "Editar Lìmite de TEP", + "soft-wip-limit": "Soft WIP Limit", + "editCardStartDatePopup-title": "Cambiar fecha de inicio", + "editCardDueDatePopup-title": "Cambiar fecha de vencimiento", + "editLabelPopup-title": "Cambiar Etiqueta", + "editNotificationPopup-title": "Editar Notificació", + "editProfilePopup-title": "Editar Perfil", + "email": "Email", + "email-enrollAccount-subject": "Una cuenta creada para vos en __siteName__", + "email-enrollAccount-text": "Hola __user__,\n\nPara empezar a usar el servicio, simplemente clickeá en el enlace de abajo.\n\n__url__\n\nGracias.", + "email-fail": "Fallo envío de email", + "email-invalid": "Email inválido", + "email-invite": "Invitar vía Email", + "email-invite-subject": "__inviter__ te envió una invitación", + "email-invite-text": "Querido __user__,\n\n__inviter__ te invita a unirte al tablero \"__board__\" para colaborar.\n\nPor favor sigue el enlace de abajo:\n\n__url__\n\nGracias.", + "email-resetPassword-subject": "Restaurá tu contraseña en __siteName__", + "email-resetPassword-text": "Hola __user__,\n\nPara restaurar tu contraseña, simplemente clickeá el enlace de abajo.\n\n__url__\n\nGracias.", + "email-sent": "Email enviado", + "email-verifyEmail-subject": "Verificá tu dirección de email en __siteName__", + "email-verifyEmail-text": "Hola __user__,\n\nPara verificar tu cuenta de email, simplemente clickeá el enlace de abajo.\n\n__url__\n\nGracias.", + "enable-wip-limit": "Activar Límite TEP", + "error-board-doesNotExist": "Este tablero no existe", + "error-board-notAdmin": "Necesitás ser administrador de este tablero para hacer eso", + "error-board-notAMember": "Necesitás ser miembro de este tablero para hacer eso", + "error-json-malformed": "Tu texto no es JSON válido", + "error-json-schema": "Tus datos JSON no incluyen la información correcta en el formato adecuado", + "error-list-doesNotExist": "Esta lista no existe", + "error-user-doesNotExist": "Este usuario no existe", + "error-user-notAllowSelf": "No podés invitarte a vos mismo", + "error-user-notCreated": " El usuario no se creó", + "error-username-taken": "El nombre de usuario ya existe", + "error-email-taken": "El email ya existe", + "export-board": "Exportar tablero", + "filter": "Filtrar", + "filter-cards": "Filtrar Tarjetas", + "filter-clear": "Sacar filtro", + "filter-no-label": "Sin etiqueta", + "filter-no-member": "No es miembro", + "filter-on": "El filtro está activado", + "filter-on-desc": "Estás filtrando cartas en este tablero. Clickeá acá para editar el filtro.", + "filter-to-selection": "Filtrar en la selección", + "fullname": "Nombre Completo", + "header-logo-title": "Retroceder a tu página de tableros.", + "hide-system-messages": "Esconder mensajes del sistema", + "headerBarCreateBoardPopup-title": "Crear Tablero", + "home": "Inicio", + "import": "Importar", + "import-board": "importar tablero", + "import-board-c": "Importar tablero", + "import-board-title-trello": "Importar tablero de Trello", + "import-board-title-wekan": "Importar tablero de Wekan", + "import-sandstorm-warning": "El tablero importado va a borrar todos los datos existentes en el tablero y reemplazarlos con los del tablero en cuestión.", + "from-trello": "De Trello", + "from-wekan": "De Wekan", + "import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego a 'Más', 'Imprimir y Exportar', 'Exportar JSON', y copia el texto resultante.", + "import-board-instruction-wekan": "En tu tablero Wekan, ve a 'Menú', luego a 'Exportar tablero', y copia el texto en el archivo descargado.", + "import-json-placeholder": "Pegá tus datos JSON válidos acá", + "import-map-members": "Mapear Miembros", + "import-members-map": "Tu tablero importado tiene algunos miembros. Por favor mapeá los miembros que quieras importar/convertir a usuarios de Wekan.", + "import-show-user-mapping": "Revisar mapeo de miembros", + "import-user-select": "Elegí el usuario de Wekan que querés usar como éste miembro", + "importMapMembersAddPopup-title": "Elegí el miembro de Wekan.", + "info": "Versión", + "initials": "Iniciales", + "invalid-date": "Fecha inválida", + "joined": "unido", + "just-invited": "Fuiste invitado a este tablero", + "keyboard-shortcuts": "Atajos de teclado", + "label-create": "Crear Etiqueta", + "label-default": "%s etiqueta (por defecto)", + "label-delete-pop": "No hay deshacer. Esto va a eliminar esta etiqueta de todas las tarjetas y destruir su historia.", + "labels": "Etiquetas", + "language": "Lenguaje", + "last-admin-desc": "No podés cambiar roles porque tiene que haber al menos un administrador.", + "leave-board": "Dejar Tablero", + "leave-board-pop": "¿Estás seguro que querés dejar __boardTitle__? Vas a salir de todas las tarjetas en este tablero.", + "leaveBoardPopup-title": "¿Dejar Tablero?", + "link-card": "Enlace a esta tarjeta", + "list-archive-cards": "Archivar todas las tarjetas en esta lista", + "list-archive-cards-pop": "Esto va a eliminar las tarjetas en esta lista del tablero. Para ver tarjetas archivadas y traerlas de vuelta al tablero, clickeá \"Menú\" > \"Items Archivados\".", + "list-move-cards": "Mueve todas las tarjetas en esta lista", + "list-select-cards": "Selecciona todas las tarjetas en esta lista", + "listActionPopup-title": "Listar Acciones", + "listImportCardPopup-title": "Importar una tarjeta Trello", + "listMorePopup-title": "Mas", + "link-list": "Enlace a esta lista", + "list-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podás recuperar la lista. No se puede deshacer.", + "list-delete-suggest-archive": "Podés archivar la lista para eliminarla del tablero y preservar la actividad.", + "lists": "Listas", + "log-out": "Salir", + "log-in": "Entrar", + "loginPopup-title": "Entrar", + "memberMenuPopup-title": "Opciones de Miembros", + "members": "Miembros", + "menu": "Menú", + "move-selection": "Mover selección", + "moveCardPopup-title": "Mover Tarjeta", + "moveCardToBottom-title": "Mover al Final", + "moveCardToTop-title": "Mover al Tope", + "moveSelectionPopup-title": "Mover selección", + "multi-selection": "Multi-Selección", + "multi-selection-on": "Multi-selección está activo", + "muted": "Silenciado", + "muted-info": "No serás notificado de ningún cambio en este tablero", + "my-boards": "Mis Tableros", + "name": "Nombre", + "no-archived-cards": "No hay tarjetas archivadas.", + "no-archived-lists": "No hay listas archivadas.", + "no-results": "No hay resultados", + "normal": "Normal", + "normal-desc": "Puede ver y editar tarjetas. No puede cambiar opciones.", + "not-accepted-yet": "Invitación no aceptada todavía", + "notify-participate": "Recibí actualizaciones en cualquier tarjeta que participés como creador o miembro", + "notify-watch": "Recibí actualizaciones en cualquier tablero, lista, o tarjeta que estés siguiendo", + "optional": "opcional", + "or": "o", + "page-maybe-private": "Esta página puede ser privada. Vos podrás verla <a href='%s'>entrando</a>.", + "page-not-found": "Página no encontrada.", + "password": "Contraseña", + "paste-or-dragdrop": "pegar, arrastrar y soltar el archivo de imagen a esto (imagen sola)", + "participating": "Participando", + "preview": "Previsualización", + "previewAttachedImagePopup-title": "Previsualización", + "previewClipboardImagePopup-title": "Previsualización", + "private": "Privado", + "private-desc": "Este tablero es privado. Solo personas agregadas a este tablero pueden verlo y editarlo.", + "profile": "Perfil", + "public": "Público", + "public-desc": "Este tablero es público. Es visible para cualquiera con un enlace y se va a mostrar en los motores de búsqueda como Google. Solo personas agregadas a este tablero pueden editarlo.", + "quick-access-description": "Dale una estrella al tablero para agregar un acceso directo en esta barra.", + "remove-cover": "Remover Portada", + "remove-from-board": "Remover del Tablero", + "remove-label": "Remover Etiqueta", + "listDeletePopup-title": "¿Borrar Lista?", + "remove-member": "Remover Miembro", + "remove-member-from-card": "Remover de Tarjeta", + "remove-member-pop": "¿Remover __name__ (__username__) de __boardTitle__? Los miembros va a ser removido de todas las tarjetas en este tablero. Serán notificados.", + "removeMemberPopup-title": "¿Remover Miembro?", + "rename": "Renombrar", + "rename-board": "Renombrar Tablero", + "restore": "Restaurar", + "save": "Grabar", + "search": "Buscar", + "select-color": "Seleccionar Color", + "set-wip-limit-value": "Fijar un límite para el número máximo de tareas en esta lista", + "setWipLimitPopup-title": "Establecer Límite TEP", + "shortcut-assign-self": "Asignarte a vos mismo en la tarjeta actual", + "shortcut-autocomplete-emoji": "Autocompletar emonji", + "shortcut-autocomplete-members": "Autocompletar miembros", + "shortcut-clear-filters": "Limpiar todos los filtros", + "shortcut-close-dialog": "Cerrar Diálogo", + "shortcut-filter-my-cards": "Filtrar mis tarjetas", + "shortcut-show-shortcuts": "Traer esta lista de atajos", + "shortcut-toggle-filterbar": "Activar/Desactivar Barra Lateral de Filtros", + "shortcut-toggle-sidebar": "Activar/Desactivar Barra Lateral de Tableros", + "show-cards-minimum-count": "Mostrar cuenta de tarjetas si la lista contiene más que", + "sidebar-open": "Abrir Barra Lateral", + "sidebar-close": "Cerrar Barra Lateral", + "signupPopup-title": "Crear Cuenta", + "star-board-title": "Clickear para darle una estrella a este tablero. Se mostrará arriba en el tope de tu lista de tableros.", + "starred-boards": "Tableros con estrellas", + "starred-boards-description": "Tableros con estrellas se muestran en el tope de tu lista de tableros.", + "subscribe": "Suscribirse", + "team": "Equipo", + "this-board": "este tablero", + "this-card": "esta tarjeta", + "time": "Hora", + "title": "Título", + "tracking": "Seguimiento", + "tracking-info": "Serás notificado de cualquier cambio a aquellas tarjetas en las que seas creador o miembro.", + "unassign-member": "Desasignar miembro", + "unsaved-description": "Tienes una descripción sin guardar.", + "unwatch": "Dejar de seguir", + "upload": "Cargar", + "upload-avatar": "Cargar un avatar", + "uploaded-avatar": "Cargado un avatar", + "username": "Nombre de usuario", + "view-it": "Verlo", + "warn-list-archived": "cuidado; esta tarjeta está en una lista archivada", + "watch": "Seguir", + "watching": "Siguiendo", + "watching-info": "Serás notificado de cualquier cambio en este tablero", + "welcome-board": "Tablero de Bienvenida", + "welcome-list1": "Básicos", + "welcome-list2": "Avanzado", + "what-to-do": "¿Qué querés hacer?", + "wipLimitErrorPopup-title": "Límite TEP Inválido", + "wipLimitErrorPopup-dialog-pt1": " El número de tareas en esta lista es mayor que el límite TEP que definiste.", + "wipLimitErrorPopup-dialog-pt2": "Por favor mové algunas tareas fuera de esta lista, o seleccioná un límite TEP más alto.", + "admin-panel": "Panel de Administración", + "settings": "Opciones", + "people": "Gente", + "registration": "Registro", + "disable-self-registration": "Desactivar auto-registro", + "invite": "Invitar", + "invite-people": "Invitar Gente", + "to-boards": "A tarjeta(s)", + "email-addresses": "Dirección de Email", + "smtp-host-description": "La dirección del servidor SMTP que maneja tus emails", + "smtp-port-description": "El puerto que tu servidor SMTP usa para correos salientes", + "smtp-tls-description": "Activar soporte TLS para el servidor SMTP", + "smtp-host": "Servidor SMTP", + "smtp-port": "Puerto SMTP", + "smtp-username": "Usuario", + "smtp-password": "Contraseña", + "smtp-tls": "Soporte TLS", + "send-from": "De", + "invitation-code": "Código de Invitación", + "email-invite-register-subject": "__inviter__ te envió una invitación", + "email-invite-register-text": "Querido __user__,\n\n__inviter__ te invita a Wekan para colaborar.\n\nPor favor sigue el enlace de abajo:\n__url__\n\nI tu código de invitación es: __icode__\n\nGracias.", + "error-invitation-code-not-exist": "El código de invitación no existe", + "error-notAuthorized": "No estás autorizado para ver esta página.", + "outgoing-webhooks": "Ganchos Web Salientes", + "outgoingWebhooksPopup-title": "Ganchos Web Salientes", + "new-outgoing-webhook": "Nuevo Gancho Web", + "no-name": "(desconocido)", + "Wekan_version": "Versión de Wekan", + "Node_version": "Versión de Node", + "OS_Arch": "Arch del SO", + "OS_Cpus": "Cantidad de CPU del SO", + "OS_Freemem": "Memoria Libre del SO", + "OS_Loadavg": "Carga Promedio del SO", + "OS_Platform": "Plataforma del SO", + "OS_Release": "Revisión del SO", + "OS_Totalmem": "Memoria Total del SO", + "OS_Type": "Tipo de SO", + "OS_Uptime": "Tiempo encendido del SO", + "hours": "horas", + "minutes": "minutos", + "seconds": "segundos", + "yes": "Si", + "no": "No", + "accounts": "Cuentas", + "accounts-allowEmailChange": "Permitir Cambio de Email", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" +}
\ No newline at end of file diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index 7dbd8694..24d78b96 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -25,7 +25,7 @@ "actions": "Acciones", "activities": "Actividades", "activity": "Actividad", - "activity-added": "Se ha añadido a %s a %s", + "activity-added": "ha añadido %s a %s", "activity-archived": "ha archivado %s", "activity-attached": "ha adjuntado %s a %s", "activity-created": "ha creado %s", @@ -140,7 +140,7 @@ "color-lime": "lima", "color-orange": "naranja", "color-pink": "rosa", - "color-purple": "púrpura", + "color-purple": "violeta", "color-red": "roja", "color-sky": "celeste", "color-yellow": "amarilla", @@ -172,6 +172,7 @@ "edit-avatar": "Cambiar el avatar", "edit-profile": "Editar el perfil", "edit-wip-limit": "Cambiar el límite del WIP", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Cambiar la fecha de inicio", "editCardDueDatePopup-title": "Cambiar la fecha de vencimiento", "editLabelPopup-title": "Cambiar la etiqueta", @@ -320,11 +321,11 @@ "shortcut-autocomplete-emoji": "Autocompletar emoji", "shortcut-autocomplete-members": "Autocompletar miembros", "shortcut-clear-filters": "Limpiar todos los filtros", - "shortcut-close-dialog": "Cerrar diálogo", + "shortcut-close-dialog": "Cerrar el cuadro de diálogo", "shortcut-filter-my-cards": "Filtrar mis tarjetas", - "shortcut-show-shortcuts": "Destacar esta lista de atajos", - "shortcut-toggle-filterbar": "Intercambiar la barra lateral del filtro", - "shortcut-toggle-sidebar": "Intercambiar la barra lateral del tablero", + "shortcut-show-shortcuts": "Mostrar esta lista de atajos", + "shortcut-toggle-filterbar": "Conmutar la barra lateral del filtro", + "shortcut-toggle-sidebar": "Conmutar la barra lateral del tablero", "show-cards-minimum-count": "Mostrar recuento de tarjetas si la lista contiene más de", "sidebar-open": "Abrir la barra lateral", "sidebar-close": "Cerrar la barra lateral", @@ -403,5 +404,8 @@ "yes": "Sí", "no": "No", "accounts": "Cuentas", - "accounts-allowEmailChange": "Permitir cambiar el correo electrónico" + "accounts-allowEmailChange": "Permitir cambiar el correo electrónico", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json index f3b737f9..98f64479 100644 --- a/i18n/eu.i18n.json +++ b/i18n/eu.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Aldatu avatarra", "edit-profile": "Editatu profila", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Aldatu hasiera data", "editCardDueDatePopup-title": "Aldatu epemuga data", "editLabelPopup-title": "Aldatu etiketa", @@ -403,5 +404,8 @@ "yes": "Bai", "no": "Ez", "accounts": "Kontuak", - "accounts-allowEmailChange": "Baimendu e-mail aldaketa" + "accounts-allowEmailChange": "Baimendu e-mail aldaketa", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index 10dd81bf..c90ae0e8 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "تغییر تصویر", "edit-profile": "ویرایش پروفایل", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "تغییر تاریخ آغاز", "editCardDueDatePopup-title": "تغییر تاریخ بدلیل", "editLabelPopup-title": "تغیر برچسب", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index bff7b3a8..0231d173 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Muokkaa profiilikuvaa", "edit-profile": "Muokkaa profiilia", "edit-wip-limit": "Muokkaa WIP-rajaa", + "soft-wip-limit": "Pehmeä WIP raja", "editCardStartDatePopup-title": "Muokkaa aloituspäivää", "editCardDueDatePopup-title": "Muokkaa eräpäivää", "editLabelPopup-title": "Muokkaa tunnistetta", @@ -403,5 +404,8 @@ "yes": "Kyllä", "no": "Ei", "accounts": "Tilit", - "accounts-allowEmailChange": "Salli sähköpostiosoitteen muuttaminen" + "accounts-allowEmailChange": "Salli sähköpostiosoitteen muuttaminen", + "createdAt": "Luotu", + "verified": "Varmistettu", + "active": "Aktiivinen" }
\ No newline at end of file diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 43670d5f..4778a24c 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Modifier l'avatar", "edit-profile": "Modifier le profil", "edit-wip-limit": "Éditer la limite WIP", + "soft-wip-limit": "Limite Soft WIP", "editCardStartDatePopup-title": "Modifier la date de début", "editCardDueDatePopup-title": "Modifier la date d'échéance", "editLabelPopup-title": "Modifier l'étiquette", @@ -403,5 +404,8 @@ "yes": "Oui", "no": "Non", "accounts": "Comptes", - "accounts-allowEmailChange": "Autoriser le changement d'adresse mail" + "accounts-allowEmailChange": "Autoriser le changement d'adresse mail", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json index bf924c15..463caae8 100644 --- a/i18n/gl.i18n.json +++ b/i18n/gl.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Cambiar de avatar", "edit-profile": "Editar o perfil", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Cambiar a data de inicio", "editCardDueDatePopup-title": "Cambiar a data límite", "editLabelPopup-title": "Cambiar a etiqueta", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index 4d73a884..7f80bcbd 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -150,7 +150,7 @@ "comment-only-desc": "ניתן להעיר על כרטיסים בלבד.", "computer": "מחשב", "confirm-checklist-delete-dialog": "האם אתה בטוח שברצונך למחוק את רשימת המשימות", - "copy-card-link-to-clipboard": "Copy card link to clipboard", + "copy-card-link-to-clipboard": "העתקת קישור הכרטיס ללוח הגזירים", "copyCardPopup-title": "העתק כרטיס", "create": "יצירה", "createBoardPopup-title": "יצירת לוח", @@ -171,7 +171,8 @@ "edit": "עריכה", "edit-avatar": "החלפת תמונת משתמש", "edit-profile": "עריכת פרופיל", - "edit-wip-limit": "Edit WIP Limit", + "edit-wip-limit": "עריכת מגבלת „בעבודה”", + "soft-wip-limit": "מגבלת „בעבודה” רכה", "editCardStartDatePopup-title": "שינוי מועד התחלה", "editCardDueDatePopup-title": "שינוי מועד סיום", "editLabelPopup-title": "שינוי תווית", @@ -190,7 +191,7 @@ "email-sent": "הודעת הדוא״ל נשלחה", "email-verifyEmail-subject": "אימות כתובת הדוא״ל שלך באתר __siteName__", "email-verifyEmail-text": "__user__ שלום,\n\nלאימות כתובת הדוא״ל המשויכת לחשבונך, עליך פשוט ללחוץ על הקישור המופיע להלן.\n\n__url__\n\nתודה.", - "enable-wip-limit": "Enable WIP Limit", + "enable-wip-limit": "הפעלת מגבלת „בעבודה”", "error-board-doesNotExist": "לוח זה אינו קיים", "error-board-notAdmin": "צריכות להיות לך הרשאות ניהול על לוח זה כדי לעשות זאת", "error-board-notAMember": "עליך לקבל חברות בלוח זה כדי לעשות זאת", @@ -245,8 +246,8 @@ "language": "שפה", "last-admin-desc": "אין אפשרות לשנות תפקידים כיוון שחייב להיות מנהל אחד לפחות.", "leave-board": "עזיבת הלוח", - "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", - "leaveBoardPopup-title": "Leave Board ?", + "leave-board-pop": "לעזוב את __boardTitle__? שמך יוסר מכל הכרטיסים שבלוח זה.", + "leaveBoardPopup-title": "לעזוב לוח ?", "link-card": "קישור לכרטיס זה", "list-archive-cards": "העברת כל הכרטיסים שברשימה זו לארכיון", "list-archive-cards-pop": "פעולה זו תסיר את כל הכרטיסים שברשימה הזו מהלוח. כדי לצפות בכרטיסים שבארכיון ולהחזיר אותם בחזרה ללוח, יש ללחוץ על „תפריט“ > „פריטים בארכיון“.", @@ -314,8 +315,8 @@ "save": "שמירה", "search": "חיפוש", "select-color": "בחירת צבע", - "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", - "setWipLimitPopup-title": "Set WIP Limit", + "set-wip-limit-value": "הגדרת מגבלה למספר המרבי של משימות ברשימה זו", + "setWipLimitPopup-title": "הגדרת מגבלת „בעבודה”", "shortcut-assign-self": "להקצות אותי לכרטיס הנוכחי", "shortcut-autocomplete-emoji": "השלמה אוטומטית לאימוג׳י", "shortcut-autocomplete-members": "השלמה אוטומטית של חברים", @@ -356,9 +357,9 @@ "welcome-list1": "יסודות", "welcome-list2": "מתקדם", "what-to-do": "מה ברצונך לעשות?", - "wipLimitErrorPopup-title": "Invalid WIP Limit", - "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", - "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", + "wipLimitErrorPopup-title": "מגבלת „בעבודה” שגויה", + "wipLimitErrorPopup-dialog-pt1": "מספר המשימות ברשימה זו גדולה ממגבלת הפריטים „בעבודה” שהגדרת.", + "wipLimitErrorPopup-dialog-pt2": "נא להוציא חלק מהמשימות מרשימה זו או להגדיר מגבלת „בעבודה” גדולה יותר.", "admin-panel": "חלונית ניהול המערכת", "settings": "הגדרות", "people": "אנשים", @@ -382,9 +383,9 @@ "email-invite-register-text": "__user__ יקר,\n\nקיבלת הזמנה מאת __inviter__ לשתף פעולה ב־Wekan.\n\nנא ללחוץ על הקישור:\n__url__\n\nקוד ההזמנה שלך הוא: __icode__\n\nתודה.", "error-invitation-code-not-exist": "קוד ההזמנה אינו קיים", "error-notAuthorized": "אין לך הרשאה לצפות בעמוד זה.", - "outgoing-webhooks": "Outgoing Webhooks", - "outgoingWebhooksPopup-title": "Outgoing Webhooks", - "new-outgoing-webhook": "New Outgoing Webhook", + "outgoing-webhooks": "קרסי רשת יוצאים", + "outgoingWebhooksPopup-title": "קרסי רשת יוצאים", + "new-outgoing-webhook": "קרסי רשת יוצאים חדשים", "no-name": "(לא ידוע)", "Wekan_version": "גרסת Wekan", "Node_version": "גרסת Node", @@ -403,5 +404,8 @@ "yes": "כן", "no": "לא", "accounts": "חשבונות", - "accounts-allowEmailChange": "אפשר שינוי דוא\"ל" + "accounts-allowEmailChange": "אפשר שינוי דוא\"ל", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json index 72b151da..1b5a25cc 100644 --- a/i18n/hu.i18n.json +++ b/i18n/hu.i18n.json @@ -1,263 +1,264 @@ { - "accept": "Elfogad", + "accept": "Elfogadás", "act-activity-notify": "[Wekan] Tevékenység értesítés", - "act-addAttachment": "attached __attachment__ to __card__", - "act-addChecklist": "added checklist __checklist__ to __card__", - "act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__", - "act-addComment": "commented on __card__: __comment__", - "act-createBoard": "created __board__", - "act-createCard": "added __card__ to __list__", - "act-createList": "added __list__ to __board__", - "act-addBoardMember": "added __member__ to __board__", - "act-archivedBoard": "archived __board__", - "act-archivedCard": "archived __card__", - "act-archivedList": "archived __list__", - "act-importBoard": "imported __board__", - "act-importCard": "imported __card__", - "act-importList": "imported __list__", - "act-joinMember": "added __member__ to __card__", - "act-moveCard": "moved __card__ from __oldList__ to __list__", - "act-removeBoardMember": "removed __member__ from __board__", - "act-restoredCard": "restored __card__ to __board__", - "act-unjoinMember": "removed __member__ from __card__", + "act-addAttachment": "__attachment__ mellékletet csatolt a kártyához: __card__", + "act-addChecklist": "__checklist__ ellenőrzőlistát adott hozzá a kártyához: __card__", + "act-addChecklistItem": "__checklistItem__ elemet adott hozzá a(z) __checklist__ ellenőrzőlistához ezen a kártyán: __card__", + "act-addComment": "hozzászólt a(z) __card__ kártyán: __comment__", + "act-createBoard": "létrehozta a táblát: __board__", + "act-createCard": "__card__ kártyát adott hozzá a listához: __list__", + "act-createList": "__list__ listát adott hozzá a táblához: __board__", + "act-addBoardMember": "__member__ tagot hozzáadta a táblához: __board__", + "act-archivedBoard": "archiválta a táblát: __board__", + "act-archivedCard": "archiválta a kártyát: __card__", + "act-archivedList": "archiválta a listát: __list__", + "act-importBoard": "importálta a táblát: __board__", + "act-importCard": "importálta a kártyát: __card__", + "act-importList": "importálta a listát: __list__", + "act-joinMember": "__member__ tagot hozzáadta a kártyához: __card__", + "act-moveCard": "áthelyezte a(z) __card__ kártyát: __oldList__ → __list__", + "act-removeBoardMember": "eltávolította __member__ tagot a tábláról: __board__", + "act-restoredCard": "visszaállította a(z) __card__ kártyát ide: __board__", + "act-unjoinMember": "eltávolította __member__ tagot a kártyáról: __card__", "act-withBoardTitle": "[Wekan] __board__", "act-withCardTitle": "[__board__] __card__", "actions": "Műveletek", "activities": "Tevékenységek", "activity": "Tevékenység", - "activity-added": "added %s to %s", - "activity-archived": "archiválva %s", - "activity-attached": "attached %s to %s", - "activity-created": "létrehozva %s", - "activity-excluded": "excluded %s from %s", - "activity-imported": "imported %s into %s from %s", - "activity-imported-board": "imported %s from %s", + "activity-added": "%s hozzáadva ehhez: %s", + "activity-archived": "%s archiválva", + "activity-attached": "%s mellékletet csatolt a kártyához: %s", + "activity-created": "%s létrehozva", + "activity-excluded": "%s kizárva innen: %s", + "activity-imported": "%s importálva ebbe: %s, innen: %s", + "activity-imported-board": "%s importálva innen: %s", "activity-joined": "%s csatlakozott", - "activity-moved": "moved %s from %s to %s", - "activity-on": "on %s", - "activity-removed": "removed %s from %s", - "activity-sent": "sent %s to %s", + "activity-moved": "%s áthelyezve: %s → %s", + "activity-on": "ekkor: %s", + "activity-removed": "%s eltávolítva innen: %s", + "activity-sent": "%s elküldve ide: %s", "activity-unjoined": "%s kilépett a csoportból", - "activity-checklist-added": "added checklist to %s", - "activity-checklist-item-added": "added checklist item to '%s' in %s", - "add": "Hozzáad", - "add-attachment": "Add Attachment", - "add-board": "Add Board", - "add-card": "Add Card", - "add-checklist": "Add Checklist", - "add-checklist-item": "Elem hozzáadása a feladatlistához", - "add-cover": "Új borító", - "add-label": "Add Label", - "add-list": "Add List", + "activity-checklist-added": "ellenőrzőlista hozzáadva ehhez: %s", + "activity-checklist-item-added": "ellenőrzőlista elem hozzáadva ehhez: „%s”, ebben: %s", + "add": "Hozzáadás", + "add-attachment": "Melléklet hozzáadása", + "add-board": "Tábla hozzáadása", + "add-card": "Kártya hozzáadása", + "add-checklist": "Ellenőrzőlista hozzáadása", + "add-checklist-item": "Elem hozzáadása az ellenőrzőlistához", + "add-cover": "Borító hozzáadása", + "add-label": "Címke hozzáadása", + "add-list": "Lista hozzáadása", "add-members": "Tagok hozzáadása", "added": "Hozzáadva", "addMemberPopup-title": "Tagok", "admin": "Adminisztrátor", - "admin-desc": "Lehet szerkeszteni a lapot, tagokat távolíthat el, és és a fórumon-beállításainak módosítása.", - "admin-announcement": "Announcement", - "admin-announcement-active": "Active System-Wide Announcement", - "admin-announcement-title": "Announcement from Administrator", + "admin-desc": "Megtekintheti és szerkesztheti a kártyákat, eltávolíthat tagokat, valamint megváltoztathatja a tábla beállításait.", + "admin-announcement": "Bejelentés", + "admin-announcement-active": "Bekapcsolt rendszerszintű bejelentés", + "admin-announcement-title": "Bejelentés az adminisztrátortól", "all-boards": "Összes tábla", - "and-n-other-card": "And __count__ other card", - "and-n-other-card_plural": "And __count__ other cards", + "and-n-other-card": "És __count__ egyéb kártya", + "and-n-other-card_plural": "És __count__ egyéb kártya", "apply": "Alkalmaz", - "app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.", - "archive": "Archív", - "archive-all": "Összes archivált", - "archive-board": "Archívált tábla", - "archive-card": "Archívált kártya", - "archive-list": "Archive List", - "archive-selection": "Archiváld a megjelölteket", - "archiveBoardPopup-title": "Archiváljuk a táblát?", + "app-is-offline": "A Wekan betöltés alatt van, kérem várjon. Az oldal újratöltése adatvesztést okoz. Ha a Wekan nem töltődik be, akkor ellenőrizze, hogy a Wekan kiszolgáló nem állt-e le.", + "archive": "Archiválás", + "archive-all": "Összes archiválása", + "archive-board": "Tábla archiválása", + "archive-card": "Kártya archiválása", + "archive-list": "Lista archiválása", + "archive-selection": "Kijelölés archiválása", + "archiveBoardPopup-title": "Archiválja a táblát?", "archived-items": "Archivált elemek", - "archived-boards": "Archived Boards", - "restore-board": "Restore Board", - "no-archived-boards": "No Archived Boards.", + "archived-boards": "Archivált táblák", + "restore-board": "Tábla visszaállítása", + "no-archived-boards": "Nincsenek archivált táblák.", "archives": "Archívumok", "assign-member": "Tag hozzárendelése", "attached": "csatolva", - "attachment": "Csatolmány", - "attachment-delete-pop": "A csatolmány törlése végeleges. Nincs visszaállítás.", - "attachmentDeletePopup-title": "Törli a csatolmányt?", - "attachments": "Csatolmányok", - "auto-watch": "Automatically watch boards when they are created", - "avatar-too-big": "The avatar is too large (70KB max)", + "attachment": "Melléklet", + "attachment-delete-pop": "A melléklet törlése végeleges. Nincs visszaállítás.", + "attachmentDeletePopup-title": "Törli a mellékletet?", + "attachments": "Mellékletek", + "auto-watch": "Táblák automatikus megtekintése, amikor létrejönnek", + "avatar-too-big": "Az avatár túl nagy (legfeljebb 70 KB)", "back": "Vissza", - "board-change-color": "Szín módosítása", - "board-nb-stars": "%s stars", + "board-change-color": "Szín megváltoztatása", + "board-nb-stars": "%s csillag", "board-not-found": "A tábla nem található", - "board-private-info": "Eza tábla legyen <strong>privát</strong>.", - "board-public-info": "Ez a tábla legyen <strong>publikus</strong>.", - "boardChangeColorPopup-title": "A tábla háttérszínének módosítása", + "board-private-info": "Ez a tábla legyen <strong>személyes</strong>.", + "board-public-info": "Ez a tábla legyen <strong>nyilvános</strong>.", + "boardChangeColorPopup-title": "Tábla hátterének megváltoztatása", "boardChangeTitlePopup-title": "Tábla átnevezése", - "boardChangeVisibilityPopup-title": "Láthatóság módosítása", - "boardChangeWatchPopup-title": "Óra módosítása", + "boardChangeVisibilityPopup-title": "Láthatóság megváltoztatása", + "boardChangeWatchPopup-title": "Megfigyelés megváltoztatása", "boardMenuPopup-title": "Tábla menü", "boards": "Táblák", - "bucket-example": "Like “Bucket List” for example", - "cancel": "Mégsem", - "card-archived": "Ez a kártya archivált.", + "bucket-example": "Mint például „Bakancslista”", + "cancel": "Mégse", + "card-archived": "Ez a kártya archiválva van.", "card-comments-title": "Ez a kártya %s hozzászólást tartalmaz.", - "card-delete-notice": "A törlés végleges. Az összes eseményt elveszíti ami ehhez a kártyához tartozik.", - "card-delete-pop": "Minden esemény eltávolításra kerül a tevékenység listájából és többé nem lehet újra nyitni ezt a kártyát. Nincs visszaállítási lehetőség.", - "card-delete-suggest-archive": "Archiválhatod a kártyákat hogy eltávolítsd a tábláról és és megőrizheted az eseményt.", - "card-due": "Eddig", - "card-due-on": "Ebben az időpontban", - "card-edit-attachments": "Csatolmányok szerkesztése", - "card-edit-labels": "Cimkék szerkesztése", + "card-delete-notice": "A törlés végleges. Az összes műveletet elveszíti, amely ehhez a kártyához tartozik.", + "card-delete-pop": "Az összes művelet el lesz távolítva a tevékenységlistából, és nem lesz képes többé újra megnyitni a kártyát. Nincs visszaállítási lehetőség.", + "card-delete-suggest-archive": "Archiválhat egy kártyát, hogy eltávolítsa a tábláról, és megőrizze a tevékenységet.", + "card-due": "Esedékes", + "card-due-on": "Esedékes ekkor", + "card-edit-attachments": "Mellékletek szerkesztése", + "card-edit-labels": "Címkék szerkesztése", "card-edit-members": "Tagok szerkesztése", - "card-labels-title": "A kártya cimkéjének módosítása", - "card-members-title": "Adj hozzá vagy távolítsd el a tagokat a táblákról és a kártyáról", - "card-start": "Start", - "card-start-on": "Kezdődik", + "card-labels-title": "A kártya címkéinek megváltoztatása.", + "card-members-title": "A tábla tagjainak hozzáadása vagy eltávolítása a kártyáról.", + "card-start": "Kezdés", + "card-start-on": "Kezdés ekkor", "cardAttachmentsPopup-title": "Innen csatolva", - "cardDeletePopup-title": "Kártya törlése?", - "cardDetailsActionsPopup-title": "Kártya események", - "cardLabelsPopup-title": "Cimkék", + "cardDeletePopup-title": "Törli a kártyát?", + "cardDetailsActionsPopup-title": "Kártyaműveletek", + "cardLabelsPopup-title": "Címkék", "cardMembersPopup-title": "Tagok", "cardMorePopup-title": "Több", "cards": "Kártyák", - "change": "Módosít", - "change-avatar": "Avatar módosítása", - "change-password": "Jelszó módosítása", - "change-permissions": "Hozzáférések módosítása", - "change-settings": "Beállítások módosítása", - "changeAvatarPopup-title": "Avatar módosítása", - "changeLanguagePopup-title": "Nyelv módosítása", - "changePasswordPopup-title": "Change Password", - "changePermissionsPopup-title": "Hozzáférések módosítása", - "changeSettingsPopup-title": "Beállítások módosítása", - "checklists": "Ellenőrzőlista ", - "click-to-star": "Kattints a csillagra és add a kiemeltekhez ezt a táblát.", - "click-to-unstar": "Kattints a csillagra hogy eltávolítsd a kiemeltek közül.", - "clipboard": "Vágólap vagy húzd és dobd", - "close": "Bezár", + "change": "Változtatás", + "change-avatar": "Avatár megváltoztatása", + "change-password": "Jelszó megváltoztatása", + "change-permissions": "Jogosultságok megváltoztatása", + "change-settings": "Beállítások megváltoztatása", + "changeAvatarPopup-title": "Avatár megváltoztatása", + "changeLanguagePopup-title": "Nyelv megváltoztatása", + "changePasswordPopup-title": "Jelszó megváltoztatása", + "changePermissionsPopup-title": "Jogosultságok megváltoztatása", + "changeSettingsPopup-title": "Beállítások megváltoztatása", + "checklists": "Ellenőrzőlisták", + "click-to-star": "Kattintson a tábla csillagozásához.", + "click-to-unstar": "Kattintson a tábla csillagának eltávolításához.", + "clipboard": "Vágólap vagy fogd és vidd", + "close": "Bezárás", "close-board": "Tábla bezárása", - "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.", + "close-board-pop": "Lehetősége lesz visszaállítani a táblát a kezdőlap fejlécében lévő „Archívumok” gombra kattintva.", "color-black": "fekete", "color-blue": "kék", "color-green": "zöld", - "color-lime": "lime", + "color-lime": "citrus", "color-orange": "narancssárga", "color-pink": "rózsaszín", "color-purple": "lila", "color-red": "piros", - "color-sky": "világos kék", + "color-sky": "égszínkék", "color-yellow": "sárga", "comment": "Megjegyzés", - "comment-placeholder": "Write Comment", - "comment-only": "Comment only", - "comment-only-desc": "Can comment on cards only.", + "comment-placeholder": "Megjegyzés írása", + "comment-only": "Csak megjegyzés", + "comment-only-desc": "Csak megjegyzést írhat a kártyákhoz.", "computer": "Számítógép", - "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist", - "copy-card-link-to-clipboard": "Copy card link to clipboard", - "copyCardPopup-title": "Copy Card", - "create": "Létrehoz", - "createBoardPopup-title": "Új tábla", - "chooseBoardSourcePopup-title": "Import board", - "createLabelPopup-title": "Új cimke", - "current": "aktuális", + "confirm-checklist-delete-dialog": "Biztosan törölni szeretné az ellenőrzőlistát?", + "copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra", + "copyCardPopup-title": "Kártya másolása", + "create": "Létrehozás", + "createBoardPopup-title": "Tábla létrehozása", + "chooseBoardSourcePopup-title": "Tábla importálása", + "createLabelPopup-title": "Címke létrehozása", + "current": "jelenlegi", "date": "Dátum", - "decline": "Elutasít", - "default-avatar": "Alapértelmezett avatar", - "delete": "Töröl", - "deleteLabelPopup-title": "Cimke törlése?", + "decline": "Elutasítás", + "default-avatar": "Alapértelmezett avatár", + "delete": "Törlés", + "deleteLabelPopup-title": "Törli a címkét?", "description": "Leírás", - "disambiguateMultiLabelPopup-title": "Cimke értelmező esemény", - "disambiguateMultiMemberPopup-title": "Tag értelmező esemény", - "discard": "Elutasít", + "disambiguateMultiLabelPopup-title": "Címkeművelet egyértelműsítése", + "disambiguateMultiMemberPopup-title": "Tagművelet egyértelműsítése", + "discard": "Eldobás", "done": "Kész", "download": "Letöltés", - "edit": "Szerkeszt", - "edit-avatar": "Avatar módosítása", + "edit": "Szerkesztés", + "edit-avatar": "Avatár megváltoztatása", "edit-profile": "Profil szerkesztése", - "edit-wip-limit": "Edit WIP Limit", - "editCardStartDatePopup-title": "Kezdő dátum módosítása", - "editCardDueDatePopup-title": "Lejárati dátum módosítása", - "editLabelPopup-title": "Cimke módosítása", + "edit-wip-limit": "WIP korlát szerkesztése", + "soft-wip-limit": "Gyenge WIP korlát", + "editCardStartDatePopup-title": "Kezdődátum megváltoztatása", + "editCardDueDatePopup-title": "Esedékesség dátumának megváltoztatása", + "editLabelPopup-title": "Címke megváltoztatása", "editNotificationPopup-title": "Értesítés szerkesztése", - "editProfilePopup-title": "Edit Profile", - "email": "Email", - "email-enrollAccount-subject": "A fiókodat létrehozták a __siteName__ oldalon", - "email-enrollAccount-text": "Üdvözöljük __user__,\n\nA rendszer használatának megkezdéséhez Egyszerűen kattintson az alábbi linkre.\n\n__url__\n\nKöszönjük.", - "email-fail": "Email küldése sikertelen", - "email-invalid": "Nem megfelelő email cím", - "email-invite": "Meghívás Emailben", - "email-invite-subject": "__inviter__ küldött neked egy meghívót", - "email-invite-text": "Üdvözöljük __user__,\n\n__inviter__ meghívott téged közreműködésre az alábbi táblába \"__board__\".\n\nKérjük kattints az alábbi linkre:\n\n__url__\n\nKöszönjük.", - "email-resetPassword-subject": "Jelszó visszaállítása a __siteName__ oldalon", - "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.", - "email-sent": "Email elküldve", - "email-verifyEmail-subject": "Igazold vissza az email címedet a __siteName__ oldalon", - "email-verifyEmail-text": "Üdvözöljük __user__,\n\nAz Email címe ellenőrzéséhez kérjük kattintson az alábbi linkre.\n\n__url__\n\nKöszönjük.", - "enable-wip-limit": "Enable WIP Limit", + "editProfilePopup-title": "Profil szerkesztése", + "email": "E-mail", + "email-enrollAccount-subject": "Létrejött a profilja a következő oldalon: __siteName__", + "email-enrollAccount-text": "Kedves __user__!\n\nA szolgáltatás használatának megkezdéséhez egyszerűen kattintson a lenti hivatkozásra.\n\n__url__\n\nKöszönjük.", + "email-fail": "Az e-mail küldése nem sikerült", + "email-invalid": "Érvénytelen e-mail", + "email-invite": "Meghívás e-mailben", + "email-invite-subject": "__inviter__ egy meghívást küldött Önnek", + "email-invite-text": "Kedves __user__!\n\n__inviter__ meghívta Önt, hogy csatlakozzon a(z) „__board__” táblán történő együttműködéshez.\n\nKattintson az alábbi hivatkozásra:\n\n__url__\n\nKöszönjük.", + "email-resetPassword-subject": "Jelszó visszaállítása ezen az oldalon: __siteName__", + "email-resetPassword-text": "Kedves __user__!\n\nA jelszava visszaállításához egyszerűen kattintson a lenti hivatkozásra.\n\n__url__\n\nKöszönjük.", + "email-sent": "E-mail elküldve", + "email-verifyEmail-subject": "Igazolja vissza az e-mail címét a következő oldalon: __siteName__", + "email-verifyEmail-text": "Kedves __user__!\n\nAz e-mail fiókjának visszaigazolásához egyszerűen kattintson a lenti hivatkozásra.\n\n__url__\n\nKöszönjük.", + "enable-wip-limit": "WIP korlát engedélyezése", "error-board-doesNotExist": "Ez a tábla nem létezik", - "error-board-notAdmin": "Adminisztrátor joggal kell rendelkezned hogy megtehesd ezen a táblán", - "error-board-notAMember": "Az tábla tagjának kell lenned, hogy megtehesd", - "error-json-malformed": "Your text is not valid JSON", - "error-json-schema": "Your JSON data does not include the proper information in the correct format", + "error-board-notAdmin": "A tábla adminisztrátorának kell lennie, hogy ezt megtehesse", + "error-board-notAMember": "A tábla tagjának kell lennie, hogy ezt megtehesse", + "error-json-malformed": "A szöveg nem érvényes JSON", + "error-json-schema": "A JSON adatok nem a helyes formátumban tartalmazzák a megfelelő információkat", "error-list-doesNotExist": "Ez a lista nem létezik", "error-user-doesNotExist": "Ez a felhasználó nem létezik", - "error-user-notAllowSelf": "You can not invite yourself", - "error-user-notCreated": "Ez a felhasználó nem jött létre", + "error-user-notAllowSelf": "Nem hívhatja meg saját magát", + "error-user-notCreated": "Ez a felhasználó nincs létrehozva", "error-username-taken": "Ez a felhasználónév már foglalt", - "error-email-taken": "Email has already been taken", + "error-email-taken": "Az e-mail már foglalt", "export-board": "Tábla exportálása", "filter": "Szűrő", "filter-cards": "Kártyák szűrése", - "filter-clear": "Szürő törlése", - "filter-no-label": "Nincs cimke", - "filter-no-member": "Nincsenek tagok", + "filter-clear": "Szűrő törlése", + "filter-no-label": "Nincs címke", + "filter-no-member": "Nincs tag", "filter-on": "Szűrő bekapcsolva", - "filter-on-desc": "Éppen kártyákat szűrsz ezen a táblán. Kattints ide a szűrő szerkesztéséhez.", - "filter-to-selection": "Szűrő beállítása a kijelölés szerint", + "filter-on-desc": "A kártyaszűrés be van kapcsolva ezen a táblán. Kattintson ide a szűrő szerkesztéséhez.", + "filter-to-selection": "Szűrés a kijelöléshez", "fullname": "Teljes név", - "header-logo-title": "Vissza a táblák oldaladra.", + "header-logo-title": "Vissza a táblák oldalára.", "hide-system-messages": "Rendszerüzenetek elrejtése", - "headerBarCreateBoardPopup-title": "Új tábla", + "headerBarCreateBoardPopup-title": "Tábla létrehozása", "home": "Kezdőlap", "import": "Importálás", - "import-board": "import board", - "import-board-c": "Import board", - "import-board-title-trello": "Tábla importálása a Trello-ról", - "import-board-title-wekan": "Import board from Wekan", - "import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.", - "from-trello": "From Trello", - "from-wekan": "From Wekan", - "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.", - "import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", - "import-json-placeholder": "Paste your valid JSON data here", - "import-map-members": "Tagok megjelenítése", - "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users", - "import-show-user-mapping": "Review members mapping", - "import-user-select": "Pick the Wekan user you want to use as this member", - "importMapMembersAddPopup-title": "Select Wekan member", - "info": "Version", + "import-board": "tábla importálása", + "import-board-c": "Tábla importálása", + "import-board-title-trello": "Tábla importálása a Trello oldalról", + "import-board-title-wekan": "Tábla importálása a Wekan oldalról", + "import-sandstorm-warning": "Az importált tábla törölni fogja a táblán lévő összes meglévő adatot, és kicseréli az importált táblával.", + "from-trello": "A Trello oldalról", + "from-wekan": "A Wekan oldalról", + "import-board-instruction-trello": "A Trello tábláján menjen a „Menü”, majd a „Több”, „Nyomtatás és exportálás”, „JSON exportálása” menüpontokra, és másolja ki az eredményül kapott szöveget.", + "import-board-instruction-wekan": "A Wekan tábláján menjen a „Menü”, majd a „Tábla exportálás” menüpontra, és másolja ki a letöltött fájlban lévő szöveget.", + "import-json-placeholder": "Illessze be ide az érvényes JSON adatokat", + "import-map-members": "Tagok leképezése", + "import-members-map": "Az importált táblának van néhány tagja. Képezze le a tagokat, akiket importálni szeretne a Wekan felhasználókba.", + "import-show-user-mapping": "Tagok leképezésének vizsgálata", + "import-user-select": "Válassza ki a Wekan felhasználót, akit ezen tagként használni szeretne", + "importMapMembersAddPopup-title": "Wekan tag kiválasztása", + "info": "Verzió", "initials": "Kezdőbetűk", - "invalid-date": "Hibás dátum", - "joined": "becsatlakozott", - "just-invited": "Éppen most hívtak meg erre a táblára", + "invalid-date": "Érvénytelen dátum", + "joined": "csatlakozott", + "just-invited": "Éppen most hívták meg erre a táblára", "keyboard-shortcuts": "Gyorsbillentyűk", - "label-create": "Új cimke", - "label-default": "%s cimke (alapértelmezett)", - "label-delete-pop": "Nincsen visszaállítás. Ez el fogja távolítani ezt a cimkét az összes kártyáról és törli az előzményeket.", - "labels": "Cimkék", + "label-create": "Címke létrehozása", + "label-default": "%s címke (alapértelmezett)", + "label-delete-pop": "Nincs visszavonás. Ez el fogja távolítani ezt a címkét az összes kártyáról, és törli az előzményeit.", + "labels": "Címkék", "language": "Nyelv", - "last-admin-desc": "You can’t change roles because there must be at least one admin.", + "last-admin-desc": "Nem változtathatja meg a szerepeket, mert legalább egy adminisztrátora szükség van.", "leave-board": "Tábla elhagyása", - "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", - "leaveBoardPopup-title": "Leave Board ?", - "link-card": "Kapcsolja ehhez a kártyához", - "list-archive-cards": "Archiváld az összes kártyát ezen a listán.", - "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.", - "list-move-cards": "Move all cards in this list", - "list-select-cards": "Válaszd ki az összes kártyát ezen a listán", - "listActionPopup-title": "Események megjelenítése", + "leave-board-pop": "Biztosan el szeretné hagyni ezt a táblát: __boardTitle__? El lesz távolítva a táblán lévő összes kártyáról.", + "leaveBoardPopup-title": "Elhagyja a táblát?", + "link-card": "Összekapcsolás ezzel a kártyával", + "list-archive-cards": "Az összes kártya archiválása ezen a listán", + "list-archive-cards-pop": "Ez el fogja távolítani a listán lévő összes kártyát a tábláról. Az archivált kártyák megtekintéséhez, és azok visszahozásához a táblára, kattintson a „Menü” → „Archivált elemek” menüpontra.", + "list-move-cards": "A listán lévő összes kártya áthelyezése", + "list-select-cards": "A listán lévő összes kártya kiválasztása", + "listActionPopup-title": "Műveletek felsorolása", "listImportCardPopup-title": "Trello kártya importálása", "listMorePopup-title": "Több", - "link-list": "Link to this list", - "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.", - "list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.", + "link-list": "Összekapcsolás ezzel a listával", + "list-delete-pop": "Az összes művelet el lesz távolítva a tevékenységlistából, és nem lesz lehetősége visszaállítani a listát. Nincs visszavonás.", + "list-delete-suggest-archive": "Archiválhat egy listát, hogy eltávolítsa a tábláról, és megőrizze a tevékenységet.", "lists": "Listák", "log-out": "Kijelentkezés", "log-in": "Bejelentkezés", @@ -265,73 +266,73 @@ "memberMenuPopup-title": "Tagok beállításai", "members": "Tagok", "menu": "Menü", - "move-selection": "Kijelöltek mozgatása", - "moveCardPopup-title": "Kártya mozgatása", - "moveCardToBottom-title": "Mozgatás az aljára", - "moveCardToTop-title": "Mozgatás a tetejére", - "moveSelectionPopup-title": "Kijelöltek mozgatása", - "multi-selection": "Kijelöltek mozgatása", + "move-selection": "Kijelölés áthelyezése", + "moveCardPopup-title": "Kártya áthelyezése", + "moveCardToBottom-title": "Áthelyezés az aljára", + "moveCardToTop-title": "Áthelyezés a tetejére", + "moveSelectionPopup-title": "Kijelölés áthelyezése", + "multi-selection": "Többszörös kijelölés", "multi-selection-on": "Többszörös kijelölés bekapcsolva", - "muted": "Elnémítva", - "muted-info": "Soha nem leszel értesítve ennek a táblának a módosításairól.", + "muted": "Némítva", + "muted-info": "Soha sem lesz értesítve a táblán lévő semmilyen változásról.", "my-boards": "Saját tábláim", "name": "Név", "no-archived-cards": "Nincsenek archivált kártyák.", "no-archived-lists": "Nincsenek archivált listák.", - "no-results": "Nincs eredmény", + "no-results": "Nincs találat", "normal": "Normál", - "normal-desc": "Megtekinthet és szerkeszthet kártyákat. Nem módosíthatja a beállításokat.", - "not-accepted-yet": "A meghívást még nem fogadták el", - "notify-participate": "Receive updates to any cards you participate as creater or member", - "notify-watch": "Receive updates to any boards, lists, or cards you’re watching", + "normal-desc": "Megtekintheti és szerkesztheti a kártyákat. Nem változtathatja meg a beállításokat.", + "not-accepted-yet": "A meghívás még nincs elfogadva", + "notify-participate": "Frissítések fogadása bármely kártyánál, amelynél létrehozóként vagy tagként vesz részt", + "notify-watch": "Frissítések fogadása bármely táblánál, listánál vagy kártyánál, amelyet megtekint", "optional": "opcionális", "or": "vagy", - "page-maybe-private": "Ez az oldal privát. A megtekintéshez jelentkezz be itt: <a href='%s'>bejelentkezés</a>.", + "page-maybe-private": "Ez az oldal személyes lehet. Esetleg megtekintheti, ha <a href='%s'>bejelentkezik</a>.", "page-not-found": "Az oldal nem található.", "password": "Jelszó", - "paste-or-dragdrop": "illeszd be, vagy húzd ide a kép fájlt (csak képeket)", - "participating": "Résztvevő", + "paste-or-dragdrop": "illessze be, vagy fogd és vidd módon húzza ide a képfájlt (csak képeket)", + "participating": "Részvétel", "preview": "Előnézet", "previewAttachedImagePopup-title": "Előnézet", "previewClipboardImagePopup-title": "Előnézet", - "private": "Privát", - "private-desc": "Ez a tábla privát. Csak a táblához hozzáadott emberek tekinthetik meg és szerkeszthetik.", + "private": "Személyes", + "private-desc": "Ez a tábla személyes. Csak a táblához hozzáadott emberek tekinthetik meg és szerkeszthetik.", "profile": "Profil", - "public": "Publikus", - "public-desc": "Ez a tábla publikus. A link birtokában bárki megtekintheti és látszik a keresőkben mint a Google. Csak azok az emberek szerkeszthetik akiket hozzáadtak.", - "quick-access-description": "Emeled ki a táblát hogy létrehozz egy parancsikont ezen a sávon.", + "public": "Nyilvános", + "public-desc": "Ez a tábla nyilvános. A hivatkozás birtokában bárki számára látható, és megjelenik az olyan keresőmotorokban, mint például a Google. Csak a táblához hozzáadott emberek szerkeszthetik.", + "quick-access-description": "Csillagozzon meg egy táblát egy gyors hivatkozás hozzáadásához ebbe a sávba.", "remove-cover": "Borító eltávolítása", "remove-from-board": "Eltávolítás a tábláról", - "remove-label": "Remove Label", - "listDeletePopup-title": "Delete List ?", + "remove-label": "Címke eltávolítása", + "listDeletePopup-title": "Törli a listát?", "remove-member": "Tag eltávolítása", "remove-member-from-card": "Eltávolítás a kártyáról", - "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.", + "remove-member-pop": "Eltávolítja __name__ (__username__) felhasználót a tábláról: __boardTitle__? A tag el lesz távolítva a táblán lévő összes kártyáról. Értesítést fog kapni erről.", "removeMemberPopup-title": "Eltávolítja a tagot?", - "rename": "Átnevez", + "rename": "Átnevezés", "rename-board": "Tábla átnevezése", - "restore": "Visszaállít", + "restore": "Visszaállítás", "save": "Mentés", "search": "Keresés", - "select-color": "Select Color", - "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", - "setWipLimitPopup-title": "Set WIP Limit", - "shortcut-assign-self": "Add hozzá magad az aktuális kártyához", - "shortcut-autocomplete-emoji": "Automatikus emoji kiegészítés", - "shortcut-autocomplete-members": "Automatikus tag név kiegészítés", + "select-color": "Szín kiválasztása", + "set-wip-limit-value": "Korlát beállítása a listán lévő feladatok legnagyobb számához", + "setWipLimitPopup-title": "WIP korlát beállítása", + "shortcut-assign-self": "Önmaga hozzárendelése a jelenlegi kártyához", + "shortcut-autocomplete-emoji": "Emodzsi automatikus kiegészítése", + "shortcut-autocomplete-members": "Tagok automatikus kiegészítése", "shortcut-clear-filters": "Összes szűrő törlése", - "shortcut-close-dialog": "Beszélgetés bezárása", + "shortcut-close-dialog": "Párbeszédablak bezárása", "shortcut-filter-my-cards": "Kártyáim szűrése", - "shortcut-show-shortcuts": "Hozd létre ezt a hivatkozási listát", - "shortcut-toggle-filterbar": "Szűrő oldalsáv kényszerítése", - "shortcut-toggle-sidebar": "Tábla oldalsáv kényszerítése", - "show-cards-minimum-count": "Mutasd a kártyák számát ha a lista többet tartalmaz mint", - "sidebar-open": "Oldalsáv megjelenítése", - "sidebar-close": "Oldalsáv elrejtése", + "shortcut-show-shortcuts": "A hivatkozási lista előre hozása", + "shortcut-toggle-filterbar": "Szűrő oldalsáv ki- és bekapcsolása", + "shortcut-toggle-sidebar": "Tábla oldalsáv ki- és bekapcsolása", + "show-cards-minimum-count": "Kártyaszámok megjelenítése, ha a lista többet tartalmaz mint", + "sidebar-open": "Oldalsáv megnyitása", + "sidebar-close": "Oldalsáv bezárása", "signupPopup-title": "Fiók létrehozása", - "star-board-title": "Kattints a tábla kiemeléséhez. Megjelenik a táblák lista tetején.", - "starred-boards": "Kiemelt táblák", - "starred-boards-description": "A kiemelt táblák megjelennek a táblák lista tetején.", + "star-board-title": "Kattintson a tábla csillagozásához. Meg fog jelenni a táblalistája tetején.", + "starred-boards": "Csillagozott táblák", + "starred-boards-description": "A csillagozott táblák megjelennek a táblalistája tetején.", "subscribe": "Feliratkozás", "team": "Csapat", "this-board": "ez a tábla", @@ -339,69 +340,72 @@ "time": "Idő", "title": "Cím", "tracking": "Követés", - "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.", - "unassign-member": "Tag eltávolítása", - "unsaved-description": "Van egy elmentetlen leírásod.", - "unwatch": "Figyelés leállítása", - "upload": "Feltölt", - "upload-avatar": "Tölts fel egy avatart", - "uploaded-avatar": "Feltöltött egy avatart", + "tracking-info": "Értesítve lesz az összes olyan kártya változásáról, amelyen létrehozóként vagy tagként vesz részt.", + "unassign-member": "Tag hozzárendelésének megszüntetése", + "unsaved-description": "Van egy mentetlen leírása.", + "unwatch": "Megfigyelés megszüntetése", + "upload": "Feltöltés", + "upload-avatar": "Egy avatár feltöltése", + "uploaded-avatar": "Egy avatár feltöltve", "username": "Felhasználónév", "view-it": "Megtekintés", - "warn-list-archived": "figyelem: ez a kártya szerepel az egyik archiv listán", - "watch": "Figyel", - "watching": "Megfigyelt", - "watching-info": "Értesítve leszel minden módosításról ebben a táblában.", + "warn-list-archived": "figyelmeztetés: ez a kártya egy archivált listán van", + "watch": "Megfigyelés", + "watching": "Megfigyelés", + "watching-info": "Értesítve lesz a táblán lévő összes változásról", "welcome-board": "Üdvözlő tábla", "welcome-list1": "Alapok", "welcome-list2": "Speciális", - "what-to-do": "Mit akarsz csinálni?", - "wipLimitErrorPopup-title": "Invalid WIP Limit", - "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", - "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", - "admin-panel": "Adminisztrációs felület", + "what-to-do": "Mit szeretne tenni?", + "wipLimitErrorPopup-title": "Érvénytelen WIP korlát", + "wipLimitErrorPopup-dialog-pt1": "A listán lévő feladatok száma magasabb a meghatározott WIP korlátnál.", + "wipLimitErrorPopup-dialog-pt2": "Helyezzen át néhány feladatot a listáról, vagy állítson be magasabb WIP korlátot.", + "admin-panel": "Adminisztrációs panel", "settings": "Beállítások", - "people": "Ember", + "people": "Emberek", "registration": "Regisztráció", - "disable-self-registration": "Egyéni regisztráció kikapcsolva", + "disable-self-registration": "Önregisztráció letiltása", "invite": "Meghívás", "invite-people": "Emberek meghívása", - "to-boards": "Táblá(k)hoz", - "email-addresses": "Email címek", - "smtp-host-description": "A levelezésed SMTP szerverének IP címe.", - "smtp-port-description": "Az SMTP szervered portja a kimenő levelekhez.", - "smtp-tls-description": "Enable TLS support for SMTP server", + "to-boards": "Táblákhoz", + "email-addresses": "E-mail címek", + "smtp-host-description": "Az SMTP kiszolgáló címe, amely az e-maileket kezeli.", + "smtp-port-description": "Az SMTP kiszolgáló által használt port a kimenő e-mailekhez.", + "smtp-tls-description": "TLS támogatás engedélyezése az SMTP kiszolgálónál", "smtp-host": "SMTP kiszolgáló", "smtp-port": "SMTP port", "smtp-username": "Felhasználónév", "smtp-password": "Jelszó", - "smtp-tls": "TLS support", - "send-from": "Tól", - "invitation-code": "Meghívó kód", - "email-invite-register-subject": "__inviter__ küldött neked egy meghívót", - "email-invite-register-text": "Kedves __user__,\n\n__inviter__ meghívott közreműködésre a Wekanba.\n\nKérlek kövesd az alábbi linket:\n__url__\n\nA meghívókódod: __icode__\n\nKöszönjük.", - "error-invitation-code-not-exist": "A meghívó kódja nem érvényes", - "error-notAuthorized": "You are not authorized to view this page.", - "outgoing-webhooks": "Outgoing Webhooks", - "outgoingWebhooksPopup-title": "Outgoing Webhooks", - "new-outgoing-webhook": "New Outgoing Webhook", - "no-name": "(Unknown)", - "Wekan_version": "Wekan version", - "Node_version": "Node version", - "OS_Arch": "OS Arch", - "OS_Cpus": "OS CPU Count", - "OS_Freemem": "OS Free Memory", - "OS_Loadavg": "OS Load Average", - "OS_Platform": "OS Platform", - "OS_Release": "OS Release", - "OS_Totalmem": "OS Total Memory", - "OS_Type": "OS Type", - "OS_Uptime": "OS Uptime", - "hours": "hours", - "minutes": "minutes", - "seconds": "seconds", - "yes": "Yes", - "no": "No", - "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "smtp-tls": "TLS támogatás", + "send-from": "Feladó", + "invitation-code": "Meghívási kód", + "email-invite-register-subject": "__inviter__ egy meghívás küldött Önnek", + "email-invite-register-text": "Kedves __user__!\n\n__inviter__ meghívta Önt közreműködésre a Wekan oldalra.\n\nKövesse a lenti hivatkozást:\n__url__\n\nÉs a meghívási kódja: __icode__\n\nKöszönjük.", + "error-invitation-code-not-exist": "A meghívási kód nem létezik", + "error-notAuthorized": "Nincs jogosultsága az oldal megtekintéséhez.", + "outgoing-webhooks": "Kimenő webhurkok", + "outgoingWebhooksPopup-title": "Kimenő webhurkok", + "new-outgoing-webhook": "Új kimenő webhurok", + "no-name": "(Ismeretlen)", + "Wekan_version": "Wekan verzió", + "Node_version": "Node verzió", + "OS_Arch": "Operációs rendszer architektúrája", + "OS_Cpus": "Operációs rendszer CPU száma", + "OS_Freemem": "Operációs rendszer szabad memóriája", + "OS_Loadavg": "Operációs rendszer átlagos terhelése", + "OS_Platform": "Operációs rendszer platformja", + "OS_Release": "Operációs rendszer kiadása", + "OS_Totalmem": "Operációs rendszer összes memóriája", + "OS_Type": "Operációs rendszer típusa", + "OS_Uptime": "Operációs rendszer üzemideje", + "hours": "óra", + "minutes": "perc", + "seconds": "másodperc", + "yes": "Igen", + "no": "Nem", + "accounts": "Fiókok", + "accounts-allowEmailChange": "E-mail megváltoztatásának engedélyezése", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 197616a4..4922ed4a 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Ubah Avatar", "edit-profile": "Sunting Profil", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Ubah tanggal mulai", "editCardDueDatePopup-title": "Ubah tanggal selesai", "editLabelPopup-title": "Ubah Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json index 4c321b70..7bec9026 100644 --- a/i18n/it.i18n.json +++ b/i18n/it.i18n.json @@ -2,8 +2,8 @@ "accept": "Accetta", "act-activity-notify": "[Wekan] Notifiche attività", "act-addAttachment": "ha allegato __attachment__ a __card__", - "act-addChecklist": "added checklist __checklist__ to __card__", - "act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__", + "act-addChecklist": "aggiunta checklist __checklist__ a __card__", + "act-addChecklistItem": "aggiunto __checklistItem__ alla checklist __checklist__ su __card__", "act-addComment": "ha commentato su __card__: __comment__", "act-createBoard": "ha creato __board__", "act-createCard": "ha aggiunto __card__ a __list__", @@ -54,9 +54,9 @@ "addMemberPopup-title": "Membri", "admin": "Amministratore", "admin-desc": "Può vedere e modificare schede, rimuovere membri e modificare le impostazioni della bacheca.", - "admin-announcement": "Announcement", - "admin-announcement-active": "Active System-Wide Announcement", - "admin-announcement-title": "Announcement from Administrator", + "admin-announcement": "Annunci", + "admin-announcement-active": "Attiva annunci di sistema", + "admin-announcement-title": "Annunci dall'Amministratore", "all-boards": "Tutte le bacheche", "and-n-other-card": "E __count__ altra scheda", "and-n-other-card_plural": "E __count__ altre schede", @@ -149,9 +149,9 @@ "comment-only": "Solo commenti", "comment-only-desc": "Puoi commentare solo le schede.", "computer": "Computer", - "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist", + "confirm-checklist-delete-dialog": "Sei sicuro di voler cancellare questa checklist?", "copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard", - "copyCardPopup-title": "Copy Card", + "copyCardPopup-title": "Copia Scheda", "create": "Crea", "createBoardPopup-title": "Crea bacheca", "chooseBoardSourcePopup-title": "Importa bacheca", @@ -171,7 +171,8 @@ "edit": "Modifica", "edit-avatar": "Cambia avatar", "edit-profile": "Modifica profilo", - "edit-wip-limit": "Edit WIP Limit", + "edit-wip-limit": "Modifica limite di work in progress", + "soft-wip-limit": "Limite Work in progress soft", "editCardStartDatePopup-title": "Cambia data di inizio", "editCardDueDatePopup-title": "Cambia data di scadenza", "editLabelPopup-title": "Cambia etichetta", @@ -190,7 +191,7 @@ "email-sent": "Email inviata", "email-verifyEmail-subject": "Verifica il tuo indirizzo email su on __siteName__", "email-verifyEmail-text": "Ciao __user__,\n\nPer verificare il tuo account email, clicca sul link seguente:\n\n__url__\n\nGrazie.", - "enable-wip-limit": "Enable WIP Limit", + "enable-wip-limit": "Abilita limite di work in progress", "error-board-doesNotExist": "Questa bacheca non esiste", "error-board-notAdmin": "Devi essere admin di questa bacheca per poterlo fare", "error-board-notAMember": "Devi essere un membro di questa bacheca per poterlo fare", @@ -245,8 +246,8 @@ "language": "Lingua", "last-admin-desc": "Non puoi cambiare i ruoli perché deve esserci almeno un admin.", "leave-board": "Abbandona bacheca", - "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", - "leaveBoardPopup-title": "Leave Board ?", + "leave-board-pop": "Sei sicuro di voler abbandonare __boardTitle__? Sarai rimosso da tutte le schede in questa bacheca.", + "leaveBoardPopup-title": "Abbandona Bacheca?", "link-card": "Link a questa scheda", "list-archive-cards": "Archivia tutte le schede in questa lista", "list-archive-cards-pop": "Questo rimuoverà dalla bacheca tutte le schede in questa lista. Per vedere le schede archiviate e portarle indietro alla bacheca, clicca “Menu” > “Elementi archiviati”", @@ -314,8 +315,8 @@ "save": "Salva", "search": "Cerca", "select-color": "Seleziona Colore", - "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", - "setWipLimitPopup-title": "Set WIP Limit", + "set-wip-limit-value": "Seleziona un limite per il massimo numero di attività in questa lista", + "setWipLimitPopup-title": "Imposta limite di work in progress", "shortcut-assign-self": "Aggiungi te stesso alla scheda corrente", "shortcut-autocomplete-emoji": "Autocompletamento emoji", "shortcut-autocomplete-members": "Autocompletamento membri", @@ -356,9 +357,9 @@ "welcome-list1": "Basi", "welcome-list2": "Avanzate", "what-to-do": "Cosa vuoi fare?", - "wipLimitErrorPopup-title": "Invalid WIP Limit", - "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", - "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", + "wipLimitErrorPopup-title": "Limite work in progress non valido. ", + "wipLimitErrorPopup-dialog-pt1": "Il numero di compiti in questa lista è maggiore del limite di work in progress che hai definito in precedenza. ", + "wipLimitErrorPopup-dialog-pt2": "Per favore, sposta alcuni dei compiti fuori da questa lista, oppure imposta un limite di work in progress più alto. ", "admin-panel": "Pannello dell'Amministratore", "settings": "Impostazioni", "people": "Persone", @@ -384,24 +385,27 @@ "error-notAuthorized": "Non sei autorizzato ad accedere a questa pagina.", "outgoing-webhooks": "Server esterni", "outgoingWebhooksPopup-title": "Server esterni", - "new-outgoing-webhook": "New Outgoing Webhook", - "no-name": "(Unknown)", + "new-outgoing-webhook": "Nuovo webhook in uscita", + "no-name": "(Sconosciuto)", "Wekan_version": "Versione di Wekan", - "Node_version": "Node version", - "OS_Arch": "OS Arch", - "OS_Cpus": "OS CPU Count", - "OS_Freemem": "OS Free Memory", - "OS_Loadavg": "OS Load Average", - "OS_Platform": "OS Platform", - "OS_Release": "OS Release", - "OS_Totalmem": "OS Total Memory", - "OS_Type": "OS Type", - "OS_Uptime": "OS Uptime", + "Node_version": "Versione di Node", + "OS_Arch": "Architettura del sistema operativo", + "OS_Cpus": "Conteggio della CPU del sistema operativo", + "OS_Freemem": "Memoria libera del sistema operativo ", + "OS_Loadavg": "Carico medio del sistema operativo ", + "OS_Platform": "Piattaforma del sistema operativo", + "OS_Release": "Versione di rilascio del sistema operativo", + "OS_Totalmem": "Memoria totale del sistema operativo ", + "OS_Type": "Tipo di sistema operativo ", + "OS_Uptime": "Tempo di attività del sistema operativo. ", "hours": "ore", "minutes": "minuti", "seconds": "secondi", "yes": "Sì", "no": "No", "accounts": "Profili", - "accounts-allowEmailChange": "Permetti modifica dell'email" + "accounts-allowEmailChange": "Permetti modifica dell'email", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index dc0ccdfb..42a34514 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -151,7 +151,7 @@ "computer": "コンピューター", "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist", "copy-card-link-to-clipboard": "カードへのリンクをクリップボードにコピー", - "copyCardPopup-title": "Copy Card", + "copyCardPopup-title": "カードをコピー", "create": "作成", "createBoardPopup-title": "ボードの作成", "chooseBoardSourcePopup-title": "ボードをインポート", @@ -172,6 +172,7 @@ "edit-avatar": "アバターの変更", "edit-profile": "プロフィールの編集", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "開始日の変更", "editCardDueDatePopup-title": "期限の変更", "editLabelPopup-title": "ラベルの変更", @@ -246,7 +247,7 @@ "last-admin-desc": "最低でも1人以上の管理者が必要なためロールを変更できません。", "leave-board": "ボードから退出する", "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", - "leaveBoardPopup-title": "Leave Board ?", + "leaveBoardPopup-title": "ボードから退出しますか?", "link-card": "このカードへのリンク", "list-archive-cards": "リストの全カードをアーカイブする", "list-archive-cards-pop": "ボードのこのリスト内のすべてのカードを取り除きます。アーカイブされたカードの確認やそれをボードに戻すには、メニューをクリックし、\"アーカイブされたアイテム\"をクリックしてください。", @@ -403,5 +404,8 @@ "yes": "はい", "no": "いいえ", "accounts": "アカウント", - "accounts-allowEmailChange": "メールアドレスの変更を許可" + "accounts-allowEmailChange": "メールアドレスの変更を許可", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index aae15ab2..9e8c0c45 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "아바타 변경", "edit-profile": "프로필 변경", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "시작일 변경", "editCardDueDatePopup-title": "종료일 변경", "editLabelPopup-title": "라벨 변경", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json index d0bde3c0..43315230 100644 --- a/i18n/nb.i18n.json +++ b/i18n/nb.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Endre avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index 41ab312b..29ee257d 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Wijzig avatar", "edit-profile": "Wijzig profiel", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Wijzig start datum", "editCardDueDatePopup-title": "Wijzig deadline", "editLabelPopup-title": "Wijzig label", @@ -403,5 +404,8 @@ "yes": "Ja", "no": "Nee", "accounts": "Accounts", - "accounts-allowEmailChange": "Sta E-mailadres wijzigingen toe" + "accounts-allowEmailChange": "Sta E-mailadres wijzigingen toe", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index 1185a80a..92861e39 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -49,14 +49,14 @@ "add-cover": "Dodaj okładkę", "add-label": "Dodaj etykietę", "add-list": "Dodaj listę", - "add-members": "Dodaj członka", + "add-members": "Dodaj członków", "added": "Dodano", "addMemberPopup-title": "Członkowie", "admin": "Admin", "admin-desc": "Może widzieć i edytować karty, usuwać członków oraz zmieniać ustawienia tablicy.", - "admin-announcement": "Announcement", + "admin-announcement": "Ogłoszenie", "admin-announcement-active": "Active System-Wide Announcement", - "admin-announcement-title": "Announcement from Administrator", + "admin-announcement-title": "Ogłoszenie od Administratora", "all-boards": "Wszystkie tablice", "and-n-other-card": "And __count__ other card", "and-n-other-card_plural": "And __count__ other cards", @@ -66,7 +66,7 @@ "archive-all": "Zarchiwizuj wszystkie", "archive-board": "Zarchiwizuj tablicę", "archive-card": "Zarchiwizuj kartę", - "archive-list": "Archive List", + "archive-list": "Zarchiwizuj listę", "archive-selection": "Zarchiwizuj zaznaczone", "archiveBoardPopup-title": "Zarchiwizować tablicę?", "archived-items": "Archived Items", @@ -172,6 +172,7 @@ "edit-avatar": "Zmień Avatar", "edit-profile": "Edytuj profil", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Zmień etykietę", @@ -403,5 +404,8 @@ "yes": "Tak", "no": "Nie", "accounts": "Konto", - "accounts-allowEmailChange": "Zezwól na zmianę adresu email" + "accounts-allowEmailChange": "Zezwól na zmianę adresu email", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index 1b872644..1c3762d8 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -42,7 +42,7 @@ "activity-checklist-item-added": "adicionado o item de checklist para '%s' em %s", "add": "Novo", "add-attachment": "Adicionar Anexos", - "add-board": "Adiconar Quadro", + "add-board": "Adicionar Quadro", "add-card": "Adicionar Cartão", "add-checklist": "Adicionar Checklist", "add-checklist-item": "Adicionar um item à lista de verificação", @@ -54,9 +54,9 @@ "addMemberPopup-title": "Membros", "admin": "Administrador", "admin-desc": "Pode ver e editar cartões, remover membros e alterar configurações do quadro.", - "admin-announcement": "Announcement", - "admin-announcement-active": "Active System-Wide Announcement", - "admin-announcement-title": "Announcement from Administrator", + "admin-announcement": "Anúncio", + "admin-announcement-active": "Anúncio ativo em todo o sistema", + "admin-announcement-title": "Anúncio do Administrador", "all-boards": "Todos os quadros", "and-n-other-card": "E __count__ outro cartão", "and-n-other-card_plural": "E __count__ outros cartões", @@ -151,7 +151,7 @@ "computer": "Computador", "confirm-checklist-delete-dialog": "Tem a certeza de que pretende eliminar lista de verificação", "copy-card-link-to-clipboard": "Copiar link do cartão para a área de transferência", - "copyCardPopup-title": "Copy Card", + "copyCardPopup-title": "Copiar o cartão", "create": "Criar", "createBoardPopup-title": "Criar Quadro", "chooseBoardSourcePopup-title": "Importar quadro", @@ -172,6 +172,7 @@ "edit-avatar": "Alterar Avatar", "edit-profile": "Editar Perfil", "edit-wip-limit": "Editar Limite WIP", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Altera data de início", "editCardDueDatePopup-title": "Altera data fim", "editLabelPopup-title": "Alterar Etiqueta", @@ -384,8 +385,8 @@ "error-notAuthorized": "Você não está autorizado à ver esta página.", "outgoing-webhooks": "Webhook de saída", "outgoingWebhooksPopup-title": "Webhook de saída", - "new-outgoing-webhook": "New Outgoing Webhook", - "no-name": "(Unknown)", + "new-outgoing-webhook": "Novo Webhook de saída", + "no-name": "(Desconhecido)", "Wekan_version": "Versão do Wekan", "Node_version": "Versão do Node", "OS_Arch": "Arquitetura do SO", @@ -403,5 +404,8 @@ "yes": "Sim", "no": "Não", "accounts": "Contas", - "accounts-allowEmailChange": "Permitir Mudança de Email" + "accounts-allowEmailChange": "Permitir Mudança de Email", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json index 7511535d..653e0cdd 100644 --- a/i18n/ro.i18n.json +++ b/i18n/ro.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index 9f0eabb8..96b88ea7 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Изменить аватар", "edit-profile": "Изменить Профиль", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Сменить дату начала", "editCardDueDatePopup-title": "Изменить дату до", "editLabelPopup-title": "Редактирование метки", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json index b5b92895..dc5a8f07 100644 --- a/i18n/sr.i18n.json +++ b/i18n/sr.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Izmeni početni datum", "editCardDueDatePopup-title": "Izmeni krajnji datum", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json index 596fe4d8..b41e512d 100644 --- a/i18n/sv.i18n.json +++ b/i18n/sv.i18n.json @@ -54,9 +54,9 @@ "addMemberPopup-title": "Medlemmar", "admin": "Adminstratör", "admin-desc": "Kan visa och redigera kort, ta bort medlemmar och ändra inställningarna för anslagstavlan.", - "admin-announcement": "Announcement", - "admin-announcement-active": "Active System-Wide Announcement", - "admin-announcement-title": "Announcement from Administrator", + "admin-announcement": "Meddelande", + "admin-announcement-active": "Aktivt system-brett meddelande", + "admin-announcement-title": "Meddelande från administratör", "all-boards": "Alla anslagstavlor", "and-n-other-card": "Och __count__ annat kort", "and-n-other-card_plural": "Och __count__ andra kort", @@ -171,7 +171,8 @@ "edit": "Redigera", "edit-avatar": "Ändra avatar", "edit-profile": "Redigera profil", - "edit-wip-limit": "Edit WIP Limit", + "edit-wip-limit": "Redigera WIP-gränsen", + "soft-wip-limit": "Mjuk WIP-gräns", "editCardStartDatePopup-title": "Ändra startdatum", "editCardDueDatePopup-title": "Ändra förfallodatum", "editLabelPopup-title": "Ändra etikett", @@ -190,7 +191,7 @@ "email-sent": "E-post skickad", "email-verifyEmail-subject": "Verifiera din e-post adress på __siteName__", "email-verifyEmail-text": "Hej __user__,\n\nFör att verifiera din konto e-post, klicka på länken nedan.\n\n__url__\n\nTack.", - "enable-wip-limit": "Enable WIP Limit", + "enable-wip-limit": "Aktivera WIP-gräns", "error-board-doesNotExist": "Denna anslagstavla finns inte", "error-board-notAdmin": "Du måste vara administratör för denna anslagstavla för att göra det", "error-board-notAMember": "Du måste vara medlem i denna anslagstavla för att göra det", @@ -245,8 +246,8 @@ "language": "Språk", "last-admin-desc": "Du kan inte ändra roller för det måste finnas minst en administratör.", "leave-board": "Lämna anslagstavla", - "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", - "leaveBoardPopup-title": "Leave Board ?", + "leave-board-pop": "Är du säker på att du vill lämna __boardTitle__? Du kommer att tas bort från alla kort på den här anslagstavlan.", + "leaveBoardPopup-title": "Lämna anslagstavla ?", "link-card": "Länka till detta kort", "list-archive-cards": "Arkivera alla kort i denna lista", "list-archive-cards-pop": "Detta tar bort alla kort i denna lista från anslagstavlan. Om du se arkiverade kort och få dem tillbaka till anslagstavlan, klicka på ”Meny” > ”Arkiverade objekt”.", @@ -314,8 +315,8 @@ "save": "Spara", "search": "Sök", "select-color": "Välj färg", - "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", - "setWipLimitPopup-title": "Set WIP Limit", + "set-wip-limit-value": "Ange en gräns för det maximala antalet uppgifter i den här listan", + "setWipLimitPopup-title": "Ställ in WIP-gräns", "shortcut-assign-self": "Tilldela dig nuvarande kort", "shortcut-autocomplete-emoji": "Komplettera automatiskt emoji", "shortcut-autocomplete-members": "Komplettera automatiskt medlemmar", @@ -356,9 +357,9 @@ "welcome-list1": "Grunderna", "welcome-list2": "Avancerad", "what-to-do": "Vad vill du göra?", - "wipLimitErrorPopup-title": "Invalid WIP Limit", - "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", - "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", + "wipLimitErrorPopup-title": "Ogiltig WIP-gräns", + "wipLimitErrorPopup-dialog-pt1": "Antalet uppgifter i den här listan är högre än WIP-gränsen du har definierat.", + "wipLimitErrorPopup-dialog-pt2": "Flytta några uppgifter ur listan, eller ställ in en högre WIP-gräns.", "admin-panel": "Administratörspanel ", "settings": "Inställningar", "people": "Personer", @@ -403,5 +404,8 @@ "yes": "Ja", "no": "Nej", "accounts": "Konton", - "accounts-allowEmailChange": "Tillåt e-poständring" + "accounts-allowEmailChange": "Tillåt e-poständring", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json index 1d6b9da6..3c126132 100644 --- a/i18n/ta.i18n.json +++ b/i18n/ta.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json index f3679f71..f6ba4770 100644 --- a/i18n/th.i18n.json +++ b/i18n/th.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "เปลี่ยนภาพ", "edit-profile": "แก้ไขโปรไฟล์", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "เปลี่ยนวันเริ่มต้น", "editCardDueDatePopup-title": "เปลี่ยนวันครบกำหนด", "editLabelPopup-title": "เปลี่ยนป้ายกำกับ", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index c233ad98..9c253dd6 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -2,19 +2,19 @@ "accept": "Kabul Et", "act-activity-notify": "[Wekan] Etkinlik Bildirimi", "act-addAttachment": "__card__ kartına __attachment__ dosyasını ekledi", - "act-addChecklist": "added checklist __checklist__ to __card__", - "act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__", + "act-addChecklist": "__card__ kartında __checklist__ yapılacak listesini ekledi", + "act-addChecklistItem": "__checklistItem__ öğesini __card__ kartındaki __checklist__ yapılacak listesine ekledi", "act-addComment": "__card__ kartına bir yorum bıraktı: __comment__", "act-createBoard": "__board__ panosunu oluşturdu", - "act-createCard": "__card__ kartını ___list__ listesine ekledi.", + "act-createCard": "__card__ kartını ___list__ listesine ekledi", "act-createList": "__list__ listesini __board__ panosuna ekledi", "act-addBoardMember": "__member__ kullanıcısını __board__ panosuna ekledi", "act-archivedBoard": "__board__ panosunu arşivledi", "act-archivedCard": "__card__ kartını arşivledi", "act-archivedList": "__list__ listesini arşivledi", - "act-importBoard": "__board__ panosunu aktardı", - "act-importCard": "__card__ kartını aktardı", - "act-importList": "__list__ listesini aktardı", + "act-importBoard": "__board__ panosunu içe aktardı", + "act-importCard": "__card__ kartını içe aktardı", + "act-importList": "__list__ listesini içe aktardı", "act-joinMember": "__member__ kullanıcısnı __card__ kartına ekledi", "act-moveCard": "__card__ kartını __oldList__ listesinden __list__ listesine taşıdı", "act-removeBoardMember": "__board__ panosundan __member__ kullanıcısını çıkarttı", @@ -54,9 +54,9 @@ "addMemberPopup-title": "Üyeler", "admin": "Yönetici", "admin-desc": "Kartları görüntüleyebilir ve düzenleyebilir, üyeleri çıkarabilir ve pano ayarlarını değiştirebilir.", - "admin-announcement": "Announcement", - "admin-announcement-active": "Active System-Wide Announcement", - "admin-announcement-title": "Announcement from Administrator", + "admin-announcement": "Duyuru", + "admin-announcement-active": "Tüm Sistemde Etkin Duyuru", + "admin-announcement-title": "Yöneticiden Duyuru", "all-boards": "Tüm panolar", "and-n-other-card": "Ve __count__ diğer kart", "and-n-other-card_plural": "Ve __count__ diğer kart", @@ -68,7 +68,7 @@ "archive-card": "Kartı Arşivle", "archive-list": "Listeyi Arşivle", "archive-selection": "Seçimi arşivle", - "archiveBoardPopup-title": "Pano arşivlensin mi?", + "archiveBoardPopup-title": "Pano Arşivlensin mi?", "archived-items": "Arşivlenmiş Öğeler", "archived-boards": "Arşivlenmiş Panolar", "restore-board": "Panoyu Geri Getir", @@ -89,7 +89,7 @@ "board-private-info": "Bu pano <strong>gizli</strong> olacak.", "board-public-info": "Bu pano <strong>genel</strong>e açılacaktır.", "boardChangeColorPopup-title": "Pano arkaplan rengini değiştir", - "boardChangeTitlePopup-title": "Pano Adı Değiştirme", + "boardChangeTitlePopup-title": "Panonun Adını Değiştir", "boardChangeVisibilityPopup-title": "Görünebilirliği Değiştir", "boardChangeWatchPopup-title": "İzleme Durumunu Değiştir", "boardMenuPopup-title": "Pano menüsü", @@ -149,7 +149,7 @@ "comment-only": "Sadece yorum", "comment-only-desc": "Sadece kartlara yorum yazabilir.", "computer": "Bilgisayar", - "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist", + "confirm-checklist-delete-dialog": "Yapılacak listesini silmek istediğinize emin misiniz", "copy-card-link-to-clipboard": "Kartın linkini kopyala", "copyCardPopup-title": "Kartı Kopyala", "create": "Oluştur", @@ -171,7 +171,8 @@ "edit": "Düzenle", "edit-avatar": "Avatar Değiştir", "edit-profile": "Profili Düzenle", - "edit-wip-limit": "Edit WIP Limit", + "edit-wip-limit": "Devam Eden İş Sınırını Düzenle", + "soft-wip-limit": "Zayıf Devam Eden İş Sınırı", "editCardStartDatePopup-title": "Başlangıç tarihini değiştir", "editCardDueDatePopup-title": "Bitiş tarihini değiştir", "editLabelPopup-title": "Etiket Değiştir", @@ -190,7 +191,7 @@ "email-sent": "E-posta gönderildi", "email-verifyEmail-subject": "__siteName__ üzerindeki e-posta adresini doğrulama", "email-verifyEmail-text": "Merhaba __user__,\n\nHesap e-posta adresini doğrulamak için aşağıdaki linke tıklaman yeterli.\n\n__url__\n\nTeşekkürler.", - "enable-wip-limit": "Enable WIP Limit", + "enable-wip-limit": "Devam Eden İş Sınırını Aç", "error-board-doesNotExist": "Pano bulunamadı", "error-board-notAdmin": "Bu işlemi yapmak için pano yöneticisi olmalısın.", "error-board-notAMember": "Bu işlemi yapmak için panoya üye olmalısın.", @@ -245,8 +246,8 @@ "language": "Dil", "last-admin-desc": "En az bir yönetici olması gerektiğinden rolleri değiştiremezsiniz.", "leave-board": "Panodan ayrıl", - "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", - "leaveBoardPopup-title": "Leave Board ?", + "leave-board-pop": "__boardTitle__ panosundan ayrılmak istediğinize emin misiniz? Panodaki tüm kartlardan kaldırılacaksınız.", + "leaveBoardPopup-title": "Panodan ayrılmak istediğinize emin misiniz?", "link-card": "Bu kartın bağlantısı", "list-archive-cards": "Bu liste içindeki tüm kartları arşivle", "list-archive-cards-pop": "Bu işlem bu listedeki tüm kartları kaldıracak ve arşivleyecek. Arşivlenmiş kartları görmek ve panoya geri yüklemek için \"Menü\" altından \"Arşivlenmiş Öğeler\"e gidebilirsiniz.", @@ -314,8 +315,8 @@ "save": "Kaydet", "search": "Arama", "select-color": "Renk Seç", - "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", - "setWipLimitPopup-title": "Set WIP Limit", + "set-wip-limit-value": "Bu listedeki en fazla öğe sayısı için bir sınır belirleyin", + "setWipLimitPopup-title": "Devam Eden İş Sınırı Belirle", "shortcut-assign-self": "Kendini karta ata", "shortcut-autocomplete-emoji": "Emojileri otomatik tamamla", "shortcut-autocomplete-members": "Üye isimlerini otomatik tamamla", @@ -356,9 +357,9 @@ "welcome-list1": "Temel", "welcome-list2": "Gelişmiş", "what-to-do": "Ne yapmak istiyorsunuz?", - "wipLimitErrorPopup-title": "Invalid WIP Limit", - "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", - "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", + "wipLimitErrorPopup-title": "Geçersiz Devam Eden İş Sınırı", + "wipLimitErrorPopup-dialog-pt1": "Bu listedeki iş sayısı belirlediğiniz sınırdan daha fazla.", + "wipLimitErrorPopup-dialog-pt2": "Lütfen bazı işleri bu listeden başka listeye taşıyın ya da devam eden iş sınırını yükseltin.", "admin-panel": "Yönetici Paneli", "settings": "Ayarlar", "people": "Kullanıcılar", @@ -389,19 +390,22 @@ "Wekan_version": "Wekan sürümü", "Node_version": "Node sürümü", "OS_Arch": "İşletim Sistemi Mimarisi", - "OS_Cpus": "İS İşlemci Sayısı", - "OS_Freemem": "İŞ Kullanılmayan Bellek", - "OS_Loadavg": "İŞ Ortalama Yük", - "OS_Platform": "İŞ Platformu", + "OS_Cpus": "İşletim Sistemi İşlemci Sayısı", + "OS_Freemem": "İşletim Sistemi Kullanılmayan Bellek", + "OS_Loadavg": "İşletim Sistemi Ortalama Yük", + "OS_Platform": "İşletim Sistemi Platformu", "OS_Release": "İşletim Sistemi Sürümü", - "OS_Totalmem": "İŞ Toplam Belleği", - "OS_Type": "İŞ Tipi", - "OS_Uptime": "İŞ Toplam Açık Kalınan Süre", + "OS_Totalmem": "İşletim Sistemi Toplam Belleği", + "OS_Type": "İşletim Sistemi Tipi", + "OS_Uptime": "İşletim Sistemi Toplam Açık Kalınan Süre", "hours": "saat", "minutes": "dakika", "seconds": "saniye", "yes": "Evet", "no": "Hayır", "accounts": "Hesaplar", - "accounts-allowEmailChange": "E-posta Değiştirmeye İzin Ver" + "accounts-allowEmailChange": "E-posta Değiştirmeye İzin Ver", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json index 206e626f..05790abc 100644 --- a/i18n/uk.i18n.json +++ b/i18n/uk.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json index fe1fcc4a..0e1f7a04 100644 --- a/i18n/vi.i18n.json +++ b/i18n/vi.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "Change Avatar", "edit-profile": "Edit Profile", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "Change start date", "editCardDueDatePopup-title": "Change due date", "editLabelPopup-title": "Change Label", @@ -403,5 +404,8 @@ "yes": "Yes", "no": "No", "accounts": "Accounts", - "accounts-allowEmailChange": "Allow Email Change" + "accounts-allowEmailChange": "Allow Email Change", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index 2c732192..a9a30032 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "更改头像", "edit-profile": "编辑资料", "edit-wip-limit": "编辑最大任务数", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "修改起始日期", "editCardDueDatePopup-title": "修改截止日期", "editLabelPopup-title": "更改标签", @@ -403,5 +404,8 @@ "yes": "是", "no": "否", "accounts": "账号", - "accounts-allowEmailChange": "允许邮箱变更" + "accounts-allowEmailChange": "允许邮箱变更", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json index 765d69fd..08953728 100644 --- a/i18n/zh-TW.i18n.json +++ b/i18n/zh-TW.i18n.json @@ -172,6 +172,7 @@ "edit-avatar": "更改大頭貼", "edit-profile": "編輯資料", "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", "editCardStartDatePopup-title": "更改開始日期", "editCardDueDatePopup-title": "更改到期日期", "editLabelPopup-title": "更改標籤", @@ -403,5 +404,8 @@ "yes": "是", "no": "否", "accounts": "帳號", - "accounts-allowEmailChange": "准許變更電子信箱" + "accounts-allowEmailChange": "准許變更電子信箱", + "createdAt": "Created at", + "verified": "Verified", + "active": "Active" }
\ No newline at end of file diff --git a/models/cards.js b/models/cards.js index 5b752ec3..5de17c6f 100644 --- a/models/cards.js +++ b/models/cards.js @@ -182,7 +182,7 @@ Cards.helpers({ canBeRestored() { const list = Lists.findOne({_id: this.listId}); - if(list.getWipLimit() && list.getWipLimit('enabled') && list.getWipLimit('value') === list.cards().count()){ + if(!list.getWipLimit('soft') && list.getWipLimit('enabled') && list.getWipLimit('value') === list.cards().count()){ return false; } return true; diff --git a/models/lists.js b/models/lists.js index 75c39d2a..a5f4791b 100644 --- a/models/lists.js +++ b/models/lists.js @@ -49,23 +49,15 @@ Lists.attachSchema(new SimpleSchema({ 'wipLimit.value': { type: Number, decimal: false, - autoValue() { - if(this.isInsert){ - return 0; - } - return this.value; - }, - optional: true, + defaultValue: 1, }, - 'wipLimit.enabled':{ + 'wipLimit.enabled': { type: Boolean, - autoValue() { - if(this.isInsert){ - return false; - } - return this.value; - }, - optional: true, + defaultValue: false, + }, + 'wipLimit.soft': { + type: Boolean, + defaultValue: false, }, })); @@ -123,6 +115,10 @@ Lists.mutations({ return { $set: { archived: false } }; }, + toggleSoftLimit(toggle) { + return { $set: { 'wipLimit.soft': toggle } }; + }, + toggleWipLimit(toggle) { return { $set: { 'wipLimit.enabled': toggle } }; }, @@ -136,17 +132,25 @@ Meteor.methods({ applyWipLimit(listId, limit){ check(listId, String); check(limit, Number); + if(limit === 0){ + limit = 1; + } Lists.findOne({ _id: listId }).setWipLimit(limit); }, enableWipLimit(listId) { check(listId, String); const list = Lists.findOne({ _id: listId }); - if(list.getWipLimit()){ // Necessary check to avoid exceptions for the case where the doc doesn't have the wipLimit field yet set - list.toggleWipLimit(!list.getWipLimit('enabled')); - } else { - list.toggleWipLimit(true); // First time toggle is always to 'true' because default is 'false' + if(list.getWipLimit('value') === 0){ + list.setWipLimit(1); } + list.toggleWipLimit(!list.getWipLimit('enabled')); + }, + + enableSoftLimit(listId) { + check(listId, String); + const list = Lists.findOne({ _id: listId }); + list.toggleSoftLimit(!list.getWipLimit('soft')); }, }); diff --git a/models/settings.js b/models/settings.js index a490d9c5..a02bb3fb 100644 --- a/models/settings.js +++ b/models/settings.js @@ -105,7 +105,7 @@ if (Meteor.isServer) { inviter: Users.findOne(icode.authorId).username, user: icode.email.split('@')[0], icode: icode.code, - url: FlowRouter.url('sign-in'), + url: FlowRouter.url('sign-up'), }; const lang = author.getLanguage(); Email.send({ diff --git a/models/users.js b/models/users.js index 5ba0131f..11a53ce6 100644 --- a/models/users.js +++ b/models/users.js @@ -118,6 +118,13 @@ Users.attachSchema(new SimpleSchema({ }, })); +Users.allow({ + update(userId) { + const user = Users.findOne(userId); + return user && Meteor.user().isAdmin; + }, +}); + // Search a user in the complete server database by its name or username. This // is used for instance to add a new user to a board. const searchInFields = ['username', 'profile.fullname']; @@ -152,36 +159,36 @@ if (Meteor.isClient) { Users.helpers({ boards() { - return Boards.find({ userId: this._id }); + return Boards.find({ 'members.userId': this._id }); }, starredBoards() { - const { starredBoards = [] } = this.profile; - return Boards.find({ archived: false, _id: { $in: starredBoards } }); + const {starredBoards = []} = this.profile; + return Boards.find({archived: false, _id: {$in: starredBoards}}); }, hasStarred(boardId) { - const { starredBoards = [] } = this.profile; + const {starredBoards = []} = this.profile; return _.contains(starredBoards, boardId); }, invitedBoards() { - const { invitedBoards = [] } = this.profile; - return Boards.find({ archived: false, _id: { $in: invitedBoards } }); + const {invitedBoards = []} = this.profile; + return Boards.find({archived: false, _id: {$in: invitedBoards}}); }, isInvitedTo(boardId) { - const { invitedBoards = [] } = this.profile; + const {invitedBoards = []} = this.profile; return _.contains(invitedBoards, boardId); }, hasTag(tag) { - const { tags = [] } = this.profile; + const {tags = []} = this.profile; return _.contains(tags, tag); }, hasNotification(activityId) { - const { notifications = [] } = this.profile; + const {notifications = []} = this.profile; return _.contains(notifications, activityId); }, @@ -191,7 +198,7 @@ Users.helpers({ }, getEmailBuffer() { - const { emailBuffer = [] } = this.profile; + const {emailBuffer = []} = this.profile; return emailBuffer; }, @@ -316,22 +323,22 @@ Users.mutations({ }, setAvatarUrl(avatarUrl) { - return { $set: { 'profile.avatarUrl': avatarUrl } }; + return {$set: {'profile.avatarUrl': avatarUrl}}; }, setShowCardsCountAt(limit) { - return { $set: { 'profile.showCardsCountAt': limit } }; + return {$set: {'profile.showCardsCountAt': limit}}; }, }); Meteor.methods({ - setUsername(username) { + setUsername(username, userId) { check(username, String); - const nUsersWithUsername = Users.find({ username }).count(); + const nUsersWithUsername = Users.find({username}).count(); if (nUsersWithUsername > 0) { throw new Meteor.Error('username-already-taken'); } else { - Users.update(this.userId, { $set: { username } }); + Users.update(userId, {$set: {username}}); } }, toggleSystemMessages() { @@ -342,13 +349,13 @@ Meteor.methods({ check(limit, Number); Meteor.user().setShowCardsCountAt(limit); }, - setEmail(email) { + setEmail(email, userId) { check(email, String); - const existingUser = Users.findOne({ 'emails.address': email }, { fields: { _id: 1 } }); + const existingUser = Users.findOne({'emails.address': email}, {fields: {_id: 1}}); if (existingUser) { throw new Meteor.Error('email-already-taken'); } else { - Users.update(this.userId, { + Users.update(userId, { $set: { emails: [{ address: email, @@ -358,11 +365,12 @@ Meteor.methods({ }); } }, - setUsernameAndEmail(username, email) { + setUsernameAndEmail(username, email, userId) { check(username, String); check(email, String); - Meteor.call('setUsername', username); - Meteor.call('setEmail', email); + check(userId, String); + Meteor.call('setUsername', username, userId); + Meteor.call('setEmail', email, userId); }, }); @@ -379,8 +387,8 @@ if (Meteor.isServer) { board && board.members && _.contains(_.pluck(board.members, 'userId'), inviter._id) && - _.where(board.members, { userId: inviter._id })[0].isActive && - _.where(board.members, { userId: inviter._id })[0].isAdmin; + _.where(board.members, {userId: inviter._id})[0].isActive && + _.where(board.members, {userId: inviter._id})[0].isAdmin; if (!allowInvite) throw new Meteor.Error('error-board-notAMember'); this.unblock(); @@ -388,9 +396,9 @@ if (Meteor.isServer) { const posAt = username.indexOf('@'); let user = null; if (posAt >= 0) { - user = Users.findOne({ emails: { $elemMatch: { address: username } } }); + user = Users.findOne({emails: {$elemMatch: {address: username}}}); } else { - user = Users.findOne(username) || Users.findOne({ username }); + user = Users.findOne(username) || Users.findOne({username}); } if (user) { if (user._id === inviter._id) throw new Meteor.Error('error-user-notAllowSelf'); @@ -400,7 +408,7 @@ if (Meteor.isServer) { // Set in lowercase email before creating account const email = username.toLowerCase(); username = email.substring(0, posAt); - const newUserId = Accounts.createUser({ username, email }); + const newUserId = Accounts.createUser({username, email}); if (!newUserId) throw new Meteor.Error('error-user-notCreated'); // assume new user speak same language with inviter if (inviter.profile && inviter.profile.language) { @@ -434,7 +442,7 @@ if (Meteor.isServer) { } catch (e) { throw new Meteor.Error('email-fail', e.message); } - return { username: user.username, email: user.emails[0].address }; + return {username: user.username, email: user.emails[0].address}; }, }); Accounts.onCreateUser((options, user) => { @@ -457,11 +465,15 @@ if (Meteor.isServer) { if (!options || !options.profile) { throw new Meteor.Error('error-invitation-code-blank', 'The invitation code is required'); } - const invitationCode = InvitationCodes.findOne({ code: options.profile.invitationcode, email: options.email, valid: true }); + const invitationCode = InvitationCodes.findOne({ + code: options.profile.invitationcode, + email: options.email, + valid: true, + }); if (!invitationCode) { throw new Meteor.Error('error-invitation-code-not-exist', 'The invitation code doesn\'t exist'); } else { - user.profile = { icode: options.profile.invitationcode }; + user.profile = {icode: options.profile.invitationcode}; } return user; @@ -473,7 +485,7 @@ if (Meteor.isServer) { Meteor.startup(() => { Users._collection._ensureIndex({ username: 1, - }, { unique: true }); + }, {unique: true}); }); // Each board document contains the de-normalized number of users that have @@ -492,6 +504,7 @@ if (Meteor.isServer) { function getStarredBoardsIds(doc) { return doc.profile && doc.profile.starredBoards; } + const oldIds = getStarredBoardsIds(this.previous); const newIds = getStarredBoardsIds(user); @@ -500,9 +513,10 @@ if (Meteor.isServer) { // direction and then in the other. function incrementBoards(boardsIds, inc) { boardsIds.forEach((boardId) => { - Boards.update(boardId, { $inc: { stars: inc } }); + Boards.update(boardId, {$inc: {stars: inc}}); }); } + incrementBoards(_.difference(oldIds, newIds), -1); incrementBoards(_.difference(newIds, oldIds), +1); }); @@ -529,7 +543,7 @@ if (Meteor.isServer) { }, fakeUser, (err, boardId) => { ['welcome-list1', 'welcome-list2'].forEach((title) => { - Lists.insert({ title: TAPi18n.__(title), boardId }, fakeUser); + Lists.insert({title: TAPi18n.__(title), boardId}, fakeUser); }); }); }); @@ -545,14 +559,14 @@ if (Meteor.isServer) { // the disableRegistration check. // Issue : https://github.com/wekan/wekan/issues/1232 // PR : https://github.com/wekan/wekan/pull/1251 - Users.update(doc._id, { $set: { createdThroughApi: '' } }); + Users.update(doc._id, {$set: {createdThroughApi: ''}}); return; } //invite user to corresponding boards const disableRegistration = Settings.findOne().disableRegistration; if (disableRegistration) { - const invitationCode = InvitationCodes.findOne({ code: doc.profile.icode, valid: true }); + const invitationCode = InvitationCodes.findOne({code: doc.profile.icode, valid: true}); if (!invitationCode) { throw new Meteor.Error('error-invitation-code-not-exist'); } else { @@ -564,8 +578,8 @@ if (Meteor.isServer) { doc.profile = {}; } doc.profile.invitedBoards = invitationCode.boardsToBeInvited; - Users.update(doc._id, { $set: { profile: doc.profile } }); - InvitationCodes.update(invitationCode._id, { $set: { valid: false } }); + Users.update(doc._id, {$set: {profile: doc.profile}}); + InvitationCodes.update(invitationCode._id, {$set: {valid: false}}); } } }); diff --git a/models/wekanCreator.js b/models/wekanCreator.js index 3cd65fd7..ae8e32ca 100644 --- a/models/wekanCreator.js +++ b/models/wekanCreator.js @@ -133,47 +133,39 @@ export class WekanCreator { } // You must call parseActions before calling this one. - createBoardAndLabels(wekanBoard) { + createBoardAndLabels(boardToImport) { const boardToCreate = { - archived: wekanBoard.archived, - color: wekanBoard.color, + archived: boardToImport.archived, + color: boardToImport.color, // very old boards won't have a creation activity so no creation date - createdAt: this._now(wekanBoard.createdAt), + createdAt: this._now(boardToImport.createdAt), labels: [], members: [{ userId: Meteor.userId(), - isAdmin: true, + wekanId: Meteor.userId(), isActive: true, + isAdmin: true, isCommentOnly: false, }], // Standalone Export has modifiedAt missing, adding modifiedAt to fix it - modifiedAt: this._now(wekanBoard.modifiedAt), - permission: wekanBoard.permission, - slug: getSlug(wekanBoard.title) || 'board', + modifiedAt: this._now(boardToImport.modifiedAt), + permission: boardToImport.permission, + slug: getSlug(boardToImport.title) || 'board', stars: 0, - title: wekanBoard.title, + title: boardToImport.title, }; // now add other members - if(wekanBoard.members) { - wekanBoard.members.forEach((wekanMember) => { - const wekanId = wekanMember.userId; - // do we have a mapping? - if(this.members[wekanId]) { - const wekanId = this.members[wekanId]; - // do we already have it in our list? - const wekanMember = boardToCreate.members.find((wekanMember) => wekanMember.userId === wekanId); - if(!wekanMember) { - boardToCreate.members.push({ - userId: wekanId, - isAdmin: wekanMember.isAdmin, - isActive: true, - isCommentOnly: false, - }); - } - } + if(boardToImport.members) { + boardToImport.members.forEach((wekanMember) => { + // do we already have it in our list? + if(!boardToCreate.members.some((member) => member.wekanId === wekanMember.wekanId)) + boardToCreate.members.push({ + ... wekanMember, + userId: wekanMember.wekanId, + }); }); } - wekanBoard.labels.forEach((label) => { + boardToImport.labels.forEach((label) => { const labelToCreate = { _id: Random.id(6), color: label.color, @@ -192,7 +184,7 @@ export class WekanCreator { boardId, createdAt: this._now(), source: { - id: wekanBoard.id, + id: boardToImport.id, system: 'Wekan', }, // We attribute the import to current user, diff --git a/package.json b/package.json index 52af46cf..d643fbfb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "0.50.0", + "version": "0.54.0", "description": "The open-source Trello-like kanban", "private": true, "scripts": { diff --git a/public/fonts/roboto-bold.woff b/public/fonts/roboto-bold.woff Binary files differindex bf737c1c..6ec255f5 100644 --- a/public/fonts/roboto-bold.woff +++ b/public/fonts/roboto-bold.woff diff --git a/public/fonts/roboto-bold.woff2 b/public/fonts/roboto-bold.woff2 Binary files differindex 11cde5d0..f779b2c5 100644 --- a/public/fonts/roboto-bold.woff2 +++ b/public/fonts/roboto-bold.woff2 diff --git a/public/fonts/roboto-regular.woff b/public/fonts/roboto-regular.woff Binary files differindex 941dfa4b..f9a02e26 100644 --- a/public/fonts/roboto-regular.woff +++ b/public/fonts/roboto-regular.woff diff --git a/public/fonts/roboto-regular.woff2 b/public/fonts/roboto-regular.woff2 Binary files differindex 120796bb..cebe610d 100644 --- a/public/fonts/roboto-regular.woff2 +++ b/public/fonts/roboto-regular.woff2 diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index d0a426f1..d3b7b2c6 100644 --- a/sandstorm-pkgdef.capnp +++ b/sandstorm-pkgdef.capnp @@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = ( appTitle = (defaultText = "Wekan"), # The name of the app as it is displayed to the user. - appVersion = 37, + appVersion = 40, # Increment this for every release. - appMarketingVersion = (defaultText = "0.50.0~2017-10-10"), + appMarketingVersion = (defaultText = "0.54.0~2017-11-02"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, diff --git a/server/publications/people.js b/server/publications/people.js new file mode 100644 index 00000000..f3c2bdfe --- /dev/null +++ b/server/publications/people.js @@ -0,0 +1,7 @@ +Meteor.publish('people', (limit) => { + check(limit, Number); + return Users.find({}, { + limit, + sort: {createdAt: -1}, + }); +}); |