diff --git a/.tx/config b/.tx/config index 8fb7d447b..7ff185a9e 100644 --- a/.tx/config +++ b/.tx/config @@ -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 = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK +lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_IT:en-IT, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK [wekan.application] file_filter = i18n/.i18n.json diff --git a/CHANGELOG.md b/CHANGELOG.md index c487cc890..aa90ef3f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,47 @@ Note: With Docker, please don't use latest tag. Only use release tags. See https://github.com/wekan/wekan/issues/3874 +# Upcoming Wekan release + +This release fixes the following bugs: + +- [Fixed Wekan JSON import fails](https://github.com/wekan/wekan/commit/0fa8fc8b506831a60649d100ce93c96f8f7b76f5). + Thanks to BartoszBroda and xet7. + +Thanks to above GitHub users for their contributions and translators for their translations. + +# v5.40 2021-07-25 Wekan release + +This release fixes the following bugs: + +- [Fixed Delete of Planning Poker doesn't work](https://github.com/wekan/wekan/commit/18b6381d790848062752b211d48c84a2de268bd0). + Thanks to xet7. + +Thanks to above GitHub users for their contributions and translators for their translations. + +# v5.39 2021-07-24 Wekan release + +This release adds the following new features: + +- [LDAP AD Simple Auth](https://github.com/wekan/wekan/pull/3909). + Thanks to indika-dev. +- [LDAP AD Simple Auth: Added settings for all remaining Wekan Standalone (non-Sandstorm) + platforms](https://github.com/wekan/wekan/commit/fe40f35d6d9b6293f3bdbf5bc0f3e8e708c59518) + and Docs to https://github.com/wekan/wekan/wiki/LDAP-AD-Simple-Auth . + Thanks to xet7. +- [Convert Checklist Item to Card](https://github.com/wekan/wekan/pull/3910). + Thanks to helioguardabaxo. +- [Organizations and Teams are taken into account when displaying board at + `All Boards` page](https://github.com/wekan/wekan/pull/3912). + Thanks to Emile840. + +and adds the following new translations: + +- [English (Italy)](https://github.com/wekan/wekan/commit/ae73029dda63db361925e378202e6f8c137cf5bd). + Thanks to translators. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v5.38 2021-07-18 Wekan release This release adds the following new features: diff --git a/Dockerfile b/Dockerfile index 4cc43624d..3b64ac5e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -64,6 +64,9 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build- LDAP_ENABLE=false \ LDAP_PORT=389 \ LDAP_HOST="" \ + LDAP_AD_SIMPLE_AUTH="" \ + LDAP_USER_AUTHENTICATION=false \ + LDAP_USER_AUTHENTICATION_FIELD=uid \ LDAP_BASEDN="" \ LDAP_LOGIN_FALLBACK=false \ LDAP_RECONNECT=true \ @@ -81,8 +84,6 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build- LDAP_ENCRYPTION=false \ LDAP_CA_CERT="" \ LDAP_REJECT_UNAUTHORIZED=false \ - LDAP_USER_AUTHENTICATION=false \ - LDAP_USER_AUTHENTICATION_FIELD=uid \ LDAP_USER_SEARCH_FILTER="" \ LDAP_USER_SEARCH_SCOPE="" \ LDAP_USER_SEARCH_FIELD="" \ diff --git a/Stackerfile.yml b/Stackerfile.yml index 117fd45c6..cb167f982 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v5.38.0" +appVersion: "v5.40.0" files: userUploads: - README.md diff --git a/client/components/boards/boardsList.js b/client/components/boards/boardsList.js index 0e0815b05..fba4820ed 100644 --- a/client/components/boards/boardsList.js +++ b/client/components/boards/boardsList.js @@ -87,16 +87,52 @@ BlazeComponent.extendComponent({ boards() { const query = { - archived: false, - //type: { $in: ['board','template-container'] }, - type: 'board', + //archived: false, + ////type: { $in: ['board','template-container'] }, + //type: 'board', + $and: [ + { archived: false }, + { type: 'board' }, + { $or:[] } + ] }; - if (FlowRouter.getRouteName() === 'home') - query['members.userId'] = Meteor.userId(); + if (FlowRouter.getRouteName() === 'home'){ + query.$and[2].$or.push({'members.userId': Meteor.userId()}); + + const currUser = Users.findOne(Meteor.userId()); + + // const currUser = Users.findOne(Meteor.userId(), { + // fields: { + // orgs: 1, + // teams: 1, + // }, + // }); + + let orgIdsUserBelongs = currUser.teams !== 'undefined' ? currUser.orgIdsUserBelongs() : ''; + if(orgIdsUserBelongs && orgIdsUserBelongs != ''){ + let orgsIds = orgIdsUserBelongs.split(','); + // for(let i = 0; i < orgsIds.length; i++){ + // query.$and[2].$or.push({'orgs.orgId': orgsIds[i]}); + // } + + //query.$and[2].$or.push({'orgs': {$elemMatch : {orgId: orgsIds[0]}}}); + query.$and[2].$or.push({'orgs.orgId': {$in : orgsIds}}); + } + + let teamIdsUserBelongs = currUser.teams !== 'undefined' ? currUser.teamIdsUserBelongs() : ''; + if(teamIdsUserBelongs && teamIdsUserBelongs != ''){ + let teamsIds = teamIdsUserBelongs.split(','); + // for(let i = 0; i < teamsIds.length; i++){ + // query.$or[2].$or.push({'teams.teamId': teamsIds[i]}); + // } + //query.$and[2].$or.push({'teams': { $elemMatch : {teamId: teamsIds[0]}}}); + query.$and[2].$or.push({'teams.teamId': {$in : teamsIds}}); + } + } else query.permission = 'public'; return Boards.find(query, { - sort: { sort: 1 /* boards default sorting */ }, + //sort: { sort: 1 /* boards default sorting */ }, }); }, isStarred() { diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index ecc72f7c4..b0e1dba42 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -627,6 +627,7 @@ Template.cardDetailsActionsPopup.events({ 'click .js-spent-time': Popup.open('editCardSpentTime'), 'click .js-move-card': Popup.open('moveCard'), 'click .js-copy-card': Popup.open('copyCard'), + 'click .js-convert-checklist-item-to-card': Popup.open('convertChecklistItemToCard'), 'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'), 'click .js-set-card-color': Popup.open('setCardColor'), 'click .js-move-card-to-top'(event) { @@ -791,6 +792,34 @@ Template.copyCardPopup.events({ }, }); +Template.convertChecklistItemToCardPopup.events({ + 'click .js-done'() { + const card = Cards.findOne(Session.get('currentCard')); + const lSelect = $('.js-select-lists')[0]; + const listId = lSelect.options[lSelect.selectedIndex].value; + const slSelect = $('.js-select-swimlanes')[0]; + const swimlaneId = slSelect.options[slSelect.selectedIndex].value; + const bSelect = $('.js-select-boards')[0]; + const boardId = bSelect.options[bSelect.selectedIndex].value; + const textarea = $('#copy-card-title'); + const title = textarea.val().trim(); + + if (title) { + const _id = Cards.insert({ + title: title, + listId: listId, + boardId: boardId, + swimlaneId: swimlaneId, + sort: 0, + }); + Filter.addException(_id); + + Popup.close(); + + } + }, +}); + Template.copyChecklistToManyCardsPopup.events({ 'click .js-done'() { const card = Cards.findOne(Session.get('currentCard')); @@ -1297,7 +1326,6 @@ BlazeComponent.extendComponent({ Popup.close(); }, 'click .js-remove-poker': Popup.afterConfirm('deletePoker', (event) => { - event.preventDefault(); this.currentCard.unsetPoker(); Popup.close(); }), diff --git a/client/components/cards/checklists.jade b/client/components/cards/checklists.jade index 2614b5c1d..6c7b517c7 100644 --- a/client/components/cards/checklists.jade +++ b/client/components/cards/checklists.jade @@ -80,6 +80,9 @@ template(name="editChecklistItemForm") span(title=createdAt) {{ moment createdAt }} if canModifyCard a.js-delete-checklist-item {{_ "delete"}}... + a.js-convert-checklist-item-to-card + i.fa.fa-copy + | {{_ 'convertChecklistItemToCardPopup-title'}} template(name="checklistItems") .checklist-items.js-checklist-items @@ -110,3 +113,32 @@ template(name='checklistItemDetail') .item-title(class="{{#if item.isFinished }}is-checked{{/if}}") +viewer = item.title + +template(name="convertChecklistItemToCardPopup") + label(for='convert-checklist-item-to-card-title') {{_ 'title'}}: + textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus) + = item.title + +boardsSwimlanesAndLists + +template(name="boardsSwimlanesAndLists") + unless currentUser.isWorker + label {{_ 'boards'}}: + select.js-select-boards(autofocus) + each boards + if $eq _id currentBoard._id + option(value="{{_id}}" selected) {{_ 'current'}} + else + option(value="{{_id}}") {{title}} + + label {{_ 'swimlanes'}}: + select.js-select-swimlanes + each swimlanes + option(value="{{_id}}") {{title}} + + label {{_ 'lists'}}: + select.js-select-lists + each aBoardLists + option(value="{{_id}}") {{title}} + + .edit-controls.clearfix + button.primary.confirm.js-done {{_ 'done'}} diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js index 86f8c75f8..0141f8ed5 100644 --- a/client/components/cards/checklists.js +++ b/client/components/cards/checklists.js @@ -1,3 +1,7 @@ +import Cards from '/models/cards'; +import Boards from '/models/boards'; + +const subManager = new SubsManager(); const { calculateIndexData, capitalize } = Utils; function initSorting(items) { @@ -206,6 +210,7 @@ BlazeComponent.extendComponent({ 'submit .js-edit-checklist-title': this.editChecklist, 'submit .js-add-checklist-item': this.addChecklistItem, 'submit .js-edit-checklist-item': this.editChecklistItem, + 'click .js-convert-checklist-item-to-card': Popup.open('convertChecklistItemToCard'), 'click .js-delete-checklist-item': this.deleteItem, 'click .confirm-checklist-delete': this.deleteChecklist, 'focus .js-add-checklist-item': this.focusChecklistItem, @@ -215,6 +220,47 @@ BlazeComponent.extendComponent({ }, }).register('checklists'); +BlazeComponent.extendComponent({ + onCreated() { + subManager.subscribe('board', Session.get('currentBoard'), false); + this.selectedBoardId = new ReactiveVar(Session.get('currentBoard')); + }, + + boards() { + return Boards.find( + { + archived: false, + 'members.userId': Meteor.userId(), + _id: { $ne: Meteor.user().getTemplatesBoardId() }, + }, + { + sort: { sort: 1 /* boards default sorting */ }, + }, + ); + }, + + swimlanes() { + const board = Boards.findOne(this.selectedBoardId.get()); + return board.swimlanes(); + }, + + aBoardLists() { + const board = Boards.findOne(this.selectedBoardId.get()); + return board.lists(); + }, + + events() { + return [ + { + 'change .js-select-boards'(event) { + this.selectedBoardId.set($(event.currentTarget).val()); + subManager.subscribe('board', this.selectedBoardId.get(), false); + }, + }, + ]; + }, +}).register('boardsSwimlanesAndLists'); + Template.checklists.helpers({ hideCheckedItems() { const currentUser = Meteor.user(); diff --git a/client/components/cards/checklists.styl b/client/components/cards/checklists.styl index a356e3bd2..1b855d431 100644 --- a/client/components/cards/checklists.styl +++ b/client/components/cards/checklists.styl @@ -159,7 +159,8 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item padding-top: 2px padding-right: 10px; -.js-delete-checklist-item +.js-delete-checklist-item, +.js-convert-checklist-item-to-card margin: 0 0 0.5em 1.33em @extends .delete-text padding: 12px 0 0 0 diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index cb06804e3..bf290bd5a 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -92,6 +92,8 @@ Template.userFormsLayout.helpers({ name = 'Latviešu'; } else if (lang.name === 'latviešu valoda') { name = 'Latviešu'; + } else if (lang.name === 'en-IT') { + name = 'English (Italy)'; } else if (lang.name === 'Español') { name = 'español'; } else if (lang.name === 'es_419') { diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index 1a12199a1..bf46b997a 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -186,6 +186,8 @@ Template.changeLanguagePopup.helpers({ name = 'Latviešu'; } else if (lang.name === 'latviešu valoda') { name = 'Latviešu'; + } else if (lang.name === 'en-IT') { + name = 'English (Italy)'; } else if (lang.name === 'Español') { name = 'español'; } else if (lang.name === 'es_419') { diff --git a/docker-compose.yml b/docker-compose.yml index 57eff3b4f..1a7620087 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -440,9 +440,47 @@ services: # The host server for the LDAP server #- LDAP_HOST=localhost # + #----------------------------------------------------------------- + # ==== LDAP AD Simple Auth ==== + # + # Set to true, if you want to connect with Active Directory by Simple Authentication. + # When using AD Simple Auth, LDAP_BASEDN is not needed. + # + # Example: + #- LDAP_AD_SIMPLE_AUTH=true + # + # === LDAP User Authentication === + # + # a) Option to login to the LDAP server with the user's own username and password, instead of + # an administrator key. Default: false (use administrator key). + # + # b) When using AD Simple Auth, set to true, when login user is used for binding, + # and LDAP_BASEDN is not needed. + # + # Example: + #- LDAP_USER_AUTHENTICATION=true + # + # Which field is used to find the user for the user authentication. Default: uid. + #- LDAP_USER_AUTHENTICATION_FIELD=uid + # + # === LDAP Default Domain === + # + # a) In case AD SimpleAuth is configured, the default domain is appended to the given + # loginname for creating the correct username for the bind request to AD. + # + # b) The default domain of the ldap it is used to create email if the field is not map + # correctly with the LDAP_SYNC_USER_DATA_FIELDMAP + # + # Example : + #- LDAP_DEFAULT_DOMAIN=mydomain.com + # + #----------------------------------------------------------------- + # ==== LDAP BASEDN Auth ==== + # # The base DN for the LDAP Tree #- LDAP_BASEDN=ou=user,dc=example,dc=org # + #----------------------------------------------------------------- # Fallback on the default authentication method #- LDAP_LOGIN_FALLBACK=false # @@ -493,12 +531,6 @@ services: # Reject Unauthorized Certificate #- LDAP_REJECT_UNAUTHORIZED=false # - # Option to login to the LDAP server with the user's own username and password, instead of an administrator key. Default: false (use administrator key). - #- LDAP_USER_AUTHENTICATION=true - # - # Which field is used to find the user for the user authentication. Default: uid. - #- LDAP_USER_AUTHENTICATION_FIELD=uid - # # Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed #- LDAP_USER_SEARCH_FILTER= # @@ -564,9 +596,8 @@ services: # #- LDAP_SYNC_GROUP_ROLES= # - # The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP - # example : - #- LDAP_DEFAULT_DOMAIN=mydomain.com + # The default domain of the ldap it is used to create email if the field is not map correctly + # with the LDAP_SYNC_USER_DATA_FIELDMAP is defined in setting LDAP_DEFAULT_DOMAIN above. # # Enable/Disable syncing of admin status based on ldap groups: #- LDAP_SYNC_ADMIN_STATUS=true diff --git a/i18n/ar-EG.i18n.json b/i18n/ar-EG.i18n.json index f596968c0..76864a1c4 100644 --- a/i18n/ar-EG.i18n.json +++ b/i18n/ar-EG.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index da925a737..5f93b7c74 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "إضافة مهمة فرعية", "add-checklist": "إضافة قائمة تدقيق", "add-checklist-item": "إضافة عنصر إلى قائمة التحقق", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "إضافة غلاف", "add-label": "إضافة ملصق", "add-list": "إضافة قائمة", diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json index fdee8fcdf..014cbca3d 100644 --- a/i18n/bg.i18n.json +++ b/i18n/bg.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Добави подзадача", "add-checklist": "Добави списък със задачи", "add-checklist-item": "Добави точка към списъка със задачи", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Добави корица", "add-label": "Добави етикет", "add-list": "Добави списък", diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index a3ed035b4..e0e728fca 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Ouzphenn ur golo", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json index d171d017f..aae4661f7 100644 --- a/i18n/ca.i18n.json +++ b/i18n/ca.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Afegir Subtasca", "add-checklist": "Afegeix checklist", "add-checklist-item": "Afegeix un ítem al checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Afegeix coberta", "add-label": "Afegeix etiqueta", "add-list": "Afegeix llista", diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index f3f8b1e4d..89d18f456 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Přidat Podúkol", "add-checklist": "Přidat zaškrtávací seznam", "add-checklist-item": "Přidat položku do zaškrtávacího seznamu", + "convertChecklistItemToCardPopup-title": "Převést na kartu", "add-cover": "Přidat obal", "add-label": "Přidat štítek", "add-list": "Přidat sloupec", diff --git a/i18n/da.i18n.json b/i18n/da.i18n.json index 83521b58b..223628316 100644 --- a/i18n/da.i18n.json +++ b/i18n/da.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Tilføj delopgave", "add-checklist": "Tilføj tjekliste", "add-checklist-item": "Tilføj et element til tjeklisten", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Tilføj omslag", "add-label": "Tilføj etikette", "add-list": "Tilføj liste", diff --git a/i18n/de-CH.i18n.json b/i18n/de-CH.i18n.json index f4ad5e955..04fb82ee0 100644 --- a/i18n/de-CH.i18n.json +++ b/i18n/de-CH.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Teilaufgabe hinzufügen", "add-checklist": "Checkliste hinzufügen", "add-checklist-item": "Element zu Checkliste hinzufügen", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Cover hinzufügen", "add-label": "Label hinzufügen", "add-list": "Liste hinzufügen", diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index 03b689b35..099ec34fa 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Teilaufgabe hinzufügen", "add-checklist": "Checkliste hinzufügen", "add-checklist-item": "Element zu Checkliste hinzufügen", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Cover hinzufügen", "add-label": "Label hinzufügen", "add-list": "Liste hinzufügen", diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json index a61701a9f..02eb3b240 100644 --- a/i18n/el.i18n.json +++ b/i18n/el.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Προσθήκη Υποεργασίας", "add-checklist": "Προσθήκη Λίστας ελέγχου", "add-checklist-item": "Προσθήκη ενός στοιχείου στη λίστα ελέγχου - checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Προσθήκη Ετικέτας", "add-list": "Προσθήκη Λίστας", diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json index bf5f8f711..e08df9f53 100644 --- a/i18n/en-GB.i18n.json +++ b/i18n/en-GB.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/en-IT.i18n.json b/i18n/en-IT.i18n.json new file mode 100644 index 000000000..76864a1c4 --- /dev/null +++ b/i18n/en-IT.i18n.json @@ -0,0 +1,1063 @@ +{ + "accept": "Accept", + "act-activity-notify": "Activity Notification", + "act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-deleteComment": "deleted comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-createBoard": "created board __board__", + "act-createSwimlane": "created swimlane __swimlane__ to board __board__", + "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-createCustomField": "created custom field __customField__ at board __board__", + "act-deleteCustomField": "deleted custom field __customField__ at board __board__", + "act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-createList": "added list __list__ to board __board__", + "act-addBoardMember": "added member __member__ to board __board__", + "act-archivedBoard": "Board __board__ moved to Archive", + "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive", + "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive", + "act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive", + "act-importBoard": "imported board __board__", + "act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__", + "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__", + "act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-removeBoardMember": "removed member __member__ from board __board__", + "act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-withBoardTitle": "__board__", + "act-withCardTitle": "[__board__] __card__", + "actions": "Actions", + "activities": "Activities", + "activity": "Activity", + "activity-added": "added %s to %s", + "activity-archived": "%s moved to Archive", + "activity-attached": "attached %s to %s", + "activity-created": "created %s", + "activity-customfield-created": "created custom field %s", + "activity-excluded": "excluded %s from %s", + "activity-imported": "imported %s into %s from %s", + "activity-imported-board": "imported %s from %s", + "activity-joined": "joined %s", + "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-unjoined": "unjoined %s", + "activity-subtask-added": "added subtask to %s", + "activity-checked-item": "checked %s in checklist %s of %s", + "activity-unchecked-item": "unchecked %s in checklist %s of %s", + "activity-checklist-added": "added checklist to %s", + "activity-checklist-removed": "removed a checklist from %s", + "activity-checklist-completed": "completed checklist %s of %s", + "activity-checklist-uncompleted": "uncompleted the checklist %s of %s", + "activity-checklist-item-added": "added checklist item to '%s' in %s", + "activity-checklist-item-removed": "removed a checklist item from '%s' in %s", + "add": "Add", + "activity-checked-item-card": "checked %s in checklist %s", + "activity-unchecked-item-card": "unchecked %s in checklist %s", + "activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "activity-checklist-uncompleted-card": "uncompleted the checklist %s", + "activity-editComment": "edited comment %s", + "activity-deleteComment": "deleted comment %s", + "activity-receivedDate": "edited received date to %s of %s", + "activity-startDate": "edited start date to %s of %s", + "activity-dueDate": "edited due date to %s of %s", + "activity-endDate": "edited end date to %s of %s", + "add-attachment": "Add Attachment", + "add-board": "Add Board", + "add-template": "Add Template", + "add-card": "Add Card", + "add-card-to-top-of-list": "Add Card to Top of List", + "add-card-to-bottom-of-list": "Add Card to Bottom of List", + "add-swimlane": "Add Swimlane", + "add-subtask": "Add Subtask", + "add-checklist": "Add Checklist", + "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", + "add-cover": "Add Cover", + "add-label": "Add Label", + "add-list": "Add List", + "add-members": "Add Members", + "added": "Added", + "addMemberPopup-title": "Members", + "admin": "Admin", + "admin-desc": "Can view and edit cards, remove members, and change settings for the board.", + "admin-announcement": "Announcement", + "admin-announcement-active": "Active System-Wide Announcement", + "admin-announcement-title": "Announcement from Administrator", + "all-boards": "All boards", + "and-n-other-card": "And __count__ other card", + "and-n-other-card_plural": "And __count__ other cards", + "apply": "Apply", + "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.", + "archive": "Move to Archive", + "archive-all": "Move All to Archive", + "archive-board": "Move Board to Archive", + "archive-card": "Move Card to Archive", + "archive-list": "Move List to Archive", + "archive-swimlane": "Move Swimlane to Archive", + "archive-selection": "Move selection to Archive", + "archiveBoardPopup-title": "Move Board to Archive?", + "archived-items": "Archive", + "archived-boards": "Boards in Archive", + "restore-board": "Restore Board", + "no-archived-boards": "No Boards in Archive.", + "archives": "Archive", + "template": "Template", + "templates": "Templates", + "template-container": "Template Container", + "add-template-container": "Add Template Container", + "assign-member": "Assign member", + "attached": "attached", + "attachment": "Attachment", + "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.", + "attachmentDeletePopup-title": "Delete Attachment?", + "attachments": "Attachments", + "auto-watch": "Automatically watch boards when they are created", + "avatar-too-big": "The avatar is too large (520KB max)", + "back": "Back", + "board-change-color": "Change color", + "board-nb-stars": "%s stars", + "board-not-found": "Board not found", + "board-private-info": "This board will be private.", + "board-public-info": "This board will be public.", + "board-drag-drop-reorder-or-click-open": "Drag and drop to reorder board icons. Click board icon to open board.", + "boardChangeColorPopup-title": "Change Board Background", + "boardChangeTitlePopup-title": "Rename Board", + "boardChangeVisibilityPopup-title": "Change Visibility", + "boardChangeWatchPopup-title": "Change Watch", + "boardMenuPopup-title": "Board Settings", + "boardChangeViewPopup-title": "Board View", + "boards": "Boards", + "board-view": "Board View", + "board-view-cal": "Calendar", + "board-view-swimlanes": "Swimlanes", + "board-view-collapse": "Collapse", + "board-view-gantt": "Gantt", + "board-view-lists": "Lists", + "bucket-example": "Like “Bucket List” for example", + "cancel": "Cancel", + "card-archived": "This card is moved to Archive.", + "board-archived": "This board is moved to Archive.", + "card-comments-title": "This card has %s comment.", + "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.", + "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.", + "card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.", + "card-due": "Due", + "card-due-on": "Due on", + "card-spent": "Spent Time", + "card-edit-attachments": "Edit attachments", + "card-edit-custom-fields": "Edit custom fields", + "card-edit-labels": "Edit labels", + "card-edit-members": "Edit members", + "card-labels-title": "Change the labels for the card.", + "card-members-title": "Add or remove members of the board from the card.", + "card-start": "Start", + "card-start-on": "Starts on", + "cardAttachmentsPopup-title": "Attach From", + "cardCustomField-datePopup-title": "Change date", + "cardCustomFieldsPopup-title": "Edit custom fields", + "cardStartVotingPopup-title": "Start a vote", + "positiveVoteMembersPopup-title": "Proponents", + "negativeVoteMembersPopup-title": "Opponents", + "card-edit-voting": "Edit voting", + "editVoteEndDatePopup-title": "Change vote end date", + "allowNonBoardMembers": "Allow all logged in users", + "vote-question": "Voting question", + "vote-public": "Show who voted what", + "vote-for-it": "for it", + "vote-against": "against", + "deleteVotePopup-title": "Delete vote?", + "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.", + "cardStartPlanningPokerPopup-title": "Start a Planning Poker", + "card-edit-planning-poker": "Edit Planning Poker", + "editPokerEndDatePopup-title": "Change Planning Poker vote end date", + "poker-question": "Planning Poker", + "poker-one": "1", + "poker-two": "2", + "poker-three": "3", + "poker-five": "5", + "poker-eight": "8", + "poker-thirteen": "13", + "poker-twenty": "20", + "poker-forty": "40", + "poker-oneHundred": "100", + "poker-unsure": "?", + "poker-finish": "Finish", + "poker-result-votes": "Votes", + "poker-result-who": "Who", + "poker-replay": "Replay", + "set-estimation": "Set Estimation", + "deletePokerPopup-title": "Delete planning poker?", + "poker-delete-pop": "Deleting is permanent. You will lose all actions associated with this planning poker.", + "cardDeletePopup-title": "Delete Card?", + "cardDetailsActionsPopup-title": "Card Actions", + "cardLabelsPopup-title": "Labels", + "cardMembersPopup-title": "Members", + "cardMorePopup-title": "More", + "cardTemplatePopup-title": "Create template", + "cards": "Cards", + "cards-count": "Cards", + "cards-count-one": "Card", + "casSignIn": "Sign In with CAS", + "cardType-card": "Card", + "cardType-linkedCard": "Linked Card", + "cardType-linkedBoard": "Linked Board", + "change": "Change", + "change-avatar": "Change Avatar", + "change-password": "Change Password", + "change-permissions": "Change permissions", + "change-settings": "Change Settings", + "changeAvatarPopup-title": "Change Avatar", + "changeLanguagePopup-title": "Change Language", + "changePasswordPopup-title": "Change Password", + "changePermissionsPopup-title": "Change Permissions", + "changeSettingsPopup-title": "Change Settings", + "subtasks": "Subtasks", + "checklists": "Checklists", + "click-to-star": "Click to star this board.", + "click-to-unstar": "Click to unstar this board.", + "clipboard": "Clipboard or drag & drop", + "close": "Close", + "close-board": "Close Board", + "close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.", + "close-card": "Close Card", + "color-black": "black", + "color-blue": "blue", + "color-crimson": "crimson", + "color-darkgreen": "darkgreen", + "color-gold": "gold", + "color-gray": "gray", + "color-green": "green", + "color-indigo": "indigo", + "color-lime": "lime", + "color-magenta": "magenta", + "color-mistyrose": "mistyrose", + "color-navy": "navy", + "color-orange": "orange", + "color-paleturquoise": "paleturquoise", + "color-peachpuff": "peachpuff", + "color-pink": "pink", + "color-plum": "plum", + "color-purple": "purple", + "color-red": "red", + "color-saddlebrown": "saddlebrown", + "color-silver": "silver", + "color-sky": "sky", + "color-slateblue": "slateblue", + "color-white": "white", + "color-yellow": "yellow", + "unset-color": "Unset", + "comment": "Comment", + "comment-placeholder": "Write Comment", + "comment-only": "Comment only", + "comment-only-desc": "Can comment on cards only.", + "no-comments": "No comments", + "no-comments-desc": "Can not see comments and activities.", + "worker": "Worker", + "worker-desc": "Can only move cards, assign itself to card and comment.", + "computer": "Computer", + "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?", + "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?", + "copy-card-link-to-clipboard": "Copy card link to clipboard", + "linkCardPopup-title": "Link Card", + "searchElementPopup-title": "Search", + "copyCardPopup-title": "Copy Card", + "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards", + "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format", + "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]", + "create": "Create", + "createBoardPopup-title": "Create Board", + "chooseBoardSourcePopup-title": "Import board", + "createLabelPopup-title": "Create Label", + "createCustomField": "Create Field", + "createCustomFieldPopup-title": "Create Field", + "current": "current", + "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.", + "custom-field-checkbox": "Checkbox", + "custom-field-currency": "Currency", + "custom-field-currency-option": "Currency Code", + "custom-field-date": "Date", + "custom-field-dropdown": "Dropdown List", + "custom-field-dropdown-none": "(none)", + "custom-field-dropdown-options": "List Options", + "custom-field-dropdown-options-placeholder": "Press enter to add more options", + "custom-field-dropdown-unknown": "(unknown)", + "custom-field-number": "Number", + "custom-field-text": "Text", + "custom-fields": "Custom Fields", + "date": "Date", + "decline": "Decline", + "default-avatar": "Default avatar", + "delete": "Delete", + "deleteCustomFieldPopup-title": "Delete Custom Field?", + "deleteLabelPopup-title": "Delete Label?", + "description": "Description", + "disambiguateMultiLabelPopup-title": "Disambiguate Label Action", + "disambiguateMultiMemberPopup-title": "Disambiguate Member Action", + "discard": "Discard", + "done": "Done", + "download": "Download", + "edit": "Edit", + "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", + "editCustomFieldPopup-title": "Edit Field", + "editCardSpentTimePopup-title": "Change spent time", + "editLabelPopup-title": "Change Label", + "editNotificationPopup-title": "Edit Notification", + "editProfilePopup-title": "Edit Profile", + "email": "Email", + "email-enrollAccount-subject": "An account created for you on __siteName__", + "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.", + "email-fail": "Sending email failed", + "email-fail-text": "Error trying to send email", + "email-invalid": "Invalid email", + "email-invite": "Invite via Email", + "email-invite-subject": "__inviter__ sent you an invitation", + "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.", + "email-resetPassword-subject": "Reset your password on __siteName__", + "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.", + "email-sent": "Email sent", + "email-verifyEmail-subject": "Verify your email address on __siteName__", + "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.", + "enable-wip-limit": "Enable WIP Limit", + "error-board-doesNotExist": "This board does not exist", + "error-board-notAdmin": "You need to be admin of this board to do that", + "error-board-notAMember": "You need to be a member of this board to do that", + "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-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", + "error-list-doesNotExist": "This list does not exist", + "error-user-doesNotExist": "This user does not exist", + "error-user-notAllowSelf": "You can not invite yourself", + "error-user-notCreated": "This user is not created", + "error-username-taken": "This username is already taken", + "error-orgname-taken": "This organization name is already taken", + "error-teamname-taken": "This team name is already taken", + "error-email-taken": "Email has already been taken", + "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "export-board-excel": "Export board to Excel", + "user-can-not-export-excel": "User can not export Excel", + "export-board-html": "Export board to HTML", + "export-card": "Export card", + "export-card-pdf": "Export card to PDF", + "user-can-not-export-card-to-pdf": "User can not export card to PDF", + "exportBoardPopup-title": "Export board", + "exportCardPopup-title": "Export card", + "sort": "Sort", + "sort-desc": "Click to Sort List", + "list-sort-by": "Sort the List By:", + "list-label-modifiedAt": "Last Access Time", + "list-label-title": "Name of the List", + "list-label-sort": "Your Manual Order", + "list-label-short-modifiedAt": "(L)", + "list-label-short-title": "(N)", + "list-label-short-sort": "(M)", + "filter": "Filter", + "filter-cards": "Filter Cards or Lists", + "filter-dates-label": "Filter by date", + "filter-no-due-date": "No due date", + "filter-overdue": "Overdue", + "filter-due-today": "Due today", + "filter-due-this-week": "Due this week", + "filter-due-tomorrow": "Due tomorrow", + "list-filter-label": "Filter List by Title", + "filter-clear": "Clear filter", + "filter-labels-label": "Filter by label", + "filter-no-label": "No label", + "filter-member-label": "Filter by member", + "filter-no-member": "No member", + "filter-assignee-label": "Filter by assignee", + "filter-no-assignee": "No assignee", + "filter-custom-fields-label": "Filter by Custom Fields", + "filter-no-custom-fields": "No Custom Fields", + "filter-show-archive": "Show archived lists", + "filter-hide-empty": "Hide empty lists", + "filter-on": "Filter is on", + "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.", + "filter-to-selection": "Filter to selection", + "other-filters-label": "Other Filters", + "advanced-filter-label": "Advanced Filter", + "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i", + "fullname": "Full Name", + "header-logo-title": "Go back to your boards page.", + "hide-system-messages": "Hide system messages", + "headerBarCreateBoardPopup-title": "Create Board", + "home": "Home", + "import": "Import", + "impersonate-user": "Impersonate user", + "link": "Link", + "import-board": "import board", + "import-board-c": "Import board", + "import-board-title-trello": "Import board from Trello", + "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", + "from-trello": "From Trello", + "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", + "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-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", + "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", + "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", + "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", + "import-map-members": "Map members", + "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", + "import-members-map-note": "Note: Unmapped members will be assigned to the current user.", + "import-show-user-mapping": "Review members mapping", + "import-user-select": "Pick your existing user you want to use as this member", + "importMapMembersAddPopup-title": "Select member", + "info": "Version", + "initials": "Initials", + "invalid-date": "Invalid date", + "invalid-time": "Invalid time", + "invalid-user": "Invalid user", + "joined": "joined", + "just-invited": "You are just invited to this board", + "keyboard-shortcuts": "Keyboard shortcuts", + "label-create": "Create Label", + "label-default": "%s label (default)", + "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.", + "labels": "Labels", + "language": "Language", + "last-admin-desc": "You can’t change roles because there must be at least one admin.", + "leave-board": "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 ?", + "link-card": "Link to this card", + "list-archive-cards": "Move all cards in this list to Archive", + "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.", + "list-move-cards": "Move all cards in this list", + "list-select-cards": "Select all cards in this list", + "set-color-list": "Set Color", + "listActionPopup-title": "List Actions", + "settingsUserPopup-title": "User Settings", + "settingsTeamPopup-title": "Team Settings", + "settingsOrgPopup-title": "Organization Settings", + "swimlaneActionPopup-title": "Swimlane Actions", + "swimlaneAddPopup-title": "Add a Swimlane below", + "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", + "listMorePopup-title": "More", + "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 move a list to Archive to remove it from the board and preserve the activity.", + "lists": "Lists", + "swimlanes": "Swimlanes", + "log-out": "Log Out", + "log-in": "Log In", + "loginPopup-title": "Log In", + "memberMenuPopup-title": "Member Settings", + "members": "Members", + "menu": "Menu", + "move-selection": "Move selection", + "moveCardPopup-title": "Move Card", + "moveCardToBottom-title": "Move to Bottom", + "moveCardToTop-title": "Move to Top", + "moveSelectionPopup-title": "Move selection", + "multi-selection": "Multi-Selection", + "multi-selection-label": "Set label for selection", + "multi-selection-member": "Set member for selection", + "multi-selection-on": "Multi-Selection is on", + "muted": "Muted", + "muted-info": "You will never be notified of any changes in this board", + "my-boards": "My Boards", + "name": "Name", + "no-archived-cards": "No cards in Archive.", + "no-archived-lists": "No lists in Archive.", + "no-archived-swimlanes": "No swimlanes in Archive.", + "no-results": "No results", + "normal": "Normal", + "normal-desc": "Can view and edit cards. Can't change settings.", + "not-accepted-yet": "Invitation not accepted yet", + "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", + "optional": "optional", + "or": "or", + "page-maybe-private": "This page may be private. You may be able to view it by logging in.", + "page-not-found": "Page not found.", + "password": "Password", + "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)", + "participating": "Participating", + "preview": "Preview", + "previewAttachedImagePopup-title": "Preview", + "previewClipboardImagePopup-title": "Preview", + "private": "Private", + "private-desc": "This board is private. Only people added to the board can view and edit it.", + "profile": "Profile", + "public": "Public", + "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.", + "quick-access-description": "Star a board to add a shortcut in this bar.", + "remove-cover": "Remove Cover", + "remove-from-board": "Remove from Board", + "remove-label": "Remove Label", + "listDeletePopup-title": "Delete List ?", + "remove-member": "Remove Member", + "remove-member-from-card": "Remove from Card", + "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.", + "removeMemberPopup-title": "Remove Member?", + "rename": "Rename", + "rename-board": "Rename Board", + "restore": "Restore", + "save": "Save", + "search": "Search", + "rules": "Rules", + "search-cards": "Search from card/list titles, descriptions and custom fields on this board", + "search-example": "Write text you search and press Enter", + "select-color": "Select Color", + "select-board": "Select Board", + "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", + "shortcut-autocomplete-emoji": "Autocomplete emoji", + "shortcut-autocomplete-members": "Autocomplete members", + "shortcut-clear-filters": "Clear all filters", + "shortcut-close-dialog": "Close Dialog", + "shortcut-filter-my-cards": "Filter my cards", + "shortcut-show-shortcuts": "Bring up this shortcuts list", + "shortcut-toggle-filterbar": "Toggle Filter Sidebar", + "shortcut-toggle-searchbar": "Toggle Search Sidebar", + "shortcut-toggle-sidebar": "Toggle Board Sidebar", + "show-cards-minimum-count": "Show cards count if list contains more than", + "sidebar-open": "Open Sidebar", + "sidebar-close": "Close Sidebar", + "signupPopup-title": "Create an Account", + "star-board-title": "Click to star this board. It will show up at top of your boards list.", + "starred-boards": "Starred Boards", + "starred-boards-description": "Starred boards show up at the top of your boards list.", + "subscribe": "Subscribe", + "team": "Team", + "this-board": "this board", + "this-card": "this card", + "spent-time-hours": "Spent time (hours)", + "overtime-hours": "Overtime (hours)", + "overtime": "Overtime", + "has-overtime-cards": "Has overtime cards", + "has-spenttime-cards": "Has spent time cards", + "time": "Time", + "title": "Title", + "tracking": "Tracking", + "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.", + "type": "Type", + "unassign-member": "Unassign member", + "unsaved-description": "You have an unsaved description.", + "unwatch": "Unwatch", + "upload": "Upload", + "upload-avatar": "Upload an avatar", + "uploaded-avatar": "Uploaded an avatar", + "custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL", + "custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL", + "custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27", + "custom-login-logo-image-url": "Custom Login Logo Image URL", + "custom-login-logo-link-url": "Custom Login Logo Link URL", + "text-below-custom-login-logo": "Text below Custom Login Logo", + "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line", + "username": "Username", + "import-usernames": "Import Usernames", + "view-it": "View it", + "warn-list-archived": "warning: this card is in an list at Archive", + "watch": "Watch", + "watching": "Watching", + "watching-info": "You will be notified of any change in this board", + "welcome-board": "Welcome Board", + "welcome-swimlane": "Milestone 1", + "welcome-list1": "Basics", + "welcome-list2": "Advanced", + "card-templates-swimlane": "Card Templates", + "list-templates-swimlane": "List Templates", + "board-templates-swimlane": "Board Templates", + "what-to-do": "What do you want 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", + "disable-self-registration": "Disable Self-Registration", + "invite": "Invite", + "invite-people": "Invite People", + "to-boards": "To board(s)", + "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-username": "Username", + "smtp-password": "Password", + "smtp-tls": "TLS support", + "send-from": "From", + "send-smtp-test": "Send a test email to yourself", + "invitation-code": "Invitation Code", + "email-invite-register-subject": "__inviter__ sent you an invitation", + "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", + "email-smtp-test-subject": "SMTP Test Email", + "email-smtp-test-text": "You have successfully sent an email", + "error-invitation-code-not-exist": "Invitation code doesn't exist", + "error-notAuthorized": "You are not authorized to view this page.", + "webhook-title": "Webhook Name", + "webhook-token": "Token (Optional for Authentication)", + "outgoing-webhooks": "Outgoing Webhooks", + "bidirectional-webhooks": "Two-Way Webhooks", + "outgoingWebhooksPopup-title": "Outgoing Webhooks", + "boardCardTitlePopup-title": "Card Title Filter", + "disable-webhook": "Disable This Webhook", + "global-webhook": "Global Webhooks", + "new-outgoing-webhook": "New Outgoing Webhook", + "no-name": "(Unknown)", + "Node_version": "Node version", + "Meteor_version": "Meteor version", + "MongoDB_version": "MongoDB version", + "MongoDB_storage_engine": "MongoDB storage engine", + "MongoDB_Oplog_enabled": "MongoDB Oplog enabled", + "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", + "days": "days", + "hours": "hours", + "minutes": "minutes", + "seconds": "seconds", + "show-field-on-card": "Show this field on card", + "automatically-field-on-card": "Add field to new cards", + "always-field-on-card": "Add field to all cards", + "showLabel-field-on-card": "Show field label on minicard", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change", + "accounts-allowUserNameChange": "Allow Username Change", + "createdAt": "Created at", + "modifiedAt": "Modified at", + "verified": "Verified", + "active": "Active", + "card-received": "Received", + "card-received-on": "Received on", + "card-end": "End", + "card-end-on": "Ends on", + "editCardReceivedDatePopup-title": "Change received date", + "editCardEndDatePopup-title": "Change end date", + "setCardColorPopup-title": "Set color", + "setCardActionsColorPopup-title": "Choose a color", + "setSwimlaneColorPopup-title": "Choose a color", + "setListColorPopup-title": "Choose a color", + "assigned-by": "Assigned By", + "requested-by": "Requested By", + "card-sorting-by-number": "Card sorting by number", + "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.", + "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.", + "boardDeletePopup-title": "Delete Board?", + "delete-board": "Delete Board", + "default-subtasks-board": "Subtasks for __board__ board", + "default": "Default", + "queue": "Queue", + "subtask-settings": "Subtasks Settings", + "card-settings": "Card Settings", + "boardSubtaskSettingsPopup-title": "Board Subtasks Settings", + "boardCardSettingsPopup-title": "Card Settings", + "deposit-subtasks-board": "Deposit subtasks to this board:", + "deposit-subtasks-list": "Landing list for subtasks deposited here:", + "show-parent-in-minicard": "Show parent in minicard:", + "prefix-with-full-path": "Prefix with full path", + "prefix-with-parent": "Prefix with parent", + "subtext-with-full-path": "Subtext with full path", + "subtext-with-parent": "Subtext with parent", + "change-card-parent": "Change card's parent", + "parent-card": "Parent card", + "source-board": "Source board", + "no-parent": "Don't show parent", + "activity-added-label": "added label '%s' to %s", + "activity-removed-label": "removed label '%s' from %s", + "activity-delete-attach": "deleted an attachment from %s", + "activity-added-label-card": "added label '%s'", + "activity-removed-label-card": "removed label '%s'", + "activity-delete-attach-card": "deleted an attachment", + "activity-set-customfield": "set custom field '%s' to '%s' in %s", + "activity-unset-customfield": "unset custom field '%s' in %s", + "r-rule": "Rule", + "r-add-trigger": "Add trigger", + "r-add-action": "Add action", + "r-board-rules": "Board rules", + "r-add-rule": "Add rule", + "r-view-rule": "View rule", + "r-delete-rule": "Delete rule", + "r-new-rule-name": "New rule title", + "r-no-rules": "No rules", + "r-trigger": "Trigger", + "r-action": "Action", + "r-when-a-card": "When a card", + "r-is": "is", + "r-is-moved": "is moved", + "r-added-to": "Added to", + "r-removed-from": "Removed from", + "r-the-board": "the board", + "r-list": "list", + "list": "List", + "set-filter": "Set Filter", + "r-moved-to": "Moved to", + "r-moved-from": "Moved from", + "r-archived": "Moved to Archive", + "r-unarchived": "Restored from Archive", + "r-a-card": "a card", + "r-when-a-label-is": "When a label is", + "r-when-the-label": "When the label", + "r-list-name": "list name", + "r-when-a-member": "When a member is", + "r-when-the-member": "When the member", + "r-name": "name", + "r-when-a-attach": "When an attachment", + "r-when-a-checklist": "When a checklist is", + "r-when-the-checklist": "When the checklist", + "r-completed": "Completed", + "r-made-incomplete": "Made incomplete", + "r-when-a-item": "When a checklist item is", + "r-when-the-item": "When the checklist item", + "r-checked": "Checked", + "r-unchecked": "Unchecked", + "r-move-card-to": "Move card to", + "r-top-of": "Top of", + "r-bottom-of": "Bottom of", + "r-its-list": "its list", + "r-archive": "Move to Archive", + "r-unarchive": "Restore from Archive", + "r-card": "card", + "r-add": "Add", + "r-remove": "Remove", + "r-label": "label", + "r-member": "member", + "r-remove-all": "Remove all members from the card", + "r-set-color": "Set color to", + "r-checklist": "checklist", + "r-check-all": "Check all", + "r-uncheck-all": "Uncheck all", + "r-items-check": "items of checklist", + "r-check": "Check", + "r-uncheck": "Uncheck", + "r-item": "item", + "r-of-checklist": "of checklist", + "r-send-email": "Send an email", + "r-to": "to", + "r-of": "of", + "r-subject": "subject", + "r-rule-details": "Rule details", + "r-d-move-to-top-gen": "Move card to top of its list", + "r-d-move-to-top-spec": "Move card to top of list", + "r-d-move-to-bottom-gen": "Move card to bottom of its list", + "r-d-move-to-bottom-spec": "Move card to bottom of list", + "r-d-send-email": "Send email", + "r-d-send-email-to": "to", + "r-d-send-email-subject": "subject", + "r-d-send-email-message": "message", + "r-d-archive": "Move card to Archive", + "r-d-unarchive": "Restore card from Archive", + "r-d-add-label": "Add label", + "r-d-remove-label": "Remove label", + "r-create-card": "Create new card", + "r-in-list": "in list", + "r-in-swimlane": "in swimlane", + "r-d-add-member": "Add member", + "r-d-remove-member": "Remove member", + "r-d-remove-all-member": "Remove all member", + "r-d-check-all": "Check all items of a list", + "r-d-uncheck-all": "Uncheck all items of a list", + "r-d-check-one": "Check item", + "r-d-uncheck-one": "Uncheck item", + "r-d-check-of-list": "of checklist", + "r-d-add-checklist": "Add checklist", + "r-d-remove-checklist": "Remove checklist", + "r-by": "by", + "r-add-checklist": "Add checklist", + "r-with-items": "with items", + "r-items-list": "item1,item2,item3", + "r-add-swimlane": "Add swimlane", + "r-swimlane-name": "swimlane name", + "r-board-note": "Note: leave a field empty to match every possible value.", + "r-checklist-note": "Note: checklist's items have to be written as comma separated values.", + "r-when-a-card-is-moved": "When a card is moved to another list", + "r-set": "Set", + "r-update": "Update", + "r-datefield": "date field", + "r-df-start-at": "start", + "r-df-due-at": "due", + "r-df-end-at": "end", + "r-df-received-at": "received", + "r-to-current-datetime": "to current date/time", + "r-remove-value-from": "Remove value from", + "ldap": "LDAP", + "oauth2": "OAuth2", + "cas": "CAS", + "authentication-method": "Authentication method", + "authentication-type": "Authentication type", + "custom-product-name": "Custom Product Name", + "layout": "Layout", + "hide-logo": "Hide Logo", + "add-custom-html-after-body-start": "Add Custom HTML after start", + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login", + "display-authentication-method": "Display Authentication Method", + "default-authentication-method": "Default Authentication Method", + "duplicate-board": "Duplicate Board", + "org-number": "The number of organizations is:", + "team-number": "The number of teams is:", + "people-number": "The number of people is:", + "swimlaneDeletePopup-title": "Delete Swimlane ?", + "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.", + "restore-all": "Restore all", + "delete-all": "Delete all", + "loading": "Loading, please wait.", + "previous_as": "last time was", + "act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__", + "act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)", + "act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)", + "act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)", + "a-dueAt": "modified due time to be", + "a-endAt": "modified ending time to be", + "a-startAt": "modified starting time to be", + "a-receivedAt": "modified received time to be", + "almostdue": "current due time %s is approaching", + "pastdue": "current due time %s is past", + "duenow": "current due time %s is today", + "act-newDue": "__list__/__card__ has 1st due reminder [__board__]", + "act-withDue": "__list__/__card__ due reminders [__board__]", + "act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching", + "act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past", + "act-duenow": "was reminding the current due (__timeValue__) of __card__ is now", + "act-atUserComment": "You were mentioned in [__board__] __list__/__card__", + "delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.", + "delete-team-confirm-popup": "Are you sure you want to delete this team? There is no undo.", + "delete-org-confirm-popup": "Are you sure you want to delete this organization? There is no undo.", + "accounts-allowUserDelete": "Allow users to self delete their account", + "hide-minicard-label-text": "Hide minicard label text", + "show-desktop-drag-handles": "Show desktop drag handles", + "assignee": "Assignee", + "cardAssigneesPopup-title": "Assignee", + "addmore-detail": "Add a more detailed description", + "show-on-card": "Show on Card", + "new": "New", + "editOrgPopup-title": "Edit Organization", + "newOrgPopup-title": "New Organization", + "editTeamPopup-title": "Edit Team", + "newTeamPopup-title": "New Team", + "editUserPopup-title": "Edit User", + "newUserPopup-title": "New User", + "notifications": "Notifications", + "view-all": "View All", + "filter-by-unread": "Filter by Unread", + "mark-all-as-read": "Mark all as read", + "remove-all-read": "Remove all read", + "allow-rename": "Allow Rename", + "allowRenamePopup-title": "Allow Rename", + "start-day-of-week": "Set day of the week start", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived", + "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items", + "task": "Task", + "create-task": "Create Task", + "ok": "OK", + "organizations": "Organizations", + "teams": "Teams", + "displayName": "Display Name", + "shortName": "Short Name", + "website": "Website", + "person": "Person", + "my-cards": "My Cards", + "card": "Card", + "board": "Board", + "context-separator": "/", + "myCardsSortChange-title": "My Cards Sort", + "myCardsSortChangePopup-title": "My Cards Sort", + "myCardsSortChange-choice-board": "By Board", + "myCardsSortChange-choice-dueat": "By Due Date", + "dueCards-title": "Due Cards", + "dueCardsViewChange-title": "Due Cards View", + "dueCardsViewChangePopup-title": "Due Cards View", + "dueCardsViewChange-choice-me": "Me", + "dueCardsViewChange-choice-all": "All Users", + "dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.", + "broken-cards": "Broken Cards", + "board-title-not-found": "Board '%s' not found.", + "swimlane-title-not-found": "Swimlane '%s' not found.", + "list-title-not-found": "List '%s' not found.", + "label-not-found": "Label '%s' not found.", + "label-color-not-found": "Label color %s not found.", + "user-username-not-found": "Username '%s' not found.", + "comment-not-found": "Card with comment containing text '%s' not found.", + "globalSearch-title": "Search All Boards", + "no-cards-found": "No Cards Found", + "one-card-found": "One Card Found", + "n-cards-found": "%s Cards Found", + "n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found", + "operator-board": "board", + "operator-board-abbrev": "b", + "operator-swimlane": "swimlane", + "operator-swimlane-abbrev": "s", + "operator-list": "list", + "operator-list-abbrev": "l", + "operator-label": "label", + "operator-label-abbrev": "#", + "operator-user": "user", + "operator-user-abbrev": "@", + "operator-member": "member", + "operator-member-abbrev": "m", + "operator-assignee": "assignee", + "operator-assignee-abbrev": "a", + "operator-creator": "creator", + "operator-status": "status", + "operator-due": "due", + "operator-created": "created", + "operator-modified": "modified", + "operator-sort": "sort", + "operator-comment": "comment", + "operator-has": "has", + "operator-limit": "limit", + "predicate-archived": "archived", + "predicate-open": "open", + "predicate-ended": "ended", + "predicate-all": "all", + "predicate-overdue": "overdue", + "predicate-week": "week", + "predicate-month": "month", + "predicate-quarter": "quarter", + "predicate-year": "year", + "predicate-due": "due", + "predicate-modified": "modified", + "predicate-created": "created", + "predicate-attachment": "attachment", + "predicate-description": "description", + "predicate-checklist": "checklist", + "predicate-start": "start", + "predicate-end": "end", + "predicate-assignee": "assignee", + "predicate-member": "member", + "predicate-public": "public", + "predicate-private": "private", + "operator-unknown-error": "%s is not an operator", + "operator-number-expected": "operator __operator__ expected a number, got '__value__'", + "operator-sort-invalid": "sort of '%s' is invalid", + "operator-status-invalid": "'%s' is not a valid status", + "operator-has-invalid": "%s is not a valid existence check", + "operator-limit-invalid": "%s is not a valid limit. Limit should be a positive integer.", + "next-page": "Next Page", + "previous-page": "Previous Page", + "heading-notes": "Notes", + "globalSearch-instructions-heading": "Search Instructions", + "globalSearch-instructions-description": "Searches can include operators to refine the search. Operators are specified by writing the operator name and value separated by a colon. For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*. If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).", + "globalSearch-instructions-operators": "Available operators:", + "globalSearch-instructions-operator-board": "`__operator_board__:` - cards in boards matching the specified *<title>*", + "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - cards in lists matching the specified *<title>*", + "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*", + "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.", + "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>", + "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name|color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`", + "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*", + "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`", + "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*", + "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*", + "globalSearch-instructions-operator-creator": "`__operator_creator__:<username>` - cards where *<username>* is the card's creator", + "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.", + "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less", + "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less", + "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:", + "globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards", + "globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards", + "globalSearch-instructions-status-ended": "`__predicate_ended__` - cards with an end date", + "globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards", + "globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards", + "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`. Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).", + "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`. For a descending sort, place a `-` in front of the sort name.", + "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.", + "globalSearch-instructions-notes-1": "Multiple operators may be specified.", + "globalSearch-instructions-notes-2": "Similar operators are *OR*ed together. Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.", + "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.", + "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.", + "globalSearch-instructions-notes-4": "Text searches are case insensitive.", + "globalSearch-instructions-notes-5": "By default archived cards are not searched.", + "link-to-search": "Link to this search", + "excel-font": "Arial", + "number": "Number", + "label-colors": "Label Colors", + "label-names": "Label Names", + "archived-at": "archived at", + "sort-cards": "Sort Cards", + "cardsSortPopup-title": "Sort Cards", + "due-date": "Due Date", + "server-error": "Server Error", + "server-error-troubleshooting": "Please submit the error generated by the server.\nFor a snap installation, run: `sudo snap logs wekan.wekan`\nFor a Docker installation, run: `sudo docker logs wekan-app`", + "title-alphabetically": "Title (Alphabetically)", + "created-at-newest-first": "Created At (Newest First)", + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden", + "move-swimlane": "Move Swimlane", + "moveSwimlanePopup-title": "Move Swimlane", + "custom-field-stringtemplate": "String Template", + "custom-field-stringtemplate-format": "Format (use %{value} as placeholder)", + "custom-field-stringtemplate-separator": "Separator (use or   for a space)", + "custom-field-stringtemplate-item-placeholder": "Press enter to add more items", + "creator": "Creator", + "filesReportTitle": "Files Report", + "orphanedFilesReportTitle": "Orphaned Files Report", + "reports": "Reports", + "rulesReportTitle": "Rules Report", + "copy-swimlane": "Copy Swimlane", + "copySwimlanePopup-title": "Copy Swimlane", + "display-card-creator": "Display Card Creator", + "wait-spinner": "Wait Spinner", + "Bounce": "Bounce Wait Spinner", + "Cube": "Cube Wait Spinner", + "Cube-Grid": "Cube-Grid Wait Spinner", + "Dot": "Dot Wait Spinner", + "Double-Bounce": "Double Bounce Wait Spinner", + "Rotateplane": "Rotateplane Wait Spinner", + "Scaleout": "Scaleout Wait Spinner", + "Wave": "Wave Wait Spinner", + "maximize-card": "Maximize Card", + "minimize-card": "Minimize Card", + "delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it", + "delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it" +} \ No newline at end of file diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 8fcf123b5..5f9e6897f 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index 1ea858560..59c8fa538 100644 --- a/i18n/eo.i18n.json +++ b/i18n/eo.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json index 5482a9c41..e9b1deaf1 100644 --- a/i18n/es-AR.i18n.json +++ b/i18n/es-AR.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Agregar Subtarea", "add-checklist": "Agregar Lista de Tareas", "add-checklist-item": "Agregar ítem a lista de tareas", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Agregar Portadas", "add-label": "Agregar Etiqueta", "add-list": "Agregar Lista", diff --git a/i18n/es-CL.i18n.json b/i18n/es-CL.i18n.json index 3a69092a3..ee3e4627b 100644 --- a/i18n/es-CL.i18n.json +++ b/i18n/es-CL.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Añadir subtarea", "add-checklist": "Añadir una lista de verificación", "add-checklist-item": "Añadir un elemento a la lista de verificación", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Añadir portada", "add-label": "Añadir una etiqueta", "add-list": "Añadir una lista", diff --git a/i18n/es-LA.i18n.json b/i18n/es-LA.i18n.json index f596968c0..76864a1c4 100644 --- a/i18n/es-LA.i18n.json +++ b/i18n/es-LA.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/es-MX.i18n.json b/i18n/es-MX.i18n.json index 3b1175a3b..f7c1023b9 100644 --- a/i18n/es-MX.i18n.json +++ b/i18n/es-MX.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/es-PE.i18n.json b/i18n/es-PE.i18n.json index db3ca9a2d..5247d4d3b 100644 --- a/i18n/es-PE.i18n.json +++ b/i18n/es-PE.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Agregar subtarea", "add-checklist": "Agregar lista de comprobación", "add-checklist-item": "Agregar un elemento a la lista de comprobación", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Agregar portada", "add-label": "Agregar una etiqueta", "add-list": "Agregar una lista", diff --git a/i18n/es-PY.i18n.json b/i18n/es-PY.i18n.json index f596968c0..76864a1c4 100644 --- a/i18n/es-PY.i18n.json +++ b/i18n/es-PY.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index 558489a8e..b2a24f822 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Añadir subtarea", "add-checklist": "Añadir una lista de verificación", "add-checklist-item": "Añadir un elemento a la lista de verificación", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Añadir portada", "add-label": "Añadir una etiqueta", "add-list": "Añadir una lista", diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json index 67ad0de5c..c6e6a6c9a 100644 --- a/i18n/eu.i18n.json +++ b/i18n/eu.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Gehitu egiaztaketa zerrenda", "add-checklist-item": "Gehitu elementu bat egiaztaketa zerrendara", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Gehitu azala", "add-label": "Gehitu etiketa", "add-list": "Gehitu zerrenda", diff --git a/i18n/fa-IR.i18n.json b/i18n/fa-IR.i18n.json index 7ff3da221..adbd476c0 100644 --- a/i18n/fa-IR.i18n.json +++ b/i18n/fa-IR.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index b8b096be0..93937a9c7 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "افزودن زیر وظیفه", "add-checklist": "افزودن چک‌لیست", "add-checklist-item": "افزودن مورد به چک‌لیست", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "افزودن کاور", "add-label": "افزودن لیبل", "add-list": "افزودن لیست", diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index 19db3b57d..0c37889a2 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Lisää alitehtävä", "add-checklist": "Lisää tarkistuslista", "add-checklist-item": "Lisää kohta tarkistuslistaan", + "convertChecklistItemToCardPopup-title": "Muuta kortiksi", "add-cover": "Lisää kansi", "add-label": "Lisää nimilappu", "add-list": "Lisää lista", diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 4615fbb61..e807bae4a 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Ajouter une sous-tâche", "add-checklist": "Ajouter une checklist", "add-checklist-item": "Ajouter un élément à la checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Ajouter la couverture", "add-label": "Ajouter une étiquette", "add-list": "Ajouter une liste", diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json index e172d3b86..272baf07c 100644 --- a/i18n/gl.i18n.json +++ b/i18n/gl.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Engadir etiqueta", "add-list": "Engadir lista", diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index f2d24758f..8bdb87593 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "הוסף תת משימה", "add-checklist": "הוספת רשימת מטלות", "add-checklist-item": "הוספת פריט לרשימת משימות", + "convertChecklistItemToCardPopup-title": "המרה לכרטיס", "add-cover": "הוספת כיסוי", "add-label": "הוספת תווית", "add-list": "הוספת רשימה", diff --git a/i18n/hi.i18n.json b/i18n/hi.i18n.json index 68caeaf24..4a775d615 100644 --- a/i18n/hi.i18n.json +++ b/i18n/hi.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "उप कार्य जोड़ें", "add-checklist": "चिह्नांकन-सूची जोड़ें", "add-checklist-item": "चिह्नांकन-सूची विषय कोई तक जोड़ें", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "आवरण जोड़ें", "add-label": "नामपत्र जोड़ें", "add-list": "सूची जोड़ें", diff --git a/i18n/hr.i18n.json b/i18n/hr.i18n.json index 3caafdbe1..4dfffbb1b 100644 --- a/i18n/hr.i18n.json +++ b/i18n/hr.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Dodaj podzadatak", "add-checklist": "Dodaj listu provjere", "add-checklist-item": "Dodaj stavku listi provjere", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Dodaj naslovnicu", "add-label": "Dodaj oznaku", "add-list": "Dodaj listu", diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json index 009407dd5..dfdaa8761 100644 --- a/i18n/hu.i18n.json +++ b/i18n/hu.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Alfeladat hozzáadása", "add-checklist": "Ellenőrzőlista hozzáadása", "add-checklist-item": "Elem hozzáadása az ellenőrzőlistához", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Borító hozzáadása", "add-label": "Címke hozzáadása", "add-list": "Lista hozzáadása", diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json index c006dcbd4..74470f28f 100644 --- a/i18n/hy.i18n.json +++ b/i18n/hy.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 8f68ceb70..8363f84e4 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Tambahkan hal ke daftar periksa", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Tambahkan Sampul", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json index 683ce5eb1..9d04fcd3c 100644 --- a/i18n/ig.i18n.json +++ b/i18n/ig.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json index d40ce3cef..672585f31 100644 --- a/i18n/it.i18n.json +++ b/i18n/it.i18n.json @@ -81,7 +81,7 @@ "activity-endDate": "ha modificato la data di fine a %s di %s ", "add-attachment": "Aggiungi allegato", "add-board": "Aggiungi bacheca", - "add-template": "Add Template", + "add-template": "Aggiungi Template", "add-card": "Aggiungi scheda", "add-card-to-top-of-list": "Aggiungi Scheda in cima alla Lista", "add-card-to-bottom-of-list": "Aggiungi Scheda in fondo alla Lista", @@ -89,6 +89,7 @@ "add-subtask": "Aggiungi sotto-compito", "add-checklist": "Aggiungi Checklist", "add-checklist-item": "Aggiungi un elemento alla checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Aggiungi copertina", "add-label": "Aggiungi etichetta", "add-list": "Aggiungi lista", @@ -120,8 +121,8 @@ "archives": "Archivio", "template": "Template", "templates": "Template", - "template-container": "Template Container", - "add-template-container": "Add Template Container", + "template-container": "Contenitore dei Template", + "add-template-container": "Aggiungi contenitore di Template", "assign-member": "Assegna a un membro", "attached": "allegato", "attachment": "Allegato", diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index c7c076e2a..d29a264bb 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "サブタスクを追加", "add-checklist": "チェックリストを追加", "add-checklist-item": "チェックリストに項目を追加", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "カバーの追加", "add-label": "ラベルを追加", "add-list": "リストを追加", diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json index 7a95c2047..9b2e451d4 100644 --- a/i18n/ka.i18n.json +++ b/i18n/ka.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "ქვესაქმიანობის დამატება", "add-checklist": "კატალოგის დამატება", "add-checklist-item": "დაამატეთ საგანი ჩამონათვალს", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "გარეკანის დამატება", "add-label": "ნიშნის დამატება", "add-list": "ჩამონათვალის დამატება", diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json index 4a4f61afb..1da694e3a 100644 --- a/i18n/km.i18n.json +++ b/i18n/km.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index 5ae09284d..a2875e6dc 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "체크리스트 추가", "add-checklist-item": "체크리스트에 항목 추가", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "커버 추가", "add-label": "라벨 추가", "add-list": "리스트 추가", diff --git a/i18n/lt.i18n.json b/i18n/lt.i18n.json index f596968c0..76864a1c4 100644 --- a/i18n/lt.i18n.json +++ b/i18n/lt.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json index b8e3cbeb5..e40d59bef 100644 --- a/i18n/lv.i18n.json +++ b/i18n/lv.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Pievienot apakšuzdevumu", "add-checklist": "Pievienot kontrolsarakstu", "add-checklist-item": "Pievienot elementu", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Pievienot vāku", "add-label": "Pievienot birku", "add-list": "Pievienot sarakstu", diff --git a/i18n/mk.i18n.json b/i18n/mk.i18n.json index 31aaf3ce0..47b390ed5 100644 --- a/i18n/mk.i18n.json +++ b/i18n/mk.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Додади подзадача", "add-checklist": "Додади список на задачи", "add-checklist-item": "Додади точка во списокот со задачи", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Додади корица", "add-label": "Додади етикета", "add-list": "Додади листа", diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json index f8adfa4a3..1f2b3a709 100644 --- a/i18n/mn.i18n.json +++ b/i18n/mn.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Чеклист нэмэх", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Шошго нэмэх", "add-list": "Жагсаалт нэмэх", diff --git a/i18n/nb.i18n.json b/i18n/nb.i18n.json index 55f0d5089..d29dc5b91 100644 --- a/i18n/nb.i18n.json +++ b/i18n/nb.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Legg til Underoppgave", "add-checklist": "Legg til Sjekkliste", "add-checklist-item": "Nytt punkt på sjekklisten", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Nytt omslag", "add-label": "Legg til Etikett", "add-list": "Legg til Liste", diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index 583c49ee7..6a1931a09 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Subtaak Toevoegen", "add-checklist": "Checklist toevoegen", "add-checklist-item": "Voeg item toe aan checklist", + "convertChecklistItemToCardPopup-title": "Converteer naar Kaart", "add-cover": "Cover Toevoegen", "add-label": "Label Toevoegen", "add-list": "Lijst Toevoegen", diff --git a/i18n/oc.i18n.json b/i18n/oc.i18n.json index c1cf1658b..b710db5ae 100644 --- a/i18n/oc.i18n.json +++ b/i18n/oc.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Apondre una jos-tasca", "add-checklist": "Apondre una checklist", "add-checklist-item": "Apondre un element a la checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Apondre una cobèrta", "add-label": "Apondre una etiqueta", "add-list": "Apondre una tièra", diff --git a/i18n/pa.i18n.json b/i18n/pa.i18n.json index f596968c0..76864a1c4 100644 --- a/i18n/pa.i18n.json +++ b/i18n/pa.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index 3c0e5dc18..1ae7f6879 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Dodaj podzadanie", "add-checklist": "Dodaj czeklistę", "add-checklist-item": "Dodaj element do czeklisty", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Dodaj okładkę", "add-label": "Dodaj etykietę", "add-list": "Dodaj listę", diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index f6222abe1..034dc1269 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Adicionar subtarefa", "add-checklist": "Adicionar lista de verificação", "add-checklist-item": "Adicionar um item à lista de verificação", + "convertChecklistItemToCardPopup-title": "Converter para Cartão", "add-cover": "Adicionar Capa", "add-label": "Adicionar Etiqueta", "add-list": "Adicionar Lista", diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json index 865bb9b25..986195e1a 100644 --- a/i18n/pt.i18n.json +++ b/i18n/pt.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Adicionar Sub-tarefa", "add-checklist": "Adicionar Lista de Verificação", "add-checklist-item": "Adicionar um item à lista de verificação", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Adicionar Capa", "add-label": "Adicionar Etiqueta", "add-list": "Adicionar Lista", diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json index abb40c7f9..76a449c6a 100644 --- a/i18n/ro.i18n.json +++ b/i18n/ro.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Adaugă Decor", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index a71229e93..4f79ddb24 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Добавить подзадачу", "add-checklist": "Добавить контрольный список", "add-checklist-item": "Добавить пункт в контрольный список", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Прикрепить", "add-label": "Добавить метку", "add-list": "Добавить простой список", diff --git a/i18n/sk.i18n.json b/i18n/sk.i18n.json index 660dea5a1..1ed21a1ba 100644 --- a/i18n/sk.i18n.json +++ b/i18n/sk.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Pridať Podúlohu", "add-checklist": "Pridať Checklist", "add-checklist-item": "Pridať novú položku do Checklistu", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Pridať obal", "add-label": "Pridať značku", "add-list": "Pridať zoznam", diff --git a/i18n/sl.i18n.json b/i18n/sl.i18n.json index 2e0afa106..0b897b0ea 100644 --- a/i18n/sl.i18n.json +++ b/i18n/sl.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Dodaj podopravilo", "add-checklist": "Dodaj kontrolni seznam", "add-checklist-item": "Dodaj postavko na kontrolni seznam", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Dodaj ovitek", "add-label": "Dodaj oznako", "add-list": "Dodaj seznam", diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json index ab6c0dd30..6aa812da5 100644 --- a/i18n/sr.i18n.json +++ b/i18n/sr.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Dodaj podzadatak", "add-checklist": "Add Checklist", "add-checklist-item": "Dodaj novu stavku u listu", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Dodaj zaglavlje", "add-label": "Dodaj oznaku", "add-list": "Dodaj Listu", diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json index a2ff0db42..adfc18f87 100644 --- a/i18n/sv.i18n.json +++ b/i18n/sv.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Lägg till deluppgift", "add-checklist": "Lägg till checklista", "add-checklist-item": "Lägg till objekt i checklista", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Lägg till omslag", "add-label": "Lägg till etikett", "add-list": "Lägg till lista", diff --git a/i18n/sw.i18n.json b/i18n/sw.i18n.json index 294229770..194b58ed3 100644 --- a/i18n/sw.i18n.json +++ b/i18n/sw.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json index 1c4882950..c3b817a63 100644 --- a/i18n/ta.i18n.json +++ b/i18n/ta.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json index e57a8dc52..51ed9b3c3 100644 --- a/i18n/th.i18n.json +++ b/i18n/th.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "เพิ่มรายการตรวจสอบ", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "เพิ่มหน้าปก", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index 46ae0b182..b9c529155 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Alt Görev Ekle", "add-checklist": "Yapılacak Listesi Ekle", "add-checklist-item": "Yapılacak listesine yeni bir öğe ekle", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Kapak resmi ekle", "add-label": "Etiket Ekle", "add-list": "Liste Ekle", diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json index 3ecdfe29f..8e3ac4384 100644 --- a/i18n/uk.i18n.json +++ b/i18n/uk.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Додати підзадачу", "add-checklist": "Add Checklist", "add-checklist-item": "Додати елемент в список", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Додати обкладинку", "add-label": "Додати мітку", "add-list": "Додати список", diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json index ef0f31829..7a36910df 100644 --- a/i18n/vi.i18n.json +++ b/i18n/vi.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Thêm Nhiệm vụ phụ", "add-checklist": "Thêm Danh Sách Kiểm Tra", "add-checklist-item": "Thêm Một Mục Vào Danh Sách Kiểm Tra", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Thêm Bìa", "add-label": "Thêm Nhãn", "add-list": "Thêm Danh Sách", diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index c49dfedea..ca3f39b96 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -81,14 +81,15 @@ "activity-endDate": "已将结束日期从 %s 修改为 %s", "add-attachment": "添加附件", "add-board": "添加看板", - "add-template": "Add Template", + "add-template": "新增模板", "add-card": "添加卡片", - "add-card-to-top-of-list": "Add Card to Top of List", - "add-card-to-bottom-of-list": "Add Card to Bottom of List", + "add-card-to-top-of-list": "新增卡片到列表顶部", + "add-card-to-bottom-of-list": "新增卡片到列表底部", "add-swimlane": "添加泳道图", "add-subtask": "添加子任务", "add-checklist": "添加待办清单", "add-checklist-item": "扩充清单", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "添加封面", "add-label": "添加标签", "add-list": "添加列表", @@ -120,8 +121,8 @@ "archives": "归档", "template": "模板", "templates": "模板", - "template-container": "Template Container", - "add-template-container": "Add Template Container", + "template-container": "模板容器", + "add-template-container": "新增模板容器", "assign-member": "指派成员", "attached": "附加", "attachment": "附件", @@ -136,7 +137,7 @@ "board-not-found": "看板不存在", "board-private-info": "该看板将被设为 <strong>私有</strong>.", "board-public-info": "该看板将被设为 <strong>公开</strong>.", - "board-drag-drop-reorder-or-click-open": "Drag and drop to reorder board icons. Click board icon to open board.", + "board-drag-drop-reorder-or-click-open": "对看板图标进行拖拽排序。点击看板图标打开看板。", "boardChangeColorPopup-title": "修改看板背景", "boardChangeTitlePopup-title": "重命名看板", "boardChangeVisibilityPopup-title": "更改可视级别", @@ -184,10 +185,10 @@ "vote-against": "反对", "deleteVotePopup-title": "删除投票?", "vote-delete-pop": "永久删除。此操作会将所有数据删除掉。", - "cardStartPlanningPokerPopup-title": "Start a Planning Poker", - "card-edit-planning-poker": "Edit Planning Poker", - "editPokerEndDatePopup-title": "Change Planning Poker vote end date", - "poker-question": "Planning Poker", + "cardStartPlanningPokerPopup-title": "开始一次计划扑克", + "card-edit-planning-poker": "编辑计划扑克", + "editPokerEndDatePopup-title": "更改计划扑克投票截止日期", + "poker-question": "计划扑克", "poker-one": "1", "poker-two": "2", "poker-three": "3", @@ -197,14 +198,14 @@ "poker-twenty": "20", "poker-forty": "40", "poker-oneHundred": "100", - "poker-unsure": "?", - "poker-finish": "Finish", - "poker-result-votes": "Votes", - "poker-result-who": "Who", + "poker-unsure": "?", + "poker-finish": "完成", + "poker-result-votes": "投票", + "poker-result-who": "何人", "poker-replay": "Replay", "set-estimation": "Set Estimation", - "deletePokerPopup-title": "Delete planning poker?", - "poker-delete-pop": "Deleting is permanent. You will lose all actions associated with this planning poker.", + "deletePokerPopup-title": "删除计划扑克?", + "poker-delete-pop": "永久删除。对该计划扑克的所有操作记录将会丢失。", "cardDeletePopup-title": "彻底删除卡片?", "cardDetailsActionsPopup-title": "卡片操作", "cardLabelsPopup-title": "标签", @@ -236,7 +237,7 @@ "close": "关闭", "close-board": "关闭看板", "close-board-pop": "您可以通过主页头部的“归档”按钮,来恢复看板。", - "close-card": "Close Card", + "close-card": "关闭卡片", "color-black": "黑色", "color-blue": "蓝色", "color-crimson": "深红", @@ -361,11 +362,11 @@ "export-board-excel": "看板导出为Excel", "user-can-not-export-excel": "用户无法导出Excel", "export-board-html": "看板导出为HTML", - "export-card": "Export card", - "export-card-pdf": "Export card to PDF", - "user-can-not-export-card-to-pdf": "User can not export card to PDF", + "export-card": "导出卡片", + "export-card-pdf": "卡片导出为PDF", + "user-can-not-export-card-to-pdf": "用户无法将卡片导出为PDF", "exportBoardPopup-title": "导出看板", - "exportCardPopup-title": "Export card", + "exportCardPopup-title": "导出卡片", "sort": "排序", "sort-desc": "点此来将列表排序", "list-sort-by": "按此来将列表排序:", @@ -454,8 +455,8 @@ "set-color-list": "设置颜色", "listActionPopup-title": "列表操作", "settingsUserPopup-title": "用户设置", - "settingsTeamPopup-title": "Team Settings", - "settingsOrgPopup-title": "Organization Settings", + "settingsTeamPopup-title": "团队设置", + "settingsOrgPopup-title": "组织设置", "swimlaneActionPopup-title": "泳道图操作", "swimlaneAddPopup-title": "在下面添加一个泳道", "listImportCardPopup-title": "导入 Trello 卡片", @@ -671,7 +672,7 @@ "setListColorPopup-title": "选择一种颜色", "assigned-by": "指派人", "requested-by": "需求人", - "card-sorting-by-number": "Card sorting by number", + "card-sorting-by-number": "根据编号对卡片排序", "board-delete-notice": "删除时永久操作,将会丢失此看板上的所有列表、卡片和动作。", "delete-board-confirm-popup": "所有列表、卡片、标签和活动都回被删除,将无法恢复看板内容。不支持撤销。", "boardDeletePopup-title": "删除看板?", @@ -853,8 +854,8 @@ "act-duenow": "__card__ 的当前到期提醒(__timeValue__) 现在到期", "act-atUserComment": "[__board__] __list__/__card__ 提到了您", "delete-user-confirm-popup": "确实要删除此帐户吗?此操作无法撤销。", - "delete-team-confirm-popup": "Are you sure you want to delete this team? There is no undo.", - "delete-org-confirm-popup": "Are you sure you want to delete this organization? There is no undo.", + "delete-team-confirm-popup": "请确认是否删除此团队?此操作无法撤销。", + "delete-org-confirm-popup": "请确认是否删除此组织?此操作无法撤销。", "accounts-allowUserDelete": "允许用户自行删除其帐户", "hide-minicard-label-text": "隐藏迷你卡片标签文本", "show-desktop-drag-handles": "显示桌面拖放手柄", @@ -1045,7 +1046,7 @@ "rulesReportTitle": "规则报告", "copy-swimlane": "复制泳道", "copySwimlanePopup-title": "复制泳道", - "display-card-creator": "Display Card Creator", + "display-card-creator": "显示卡片创建者", "wait-spinner": "Wait Spinner", "Bounce": "Bounce Wait Spinner", "Cube": "Cube Wait Spinner", @@ -1055,8 +1056,8 @@ "Rotateplane": "Rotateplane Wait Spinner", "Scaleout": "Scaleout Wait Spinner", "Wave": "Wave Wait Spinner", - "maximize-card": "Maximize Card", - "minimize-card": "Minimize Card", - "delete-org-warning-message": "Can not delete this organization, there is at least one user that belongs to it", - "delete-team-warning-message": "Can not delete this team, there is at least one user that belongs to it" + "maximize-card": "最大化卡片", + "minimize-card": "最小化卡片", + "delete-org-warning-message": "无法删除该组织,至少还有一个用户属于该组织。", + "delete-team-warning-message": "无法删除该团队,至少还有一个用户属于该团队。" } \ No newline at end of file diff --git a/i18n/zh-HK.i18n.json b/i18n/zh-HK.i18n.json index b8c19191f..94fd47fb5 100644 --- a/i18n/zh-HK.i18n.json +++ b/i18n/zh-HK.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "Add Subtask", "add-checklist": "Add Checklist", "add-checklist-item": "Add an item to checklist", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "Add Cover", "add-label": "Add Label", "add-list": "Add List", diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json index 77c26eeda..cf89f1ad2 100644 --- a/i18n/zh-TW.i18n.json +++ b/i18n/zh-TW.i18n.json @@ -89,6 +89,7 @@ "add-subtask": "新增子任務", "add-checklist": "新增待辦清單", "add-checklist-item": "新增項目", + "convertChecklistItemToCardPopup-title": "Convert to Card", "add-cover": "新增封面", "add-label": "新增標籤", "add-list": "新增清單", diff --git a/models/wekanCreator.js b/models/wekanCreator.js index 2867b12f8..310230e7c 100644 --- a/models/wekanCreator.js +++ b/models/wekanCreator.js @@ -271,17 +271,21 @@ export class WekanCreator { }); }); } - boardToImport.labels.forEach(label => { - const labelToCreate = { - _id: Random.id(6), - color: label.color, - name: label.name, - }; - // We need to remember them by Wekan ID, as this is the only ref we have - // when importing cards. - this.labels[label._id] = labelToCreate._id; - boardToCreate.labels.push(labelToCreate); - }); + + if (boardToImport.labels) { + boardToImport.labels.forEach(label => { + const labelToCreate = { + _id: Random.id(6), + color: label.color, + name: label.name, + }; + // We need to remember them by Wekan ID, as this is the only ref we have + // when importing cards. + this.labels[label._id] = labelToCreate._id; + boardToCreate.labels.push(labelToCreate); + }); + } + const boardId = Boards.direct.insert(boardToCreate); Boards.direct.update(boardId, { $set: { diff --git a/package-lock.json b/package-lock.json index 9c849f775..3bc3dd2d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v5.38.0", + "version": "v5.40.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c955e5560..14eb50b0c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v5.38.0", + "version": "v5.40.0", "description": "Open-Source kanban", "private": true, "repository": { diff --git a/packages/wekan-ldap/server/ldap.js b/packages/wekan-ldap/server/ldap.js index 28d053f32..11b629406 100644 --- a/packages/wekan-ldap/server/ldap.js +++ b/packages/wekan-ldap/server/ldap.js @@ -40,6 +40,8 @@ export default class LDAP { group_filter_group_member_attribute: this.constructor.settings_get('LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE'), group_filter_group_member_format : this.constructor.settings_get('LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT'), group_filter_group_name : this.constructor.settings_get('LDAP_GROUP_FILTER_GROUP_NAME'), + AD_Simple_Auth : this.constructor.settings_get('LDAP_AD_SIMPLE_AUTH'), + Default_Domain : this.constructor.settings_get('LDAP_DEFAULT_DOMAIN'), }; } @@ -224,10 +226,17 @@ export default class LDAP { return; } + /* if SimpleAuth is configured, the BaseDN is not needed */ + if (!this.options.BaseDN && !this.options.AD_Simple_Auth) throw new Error('BaseDN is not provided'); - if (!this.options.BaseDN) throw new Error('BaseDN is not provided'); + var userDn = ""; + if (this.options.AD_Simple_Auth === true || this.options.AD_Simple_Auth === 'true') { + userDn = `${username}@${this.options.Default_Domain}`; + } else { + userDn = `${this.options.User_Authentication_Field}=${username},${this.options.BaseDN}`; + } - const userDn = `${this.options.User_Authentication_Field}=${username},${this.options.BaseDN}`; + log_info('Binding with User', userDn); this.bindSync(userDn, password); this.domainBinded = true; diff --git a/public/api/wekan.html b/public/api/wekan.html index b3289fd3b..b652de25d 100644 --- a/public/api/wekan.html +++ b/public/api/wekan.html @@ -7,7 +7,7 @@ <meta charset="utf-8"> <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> - <title>Wekan REST API v5.38 + Wekan REST API v5.40 @@ -1555,7 +1555,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc