Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83848dbee2 | ||
|
|
cb099d1093 | ||
|
|
89a8a6f5e3 | ||
|
|
22923d08af | ||
|
|
57ccfcde63 | ||
|
|
75693d16e2 | ||
|
|
454523dd47 | ||
|
|
bb37d8fa96 | ||
|
|
f470323ee7 | ||
|
|
c62a2ee11f | ||
|
|
5b0f7f8aef | ||
|
|
0495e61c28 | ||
|
|
c1c3421006 | ||
|
|
3ce90e9766 | ||
|
|
293718d90c | ||
|
|
4b53b0c90a | ||
|
|
98103bb2f7 | ||
|
|
e5b003f5ab | ||
|
|
9a1b1a5bed | ||
|
|
990af4e5c2 | ||
|
|
f7a9bafe4c | ||
|
|
ac7d44f8a8 | ||
|
|
ed8471be9b | ||
|
|
65beb89944 | ||
|
|
663d8e3c34 | ||
|
|
128a356b92 | ||
|
|
2092b429db | ||
|
|
58e5e9b308 | ||
|
|
338fb5304d | ||
|
|
9e62584b26 | ||
|
|
5849ffbb53 | ||
|
|
a58bffbb3e | ||
|
|
a8ae6adbc2 | ||
|
|
946dcf0b0a | ||
|
|
1ca9e96f35 | ||
|
|
b475127c53 | ||
|
|
bbca361aeb | ||
|
|
f96e21f462 | ||
|
|
1be8e5625f | ||
|
|
9084158aec | ||
|
|
d454fa7dd7 | ||
|
|
b6d3e79548 | ||
|
|
a23d93391b | ||
|
|
a033c35a34 | ||
|
|
48cd551a69 | ||
|
|
8d2839f0c3 | ||
|
|
284fac043b | ||
|
|
bd239351fd | ||
|
|
37c94622e4 | ||
|
|
c4fa9010f3 | ||
|
|
843381a36c | ||
|
|
59ba2111e8 | ||
|
|
1efa66b58c | ||
|
|
dc8c9053c2 | ||
|
|
0a16147470 | ||
|
|
373e9782dc | ||
|
|
951a0db380 | ||
|
|
c0d33d97f2 | ||
|
|
5bdb392258 | ||
|
|
a48630ffcf | ||
|
|
fe1941008c | ||
|
|
190aa36a51 | ||
|
|
468f4de0cf | ||
|
|
93215be2cf | ||
|
|
ab2884cae0 | ||
|
|
5f374b2fd2 | ||
|
|
636e1657f6 | ||
|
|
2001c01b4d | ||
|
|
a9166d877f | ||
|
|
435501fb8e | ||
|
|
fd47e10e52 | ||
|
|
e3bd1c4d23 | ||
|
|
f7b72a1a80 | ||
|
|
31f25bcddb | ||
|
|
1ec5e90706 | ||
|
|
20d6ea85d4 | ||
|
|
7498dba32c | ||
|
|
d374cd2f81 | ||
|
|
ffbd3ccc2a | ||
|
|
ad1a181f6d | ||
|
|
fcd83ea7bd | ||
|
|
07fc296762 | ||
|
|
62fca18fea | ||
|
|
af82a80b2b | ||
|
|
9966c19f94 | ||
|
|
ff320f7b3a | ||
|
|
9c9694bcd1 | ||
|
|
fcd7097aba | ||
|
|
19089e8930 | ||
|
|
f7920da0cf | ||
|
|
d7ea73ff82 | ||
|
|
e077c85d00 | ||
|
|
3665a9131c | ||
|
|
f7fe44fcdf | ||
|
|
a533caa944 | ||
|
|
26f66f3cf0 | ||
|
|
2e449e9e78 | ||
|
|
e30f6515c6 | ||
|
|
11e9811f82 | ||
|
|
df5be82840 | ||
|
|
599c83e0da | ||
|
|
c0dbb79ac9 | ||
|
|
0375c551f3 | ||
|
|
ee0f42eeb1 | ||
|
|
7f4b382d2f | ||
|
|
96d81768bc | ||
|
|
cd012954e9 | ||
|
|
3b202c284a | ||
|
|
8da1dd524d | ||
|
|
cfaeb43f1f | ||
|
|
25e0c38ad8 | ||
|
|
756fbd0f4c | ||
|
|
55a53e2655 | ||
|
|
11b8e12ede | ||
|
|
69aeee536d | ||
|
|
ab6a7c2dd6 | ||
|
|
0a5af2b719 | ||
|
|
ecd77c8704 | ||
|
|
c5019e620a | ||
|
|
257ed56db3 | ||
|
|
842c8b83d2 | ||
|
|
9705118ca2 | ||
|
|
326b4c5350 | ||
|
|
f3ed6ee6f6 | ||
|
|
60c6f4f5af | ||
|
|
3c1cd85f6f | ||
|
|
bb9d5cb694 | ||
|
|
669c2f3861 | ||
|
|
6a93a93d0b | ||
|
|
c3fe70e094 |
No files matched your search
+3
-1
@@ -129,6 +129,8 @@
|
||||
"Integrations": true,
|
||||
"HTTP": true,
|
||||
"AccountSettings": true,
|
||||
"Announcements": true
|
||||
"Announcements": true,
|
||||
"Swimlanes": true,
|
||||
"Npm": true
|
||||
}
|
||||
}
|
||||
@@ -14,3 +14,4 @@ package-lock.json
|
||||
**/stage
|
||||
**/prime
|
||||
**/*.snap
|
||||
snap/.snapcraft/
|
||||
+1
-1
@@ -39,7 +39,7 @@ host = https://www.transifex.com
|
||||
# tap:i18n requires us to use `-` separator in the language identifiers whereas
|
||||
# Transifex uses a `_` separator, without an option to customize it on one side
|
||||
# or the other, so we need to do a Manual mapping.
|
||||
lang_map = en_GB:en-GB, es_AR:es-AR, el_GR:el, fa_IR:fa, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW
|
||||
lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW
|
||||
|
||||
[wekan.application]
|
||||
file_filter = i18n/<lang>.i18n.json
|
||||
|
||||
@@ -1,8 +1,96 @@
|
||||
# v0.78 2018-03-17 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Allow swimlanes reordering](https://github.com/wekan/wekan/commit/37c94622e476f50bf2387bc8b140454d66200e78);
|
||||
- [Import missing card fields: isOvertime, startAt and spentTime](https://github.com/wekan/wekan/commit/b475127c53031fa498da139a7d16f3e54d43b90d);
|
||||
- [Lists view is the default view when creating boards](https://github.com/wekan/wekan/commit/1ca9e96f35389c0eec2290e8e1207801ee25f907);
|
||||
- [Enabled import at Sandtorm. Keep there big DANGER warning about data loss bug.](https://github.com/wekan/wekan/commit/22923d08af4f1a63ded1d92fe6918436b598592b);
|
||||
- [Add language: Armenian](https://github.com/wekan/wekan/commit/75693d16e2a0f3d201c1036ab06e6d40eb1c0adc).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix lint errors related to sandstorm](https://github.com/wekan/wekan/commit/0a16147470246c8f49bb918f5ddc7bb2e54fba14);
|
||||
- [Add Swimlanes to globals](https://github.com/wekan/wekan/commit/373e9782dcf87a9c1169b5d1f8175ce14e4898c9);
|
||||
- [Fix lint errors related to trello creator](https://github.com/wekan/wekan/commit/951a0db380d60f3d948ae38d50b85a54983a51de);
|
||||
- [Fix lint errors related to language names](https://github.com/wekan/wekan/commit/c0d33d97f2c8d4e9371a03d4ad3022df3ed64d3d);
|
||||
- [Avoid swimlane title overlap](https://github.com/wekan/wekan/commit/c4fa9010f34966b633c7bf7e46ad49fc101127c9);
|
||||
- [Fix scrollbar inside list and outer scroll](https://github.com/wekan/wekan/commit/a033c35a3411902b9bf8f62a40cd68f641e573d3);
|
||||
- [Remove list max-height 350px](https://github.com/wekan/wekan/commit/b6d3e79548d1e88c93fa2965a936595176a95565);
|
||||
- [Snap: Adding network hooks for configure hook to fix security denials](https://github.com/wekan/wekan/commit/9084158aece8a642dc49bf7ecc2196bf9d1af63e);
|
||||
- [Snap: Fixing problem when mongodb was not started at install/refresh](https://github.com/wekan/wekan/commit/1be8e5625fd20797910009a8221ca706fd52ab11);
|
||||
- [Fix Add Card Button dissapearing when dragging](https://github.com/wekan/wekan/commit/58e5e9b308113e5a8af5166328a68a0aafcc2558);
|
||||
- [Fix Scrollbar near top of screen when using internet explorer on Win7](https://github.com/wekan/wekan/commit/128a356b9222fa0ed824b477c2d0e1e6a0368021);
|
||||
- [Fix scroll when dragging elements. Remove scrollbars from swimlanes.](https://github.com/wekan/wekan/commit/ed8471be9b79243b016a275e5b11a6912717fbb9);
|
||||
- [Partial fix for scroll bar inside cardDetails](https://github.com/wekan/wekan/commit/ac7d44f8a8d809cd94ed5ef3640473f34c72403b);
|
||||
- [Fix swimlane header rotation on Google Chrome. After this change both Firefox 58 and Google Chrome 64
|
||||
have properly rotated swimlane header.](https://github.com/wekan/wekan/commit/9a1b1a5bedbe44827de109731a3c3b1a07790d3e);
|
||||
- [Fix card copy and move with swimlanes](https://github.com/wekan/wekan/commit/4b53b0c90a57593c0fe2d808d2298e85f488bfa9).
|
||||
- [Fix scroll board when opening cardDetails](https://github.com/wekan/wekan/commit/454523dd4744b2bccb6805dad59abd664fdacb31);
|
||||
- [Fix swimlane info not displayed in activities](https://github.com/wekan/wekan/commit/bb37d8fa964c0d03721a664387e74300fde09eef);
|
||||
- [Fix sandstorm default swimlane creation](https://github.com/wekan/wekan/commit/f470323ee746c4e79f07d166d511867408194eb6);
|
||||
- [Extend lists to bottom of frame in lists view](https://github.com/wekan/wekan/commit/c62a2ee11febf7f98456c97dc3973509b4bfe119);
|
||||
- [Fix drag and drop issues when re-enter board](https://github.com/wekan/wekan/commit/5b0f7f8aef115b202aaff6bc25bb514426dc2009).
|
||||
|
||||
Thanks to GitHub users andresmanelli, GhassenRjab, kubiko, lumatijev, lunatic4ever and xet7 for their contributions.
|
||||
|
||||
# v0.77 2018-02-23 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Search from card titles and descriptions on this board](https://github.com/wekan/wekan/pull/1503).
|
||||
- Add Bulgarian language.
|
||||
|
||||
and adds the following [Snap updates](https://github.com/wekan/wekan/pull/1495):
|
||||
|
||||
- Cleanup of snap helper scripts
|
||||
- Cleanup and snapctl settings handling
|
||||
- Fix for snap store auto review refusal
|
||||
- Adding support for automatic restart of services when setting(s) are changed.
|
||||
No need to call systemctl restart anymore
|
||||
- Fixing snap set functionality
|
||||
- Adding optional caddy service support (by default caddy service is disabled),
|
||||
it can be enabled by calling: snap set wekan caddy-enabled=true
|
||||
- [Service life cycle improvements](https://github.com/wekan/wekan/pull/1495)
|
||||
- [Wekan help text changes and tweaks](https://github.com/wekan/wekan/pull/1495).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix: card-shadow no longer covered the page if you scroll down](https://github.com/wekan/wekan/pull/1496).
|
||||
|
||||
Thanks to GitHub users GhassenRjab, kubiko and stefano-pogliani for their contributions.
|
||||
|
||||
# v0.76 2018-02-21 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Add swimlaneId to POST /api/boards/:boardId/lists/:listId/cards route](https://github.com/wekan/wekan/commit/ee0f42eeb1b10107bd8fc38cdefbdbc4f3fde108);
|
||||
- [Added path to capnp.js to make Wekan work on Sandstorm](https://github.com/wekan/wekan/commit/11e9811f82858a3d98036e142b0da69d867adebc).
|
||||
|
||||
Known bugs:
|
||||
|
||||
- [Disabled Import temporarily on Sandstorm because of data loss bug](https://github.com/wekan/wekan/commit/e30f6515c623de7a48f25e0b2fc75313ae5d187c);
|
||||
- [Swimlane not visible at Sandstorm](https://github.com/wekan/wekan/issues/1494).
|
||||
|
||||
Thanks to GitHub users couscous3 and xet7 for their contributions.
|
||||
|
||||
# v0.75 2018-02-16 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Checklist templates](https://github.com/wekan/wekan/pull/1470);
|
||||
- Added [Finnish language changelog](https://github.com/wekan/wekan/tree/devel/meta/t9n-changelog)
|
||||
and [more Finnish traslations](https://github.com/wekan/wekan/blob/devel/sandstorm-pkgdef.capnp)
|
||||
to Sandstorm.
|
||||
|
||||
Thanks to GitHub users erikturk and xet7 for their contributions.
|
||||
|
||||
# v0.74 2018-02-13 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Remove Emoji support, so MAC addresses etc show correctly](https://github.com/wekan/wekan/commit/056843d66c361594d5d4478cfe86e2e405333b91).
|
||||
NOTE: You can still add Unicode Emojis, this only removes broken autoconversion to Emojis.
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ template(name="board")
|
||||
template(name="boardBody")
|
||||
.board-wrapper(class=currentBoard.colorClass)
|
||||
+sidebar
|
||||
.board-canvas(
|
||||
.board-canvas.js-swimlanes.js-perfect-scrollbar(
|
||||
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
|
||||
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
|
||||
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
const subManager = new SubsManager();
|
||||
const { calculateIndex } = Utils;
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.draggingActive = new ReactiveVar(false);
|
||||
this.showOverlay = new ReactiveVar(false);
|
||||
this.isBoardReady = new ReactiveVar(false);
|
||||
|
||||
// The pattern we use to manually handle data loading is described here:
|
||||
@@ -21,32 +20,72 @@ BlazeComponent.extendComponent({
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
this._isDragging = false;
|
||||
this._lastDragPositionX = 0;
|
||||
|
||||
// Used to set the overlay
|
||||
this.mouseHasEnterCardDetails = false;
|
||||
},
|
||||
|
||||
// XXX Flow components allow us to avoid creating these two setter methods by
|
||||
// exposing a public API to modify the component state. We need to investigate
|
||||
// best practices here.
|
||||
setIsDragging(bool) {
|
||||
this.draggingActive.set(bool);
|
||||
},
|
||||
|
||||
scrollLeft(position = 0) {
|
||||
const lists = this.$('.js-lists');
|
||||
lists && lists.animate({
|
||||
scrollLeft: position,
|
||||
});
|
||||
},
|
||||
|
||||
onlyShowCurrentCard() {
|
||||
return Utils.isMiniScreen() && Session.get('currentCard');
|
||||
},
|
||||
|
||||
}).register('board');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.showOverlay = new ReactiveVar(false);
|
||||
this.draggingActive = new ReactiveVar(false);
|
||||
this._isDragging = false;
|
||||
// Used to set the overlay
|
||||
this.mouseHasEnterCardDetails = false;
|
||||
},
|
||||
onRendered() {
|
||||
const boardComponent = this;
|
||||
const $swimlanesDom = boardComponent.$('.js-swimlanes');
|
||||
|
||||
$swimlanesDom.sortable({
|
||||
tolerance: 'pointer',
|
||||
appendTo: '.board-canvas',
|
||||
helper: 'clone',
|
||||
handle: '.js-swimlane-header',
|
||||
items: '.js-swimlane:not(.placeholder)',
|
||||
placeholder: 'swimlane placeholder',
|
||||
distance: 7,
|
||||
start(evt, ui) {
|
||||
ui.placeholder.height(ui.helper.height());
|
||||
EscapeActions.executeUpTo('popup-close');
|
||||
boardComponent.setIsDragging(true);
|
||||
},
|
||||
stop(evt, ui) {
|
||||
// To attribute the new index number, we need to get the DOM element
|
||||
// of the previous and the following card -- if any.
|
||||
const prevSwimlaneDom = ui.item.prev('.js-swimlane').get(0);
|
||||
const nextSwimlaneDom = ui.item.next('.js-swimlane').get(0);
|
||||
const sortIndex = calculateIndex(prevSwimlaneDom, nextSwimlaneDom, 1);
|
||||
|
||||
$swimlanesDom.sortable('cancel');
|
||||
const swimlaneDomElement = ui.item.get(0);
|
||||
const swimlane = Blaze.getData(swimlaneDomElement);
|
||||
|
||||
Swimlanes.update(swimlane._id, {
|
||||
$set: {
|
||||
sort: sortIndex.base,
|
||||
},
|
||||
});
|
||||
|
||||
boardComponent.setIsDragging(false);
|
||||
},
|
||||
});
|
||||
|
||||
function userIsMember() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
}
|
||||
|
||||
// If there is no data in the board (ie, no lists) we autofocus the list
|
||||
// creation form by clicking on the corresponding element.
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
if (userIsMember() && currentBoard.lists().count() === 0) {
|
||||
boardComponent.openNewListForm();
|
||||
}
|
||||
},
|
||||
|
||||
isViewSwimlanes() {
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
const board = Boards.findOne(currentBoardId);
|
||||
@@ -59,6 +98,16 @@ BlazeComponent.extendComponent({
|
||||
return (board.view === 'board-view-lists');
|
||||
},
|
||||
|
||||
openNewListForm() {
|
||||
if (this.isViewSwimlanes()) {
|
||||
this.childComponents('swimlane')[0]
|
||||
.childComponents('addListAndSwimlaneForm')[0].open();
|
||||
} else if (this.isViewLists()) {
|
||||
this.childComponents('listsGroup')[0]
|
||||
.childComponents('addListForm')[0].open();
|
||||
}
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
// XXX The board-overlay div should probably be moved to the parent
|
||||
@@ -75,4 +124,19 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('board');
|
||||
|
||||
// XXX Flow components allow us to avoid creating these two setter methods by
|
||||
// exposing a public API to modify the component state. We need to investigate
|
||||
// best practices here.
|
||||
setIsDragging(bool) {
|
||||
this.draggingActive.set(bool);
|
||||
},
|
||||
|
||||
scrollLeft(position = 0) {
|
||||
const swimlanes = this.$('.js-swimlanes');
|
||||
swimlanes && swimlanes.animate({
|
||||
scrollLeft: position,
|
||||
});
|
||||
},
|
||||
|
||||
}).register('boardBody');
|
||||
@@ -1,8 +1,11 @@
|
||||
@import 'nib'
|
||||
|
||||
position()
|
||||
if arguments[0] == cover
|
||||
position: absolute
|
||||
if arguments[0] == cover || arguments[0] == fixed-cover
|
||||
if arguments[0] == cover
|
||||
position: absolute
|
||||
else
|
||||
position: fixed
|
||||
left: 0
|
||||
right: 0
|
||||
top: 0
|
||||
@@ -12,25 +15,18 @@ position()
|
||||
|
||||
.board-wrapper
|
||||
position: cover
|
||||
overflow-y: hidden;
|
||||
|
||||
.board-canvas
|
||||
position: cover
|
||||
transition: margin .1s
|
||||
overflow-y: auto;
|
||||
|
||||
&.is-sibling-sidebar-open
|
||||
margin-right: 248px
|
||||
|
||||
.swimlane
|
||||
border-bottom: 1px solid #CCC
|
||||
display: flex
|
||||
flex-direction: row
|
||||
margin: 0 0 10px
|
||||
padding: 0 40px 5px 0
|
||||
overflow-x: auto
|
||||
overflow-y: hidden
|
||||
|
||||
.board-overlay
|
||||
position: cover
|
||||
position: fixed-cover
|
||||
top: -100px
|
||||
right: -400px
|
||||
background: black
|
||||
|
||||
@@ -87,6 +87,10 @@ template(name="boardHeaderBar")
|
||||
a.board-header-btn-close.js-filter-reset(title="{{_ 'filter-clear'}}")
|
||||
i.fa.fa-times-thin
|
||||
|
||||
a.board-header-btn.js-open-search-view(title="{{_ 'search'}}")
|
||||
i.fa.fa-search
|
||||
span {{_ 'search'}}
|
||||
|
||||
a.board-header-btn.js-toggle-board-view(
|
||||
title="{{_ 'board-view'}}")
|
||||
i.fa.fa-th-large
|
||||
|
||||
@@ -100,6 +100,9 @@ BlazeComponent.extendComponent({
|
||||
Sidebar.setView();
|
||||
Filter.reset();
|
||||
},
|
||||
'click .js-open-search-view'() {
|
||||
Sidebar.setView('search');
|
||||
},
|
||||
'click .js-multiselection-activate'() {
|
||||
const currentCard = Session.get('currentCard');
|
||||
MultiSelection.activate();
|
||||
|
||||
@@ -135,6 +135,7 @@ template(name="cardDetailsActionsPopup")
|
||||
ul.pop-over-list
|
||||
li: a.js-move-card {{_ 'moveCardPopup-title'}}
|
||||
li: a.js-copy-card {{_ 'copyCardPopup-title'}}
|
||||
li: a.js-copy-checklist-cards {{_ 'copyChecklistToManyCardsPopup-title'}}
|
||||
unless archived
|
||||
li: a.js-archive {{_ 'archive-card'}}
|
||||
li: a.js-more {{_ 'cardMorePopup-title'}}
|
||||
@@ -154,7 +155,18 @@ template(name="copyCardPopup")
|
||||
else
|
||||
+boardsAndLists
|
||||
|
||||
|
||||
template(name="copyChecklistToManyCardsPopup")
|
||||
label(for='copy-checklist-cards-title') {{_ 'copyChecklistToManyCardsPopup-instructions'}}:
|
||||
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
|
||||
| {{_ 'copyChecklistToManyCardsPopup-format'}}
|
||||
if isSandstorm
|
||||
+boardLists
|
||||
else
|
||||
+boardsAndLists
|
||||
|
||||
template(name="boardsAndLists")
|
||||
label {{_ 'boards'}}:
|
||||
select.js-select-boards
|
||||
each boards
|
||||
if $eq _id currentBoard._id
|
||||
@@ -162,14 +174,18 @@ template(name="boardsAndLists")
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
label {{_ 'swimlanes'}}:
|
||||
select.js-select-swimlanes
|
||||
each swimlanes
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
label {{_ 'lists'}}:
|
||||
ul.pop-over-list
|
||||
select.js-select-lists
|
||||
each aBoardLists
|
||||
li
|
||||
if $eq ../_id _id
|
||||
a.disabled {{title}} ({{_ 'current'}})
|
||||
else
|
||||
a.js-select-list= title
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm.js-done {{_ 'done'}}
|
||||
|
||||
template(name="cardMembersPopup")
|
||||
ul.pop-over-list.js-card-member-list
|
||||
|
||||
@@ -44,8 +44,8 @@ BlazeComponent.extendComponent({
|
||||
const cardPanelWidth = 510;
|
||||
const bodyBoardComponent = this.parentComponent().parentComponent();
|
||||
|
||||
const $cardContainer = bodyBoardComponent.$('.js-lists');
|
||||
const $cardView = this.$(this.firstNode());
|
||||
const $cardContainer = bodyBoardComponent.$('.js-swimlanes');
|
||||
const cardContainerScroll = $cardContainer.scrollLeft();
|
||||
const cardContainerWidth = $cardContainer.width();
|
||||
|
||||
@@ -170,6 +170,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-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
|
||||
'click .js-move-card-to-top' (evt) {
|
||||
evt.preventDefault();
|
||||
const minOrder = _.min(this.list().cards(this.swimlaneId).map((c) => c.sort));
|
||||
@@ -210,11 +211,14 @@ Template.editCardTitleForm.events({
|
||||
});
|
||||
|
||||
Template.moveCardPopup.events({
|
||||
'click .js-select-list' () {
|
||||
'click .js-done' () {
|
||||
// XXX We should *not* get the currentCard from the global state, but
|
||||
// instead from a “component” state.
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const newListId = this._id;
|
||||
const lSelect = $('.js-select-lists')[0];
|
||||
const newListId = lSelect.options[lSelect.selectedIndex].value;
|
||||
const slSelect = $('.js-select-swimlanes')[0];
|
||||
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
|
||||
card.move(card.swimlaneId, newListId, 0);
|
||||
Popup.close();
|
||||
},
|
||||
@@ -222,7 +226,8 @@ Template.moveCardPopup.events({
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.selectedBoard = new ReactiveVar(Session.get('currentBoard'));
|
||||
subManager.subscribe('board', Session.get('currentBoard'));
|
||||
this.selectedBoardId = new ReactiveVar(Session.get('currentBoard'));
|
||||
},
|
||||
|
||||
boards() {
|
||||
@@ -235,32 +240,41 @@ BlazeComponent.extendComponent({
|
||||
return boards;
|
||||
},
|
||||
|
||||
swimlanes() {
|
||||
const board = Boards.findOne(this.selectedBoardId.get());
|
||||
return board.swimlanes();
|
||||
},
|
||||
|
||||
aBoardLists() {
|
||||
subManager.subscribe('board', this.selectedBoard.get());
|
||||
const board = Boards.findOne(this.selectedBoard.get());
|
||||
const board = Boards.findOne(this.selectedBoardId.get());
|
||||
return board.lists();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
'change .js-select-boards'(evt) {
|
||||
this.selectedBoard.set($(evt.currentTarget).val());
|
||||
this.selectedBoardId.set($(evt.currentTarget).val());
|
||||
subManager.subscribe('board', this.selectedBoardId.get());
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('boardsAndLists');
|
||||
|
||||
Template.copyCardPopup.events({
|
||||
'click .js-select-list' (evt) {
|
||||
'click .js-done'() {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const oldId = card._id;
|
||||
card._id = null;
|
||||
card.listId = this._id;
|
||||
const list = Lists.findOne(card.listId);
|
||||
card.boardId = list.boardId;
|
||||
const textarea = $(evt.currentTarget).parents('.content').find('textarea');
|
||||
const lSelect = $('.js-select-lists')[0];
|
||||
card.listId = lSelect.options[lSelect.selectedIndex].value;
|
||||
const slSelect = $('.js-select-swimlanes')[0];
|
||||
card.swimlaneId = slSelect.options[slSelect.selectedIndex].value;
|
||||
const bSelect = $('.js-select-boards')[0];
|
||||
card.boardId = bSelect.options[bSelect.selectedIndex].value;
|
||||
const textarea = $('#copy-card-title');
|
||||
const title = textarea.val().trim();
|
||||
// insert new card to the bottom of new list
|
||||
card.sort = Lists.findOne(this._id).cards().count();
|
||||
card.sort = Lists.findOne(card.listId).cards().count();
|
||||
|
||||
if (title) {
|
||||
card.title = title;
|
||||
@@ -296,6 +310,59 @@ Template.copyCardPopup.events({
|
||||
},
|
||||
});
|
||||
|
||||
Template.copyChecklistToManyCardsPopup.events({
|
||||
'click .js-select-list' (evt) {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const oldId = card._id;
|
||||
card._id = null;
|
||||
card.listId = this._id;
|
||||
const list = Lists.findOne(card.listId);
|
||||
card.boardId = list.boardId;
|
||||
const textarea = $(evt.currentTarget).parents('.content').find('textarea');
|
||||
const titleEntry = textarea.val().trim();
|
||||
// insert new card to the bottom of new list
|
||||
card.sort = Lists.findOne(this._id).cards().count();
|
||||
|
||||
if (titleEntry) {
|
||||
const titleList = JSON.parse(titleEntry);
|
||||
for (let i = 0; i < titleList.length; i++){
|
||||
const obj = titleList[i];
|
||||
card.title = obj.title;
|
||||
card.description = obj.description;
|
||||
card.coverId = '';
|
||||
const _id = Cards.insert(card);
|
||||
// In case the filter is active we need to add the newly inserted card in
|
||||
// the list of exceptions -- cards that are not filtered. Otherwise the
|
||||
// card will disappear instantly.
|
||||
// See https://github.com/wekan/wekan/issues/80
|
||||
Filter.addException(_id);
|
||||
|
||||
// copy checklists
|
||||
let cursor = Checklists.find({cardId: oldId});
|
||||
cursor.forEach(function() {
|
||||
'use strict';
|
||||
const checklist = arguments[0];
|
||||
checklist.cardId = _id;
|
||||
checklist._id = null;
|
||||
Checklists.insert(checklist);
|
||||
});
|
||||
|
||||
// copy card comments
|
||||
cursor = CardComments.find({cardId: oldId});
|
||||
cursor.forEach(function () {
|
||||
'use strict';
|
||||
const comment = arguments[0];
|
||||
comment.cardId = _id;
|
||||
comment._id = null;
|
||||
CardComments.insert(comment);
|
||||
});
|
||||
}
|
||||
Popup.close();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Template.cardMorePopup.events({
|
||||
'click .js-copy-card-link-to-clipboard' () {
|
||||
// Clipboard code from:
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
.card-details
|
||||
padding: 0 20px
|
||||
height: 100%
|
||||
flex-shrink: 0
|
||||
flex-basis: 470px
|
||||
will-change: flex-basis
|
||||
|
||||
@@ -16,6 +16,7 @@ template(name="importTextarea")
|
||||
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
|
||||
| {{jsonText}}
|
||||
if isSandstorm
|
||||
h1.warning DANGER !!! THIS DESTROYS YOUR IMPORTED DATA, CAUSES BOARD NOT FOUND ERROR WHEN YOU OPEN THIS GRAIN AGAIN https://github.com/wekan/wekan/issues/1430
|
||||
p.warning {{_ 'import-sandstorm-warning'}}
|
||||
input.primary.wide(type="submit" value="{{_ 'import'}}")
|
||||
|
||||
|
||||
@@ -19,12 +19,17 @@ BlazeComponent.extendComponent({
|
||||
// comment below provides further details.
|
||||
onRendered() {
|
||||
const boardComponent = this.parentComponent().parentComponent();
|
||||
|
||||
function userIsMember() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
}
|
||||
|
||||
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
|
||||
const $cards = this.$('.js-minicards');
|
||||
$cards.sortable({
|
||||
connectWith: '.js-minicards:not(.js-list-full)',
|
||||
tolerance: 'pointer',
|
||||
appendTo: 'body',
|
||||
appendTo: '.board-canvas',
|
||||
helper(evt, item) {
|
||||
const helper = item.clone();
|
||||
if (MultiSelection.isActive()) {
|
||||
@@ -40,7 +45,6 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
distance: 7,
|
||||
items: itemsSelector,
|
||||
scroll: false,
|
||||
placeholder: 'minicard-wrapper placeholder',
|
||||
start(evt, ui) {
|
||||
ui.placeholder.height(ui.helper.height());
|
||||
@@ -79,10 +83,6 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
});
|
||||
|
||||
function userIsMember() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
}
|
||||
|
||||
// Disable drag-dropping if the current user is not a board member or is comment only
|
||||
this.autorun(() => {
|
||||
$cards.sortable('option', 'disabled', !userIsMember());
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
// transparent, because that won't work during a list drag.
|
||||
background: darken(white, 13%)
|
||||
border-left: 1px solid darken(white, 20%)
|
||||
border-bottom: 1px solid #CCC
|
||||
padding: 0
|
||||
float: left
|
||||
|
||||
@@ -86,7 +87,7 @@
|
||||
color: #ce1414
|
||||
|
||||
.list-body
|
||||
flex: 1
|
||||
flex: 1 1 auto
|
||||
flex-direction: column
|
||||
display: flex
|
||||
overflow-y: auto
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
color: white
|
||||
transition: background-color 0.4s
|
||||
background: #2980B9
|
||||
z-index: 17
|
||||
|
||||
#header-main-bar
|
||||
height: 40px
|
||||
@@ -99,6 +100,7 @@
|
||||
height: 28px
|
||||
font-size: 12px
|
||||
display: flex
|
||||
z-index: 17
|
||||
|
||||
#header-user-bar,
|
||||
#header-new-board-icon,
|
||||
|
||||
@@ -17,10 +17,14 @@ Template.userFormsLayout.onRendered(() => {
|
||||
Template.userFormsLayout.helpers({
|
||||
languages() {
|
||||
return _.map(TAPi18n.getLanguages(), (lang, code) => {
|
||||
return {
|
||||
tag: code,
|
||||
name: lang.name === 'br' ? 'Brezhoneg' : lang.name === 'ig' ? 'Igbo' : lang.name,
|
||||
};
|
||||
const tag = code;
|
||||
let name = lang.name;
|
||||
if (lang.name === 'br') {
|
||||
name = 'Brezhoneg';
|
||||
} else if (lang.name === 'ig') {
|
||||
name = 'Igbo';
|
||||
}
|
||||
return { tag, name };
|
||||
}).sort(function(a, b) {
|
||||
if (a.name === b.name) {
|
||||
return 0;
|
||||
|
||||
@@ -4,6 +4,7 @@ const defaultView = 'home';
|
||||
|
||||
const viewTitles = {
|
||||
filter: 'filter-cards',
|
||||
search: 'search-cards',
|
||||
multiselection: 'multi-selection',
|
||||
archives: 'archives',
|
||||
};
|
||||
@@ -155,7 +156,7 @@ Template.memberPopup.events({
|
||||
}),
|
||||
'click .js-leave-member': Popup.afterConfirm('leaveBoard', () => {
|
||||
const boardId = Session.get('currentBoard');
|
||||
Meteor.call('quitBoard', boardId, (err, ret) => {
|
||||
Meteor.call('quitBoard', boardId, () => {
|
||||
Popup.close();
|
||||
FlowRouter.go('home');
|
||||
});
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
template(name="searchSidebar")
|
||||
form.js-search-term-form
|
||||
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus)
|
||||
.list-body.js-perfect-scrollbar
|
||||
.minicards.clearfix.js-minicards
|
||||
each (results)
|
||||
a.minicard-wrapper.js-minicard(href=absoluteUrl)
|
||||
+minicard(this)
|
||||
@@ -0,0 +1,19 @@
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.term = new ReactiveVar('');
|
||||
},
|
||||
|
||||
results() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
return currentBoard.searchCards(this.term.get());
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
'submit .js-search-term-form'(evt) {
|
||||
evt.preventDefault();
|
||||
this.term.set(evt.target.searchTerm.value);
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('searchSidebar');
|
||||
@@ -0,0 +1,2 @@
|
||||
input
|
||||
max-width: 100%
|
||||
@@ -1,5 +1,5 @@
|
||||
template(name="swimlaneHeader")
|
||||
.swimlane-header-wrap
|
||||
.swimlane-header-wrap.js-swimlane-header
|
||||
+inlinedForm
|
||||
+editSwimlaneTitleForm
|
||||
else
|
||||
@@ -9,7 +9,7 @@ template(name="swimlaneHeader")
|
||||
.swimlane-header-menu
|
||||
unless currentUser.isCommentOnly
|
||||
a.fa.fa-navicon.js-open-swimlane-menu
|
||||
|
||||
|
||||
template(name="editSwimlaneTitleForm")
|
||||
.list-composer
|
||||
input.list-name-input.full-line(type="text" value=title autofocus)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
template(name="swimlane")
|
||||
.swimlane.js-lists
|
||||
.swimlane.js-lists.js-swimlane
|
||||
+swimlaneHeader
|
||||
if isMiniScreen
|
||||
if currentList
|
||||
@@ -18,7 +18,7 @@ template(name="swimlane")
|
||||
+addListAndSwimlaneForm
|
||||
|
||||
template(name="listsGroup")
|
||||
.swimlane.js-lists
|
||||
.swimlane.list-group.js-lists
|
||||
if isMiniScreen
|
||||
if currentList
|
||||
+list(currentList)
|
||||
@@ -36,7 +36,7 @@ template(name="listsGroup")
|
||||
+addListForm
|
||||
|
||||
template(name="addListAndSwimlaneForm")
|
||||
.list.js-list.list-composer.js-list-composer
|
||||
.list.list-composer.js-list-composer
|
||||
.list-header
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
@@ -61,7 +61,7 @@ template(name="addListAndSwimlaneForm")
|
||||
| {{_ 'add-swimlane'}}
|
||||
|
||||
template(name="addListForm")
|
||||
.list.js-list.list-composer.js-list-composer
|
||||
.list.list-composer.js-list-composer
|
||||
.list-header
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
|
||||
@@ -1,4 +1,80 @@
|
||||
const { calculateIndex } = Utils;
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onRendered() {
|
||||
const boardComponent = this.parentComponent();
|
||||
const $listsDom = this.$('.js-lists');
|
||||
|
||||
if (!Session.get('currentCard')) {
|
||||
boardComponent.scrollLeft();
|
||||
}
|
||||
|
||||
// We want to animate the card details window closing. We rely on CSS
|
||||
// transition for the actual animation.
|
||||
$listsDom._uihooks = {
|
||||
removeElement(node) {
|
||||
const removeNode = _.once(() => {
|
||||
node.parentNode.removeChild(node);
|
||||
});
|
||||
if ($(node).hasClass('js-card-details')) {
|
||||
$(node).css({
|
||||
flexBasis: 0,
|
||||
padding: 0,
|
||||
});
|
||||
$listsDom.one(CSSEvents.transitionend, removeNode);
|
||||
} else {
|
||||
removeNode();
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
$listsDom.sortable({
|
||||
tolerance: 'pointer',
|
||||
helper: 'clone',
|
||||
handle: '.js-list-header',
|
||||
items: '.js-list:not(.js-list-composer)',
|
||||
placeholder: 'list placeholder',
|
||||
distance: 7,
|
||||
start(evt, ui) {
|
||||
ui.placeholder.height(ui.helper.height());
|
||||
EscapeActions.executeUpTo('popup-close');
|
||||
boardComponent.setIsDragging(true);
|
||||
},
|
||||
stop(evt, ui) {
|
||||
// To attribute the new index number, we need to get the DOM element
|
||||
// of the previous and the following card -- if any.
|
||||
const prevListDom = ui.item.prev('.js-list').get(0);
|
||||
const nextListDom = ui.item.next('.js-list').get(0);
|
||||
const sortIndex = calculateIndex(prevListDom, nextListDom, 1);
|
||||
|
||||
$listsDom.sortable('cancel');
|
||||
const listDomElement = ui.item.get(0);
|
||||
const list = Blaze.getData(listDomElement);
|
||||
|
||||
Lists.update(list._id, {
|
||||
$set: {
|
||||
sort: sortIndex.base,
|
||||
},
|
||||
});
|
||||
|
||||
boardComponent.setIsDragging(false);
|
||||
},
|
||||
});
|
||||
|
||||
function userIsMember() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
}
|
||||
|
||||
// Disable drag-dropping while in multi-selection mode, or if the current user
|
||||
// is not a board member
|
||||
boardComponent.autorun(() => {
|
||||
const $listDom = $listsDom;
|
||||
if ($listDom.data('sortable')) {
|
||||
$listsDom.sortable('option', 'disabled',
|
||||
MultiSelection.isActive() || !userIsMember());
|
||||
}
|
||||
});
|
||||
},
|
||||
onCreated() {
|
||||
this.draggingActive = new ReactiveVar(false);
|
||||
|
||||
@@ -6,28 +82,10 @@ BlazeComponent.extendComponent({
|
||||
this._lastDragPositionX = 0;
|
||||
},
|
||||
|
||||
openNewListForm() {
|
||||
this.childComponents('addListForm')[0].open();
|
||||
},
|
||||
|
||||
id() {
|
||||
return this._id;
|
||||
},
|
||||
|
||||
// XXX Flow components allow us to avoid creating these two setter methods by
|
||||
// exposing a public API to modify the component state. We need to investigate
|
||||
// best practices here.
|
||||
setIsDragging(bool) {
|
||||
this.draggingActive.set(bool);
|
||||
},
|
||||
|
||||
scrollLeft(position = 0) {
|
||||
const lists = this.$('.js-lists');
|
||||
lists && lists.animate({
|
||||
scrollLeft: position,
|
||||
});
|
||||
},
|
||||
|
||||
currentCardIsInThisList(listId, swimlaneId) {
|
||||
const currentCard = Cards.findOne(Session.get('currentCard'));
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
@@ -78,81 +136,6 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('swimlane');
|
||||
|
||||
Template.swimlane.onRendered(function() {
|
||||
const self = BlazeComponent.getComponentForElement(this.firstNode);
|
||||
|
||||
self.listsDom = this.find('.js-lists');
|
||||
|
||||
if (!Session.get('currentCard')) {
|
||||
self.scrollLeft();
|
||||
}
|
||||
|
||||
// We want to animate the card details window closing. We rely on CSS
|
||||
// transition for the actual animation.
|
||||
self.listsDom._uihooks = {
|
||||
removeElement(node) {
|
||||
const removeNode = _.once(() => {
|
||||
node.parentNode.removeChild(node);
|
||||
});
|
||||
if ($(node).hasClass('js-card-details')) {
|
||||
$(node).css({
|
||||
flexBasis: 0,
|
||||
padding: 0,
|
||||
});
|
||||
$(self.listsDom).one(CSSEvents.transitionend, removeNode);
|
||||
} else {
|
||||
removeNode();
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
$(self.listsDom).sortable({
|
||||
tolerance: 'pointer',
|
||||
helper: 'clone',
|
||||
handle: '.js-list-header',
|
||||
items: '.js-list:not(.js-list-composer)',
|
||||
placeholder: 'list placeholder',
|
||||
distance: 7,
|
||||
start(evt, ui) {
|
||||
ui.placeholder.height(ui.helper.height());
|
||||
Popup.close();
|
||||
},
|
||||
stop() {
|
||||
$(self.listsDom).find('.js-list:not(.js-list-composer)').each(
|
||||
(i, list) => {
|
||||
const data = Blaze.getData(list);
|
||||
Lists.update(data._id, {
|
||||
$set: {
|
||||
sort: i,
|
||||
},
|
||||
});
|
||||
}
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
function userIsMember() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember();
|
||||
}
|
||||
|
||||
// Disable drag-dropping while in multi-selection mode, or if the current user
|
||||
// is not a board member
|
||||
self.autorun(() => {
|
||||
const $listDom = $(self.listsDom);
|
||||
if ($listDom.data('sortable')) {
|
||||
$(self.listsDom).sortable('option', 'disabled',
|
||||
MultiSelection.isActive() || !userIsMember());
|
||||
}
|
||||
});
|
||||
|
||||
// If there is no data in the board (ie, no lists) we autofocus the list
|
||||
// creation form by clicking on the corresponding element.
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
if (userIsMember() && currentBoard.lists().count() === 0) {
|
||||
self.openNewListForm();
|
||||
}
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
// Proxy
|
||||
open() {
|
||||
|
||||
@@ -1,24 +1,54 @@
|
||||
@import 'nib'
|
||||
|
||||
.swimlane-header-wrap
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex: 0 0 50px;
|
||||
.swimlane
|
||||
// Even if this background color is the same as the body we can't leave it
|
||||
// transparent, because that won't work during a swimlane drag.
|
||||
background: darken(white, 13%)
|
||||
display: flex
|
||||
flex-direction: row
|
||||
overflow: 0;
|
||||
max-height: 100%
|
||||
|
||||
.swimlane-header
|
||||
writing-mode: sideways-lr;
|
||||
font-size: 14px;
|
||||
line-height: 50px;
|
||||
margin: 0;
|
||||
font-weight: bold;
|
||||
min-height: 9px;
|
||||
min-width: 30px;
|
||||
overflow: hidden;
|
||||
-o-text-overflow: ellipsis;
|
||||
text-overflow: ellipsis;
|
||||
word-wrap: break-word;
|
||||
text-align: center;
|
||||
&.placeholder
|
||||
background-color: rgba(0, 0, 0, .2)
|
||||
border-color: transparent
|
||||
box-shadow: none
|
||||
height: 100px
|
||||
|
||||
.swimlane-header-menu
|
||||
position: absolute
|
||||
padding: 20px 20px
|
||||
&.ui-sortable-helper
|
||||
box-shadow: -2px 2px 8px rgba(0, 0, 0, .3),
|
||||
0 0 1px rgba(0, 0, 0, .5)
|
||||
transform: rotate(2deg)
|
||||
cursor: grabbing
|
||||
|
||||
.swimlane-header.ui-sortable-handle
|
||||
cursor: grabbing
|
||||
|
||||
.swimlane-header-wrap
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex: 0 0 50px;
|
||||
padding-bottom: 30px;
|
||||
border-bottom: 1px solid #CCC
|
||||
|
||||
.swimlane-header
|
||||
writing-mode: vertical-rl;
|
||||
transform: rotate(180deg);
|
||||
font-size: 14px;
|
||||
line-height: 50px;
|
||||
margin-top: 50px;
|
||||
font-weight: bold;
|
||||
min-height: 9px;
|
||||
min-width: 30px;
|
||||
overflow: hidden;
|
||||
-o-text-overflow: ellipsis;
|
||||
text-overflow: ellipsis;
|
||||
word-wrap: break-word;
|
||||
text-align: center;
|
||||
|
||||
.swimlane-header-menu
|
||||
position: absolute
|
||||
padding: 20px 20px
|
||||
|
||||
.list-group
|
||||
height: 100%
|
||||
@@ -114,10 +114,16 @@ Template.changePasswordPopup.onRendered(function () {
|
||||
Template.changeLanguagePopup.helpers({
|
||||
languages() {
|
||||
return _.map(TAPi18n.getLanguages(), (lang, code) => {
|
||||
return {
|
||||
tag: code,
|
||||
name: lang.name === 'br' ? 'Brezhoneg' : lang.name === 'ig' ? 'Igbo' : lang.name,
|
||||
};
|
||||
// Same code in /client/components/main/layouts.js
|
||||
// TODO : Make code reusable
|
||||
const tag = code;
|
||||
let name = lang.name;
|
||||
if (lang.name === 'br') {
|
||||
name = 'Brezhoneg';
|
||||
} else if (lang.name === 'ig') {
|
||||
name = 'Igbo';
|
||||
}
|
||||
return { tag, name };
|
||||
}).sort(function (a, b) {
|
||||
if (a.name === b.name) {
|
||||
return 0;
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة",
|
||||
"copyCardPopup-title": "نسخ البطاقة",
|
||||
"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": "إنشاء",
|
||||
"createBoardPopup-title": "إنشاء لوحة",
|
||||
"chooseBoardSourcePopup-title": "استيراد لوحة",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "استعادة",
|
||||
"save": "حفظ",
|
||||
"search": "بحث",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "اختيار اللون",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -0,0 +1,439 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"act-activity-notify": "[Wekan] Известия за дейности",
|
||||
"act-addAttachment": "attached __attachment__ to __card__",
|
||||
"act-addChecklist": "added checklist __checklist__ to __card__",
|
||||
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
|
||||
"act-addComment": "Коментира в __card__: __comment__",
|
||||
"act-createBoard": "created __board__",
|
||||
"act-createCard": "added __card__ to __list__",
|
||||
"act-createList": "added __list__ to __board__",
|
||||
"act-addBoardMember": "added __member__ to __board__",
|
||||
"act-archivedBoard": "archived __board__",
|
||||
"act-archivedCard": "archived __card__",
|
||||
"act-archivedList": "archived __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "imported __board__",
|
||||
"act-importCard": "imported __card__",
|
||||
"act-importList": "imported __list__",
|
||||
"act-joinMember": "added __member__ to __card__",
|
||||
"act-moveCard": "moved __card__ from __oldList__ to __list__",
|
||||
"act-removeBoardMember": "removed __member__ from __board__",
|
||||
"act-restoredCard": "restored __card__ to __board__",
|
||||
"act-unjoinMember": "removed __member__ from __card__",
|
||||
"act-withBoardTitle": "[Wekan] __board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Actions",
|
||||
"activities": "Действия",
|
||||
"activity": "Дейности",
|
||||
"activity-added": "добави %s към %s",
|
||||
"activity-archived": "архивира %s",
|
||||
"activity-attached": "прикачи %s към %s",
|
||||
"activity-created": "създаде %s",
|
||||
"activity-excluded": "изключи %s от %s",
|
||||
"activity-imported": "импортира %s в/във %s от %s",
|
||||
"activity-imported-board": "импортира %s от %s",
|
||||
"activity-joined": "joined %s",
|
||||
"activity-moved": "премести %s от %s в/във %s",
|
||||
"activity-on": "на %s",
|
||||
"activity-removed": "премахна %s от %s",
|
||||
"activity-sent": "изпрати %s до %s",
|
||||
"activity-unjoined": "unjoined %s",
|
||||
"activity-checklist-added": "добави списък със задачи към %s",
|
||||
"activity-checklist-item-added": "добави точка към '%s' в/във %s",
|
||||
"add": "Добави",
|
||||
"add-attachment": "Добави прикачен файл",
|
||||
"add-board": "Добави дъска",
|
||||
"add-card": "Добави карта",
|
||||
"add-swimlane": "Добави коридор",
|
||||
"add-checklist": "Добави списък със задачи",
|
||||
"add-checklist-item": "Добави точка към списъка със задачи",
|
||||
"add-cover": "Добави корица",
|
||||
"add-label": "Добави етикет",
|
||||
"add-list": "Добави списък",
|
||||
"add-members": "Добави членове",
|
||||
"added": "Добавено",
|
||||
"addMemberPopup-title": "Членове",
|
||||
"admin": "Администратор",
|
||||
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
|
||||
"admin-announcement": "Съобщение",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "Всички дъски",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
"apply": "Приложи",
|
||||
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
|
||||
"archive": "Архив",
|
||||
"archive-all": "Архивирай всички",
|
||||
"archive-board": "Архивирай дъската",
|
||||
"archive-card": "Архивирай картата",
|
||||
"archive-list": "Архивирай списъка",
|
||||
"archive-swimlane": "Архивирай коридора",
|
||||
"archive-selection": "Archive selection",
|
||||
"archiveBoardPopup-title": "Archive Board?",
|
||||
"archived-items": "Archived Items",
|
||||
"archived-boards": "Archived Boards",
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Archived Boards.",
|
||||
"archives": "Архиви",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "прикачен",
|
||||
"attachment": "Прикаченн файл",
|
||||
"attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
|
||||
"attachmentDeletePopup-title": "Желаете ли да изтриете прикачения файл?",
|
||||
"attachments": "Прикачени файлове",
|
||||
"auto-watch": "Автоматично наблюдаване на дъските, когато са създадени",
|
||||
"avatar-too-big": "Аватарът е прекалено голям (максимум 70KB)",
|
||||
"back": "Назад",
|
||||
"board-change-color": "Промени цвета",
|
||||
"board-nb-stars": "%s звезди",
|
||||
"board-not-found": "Board not found",
|
||||
"board-private-info": "This board will be <strong>private</strong>.",
|
||||
"board-public-info": "This board will be <strong>public</strong>.",
|
||||
"boardChangeColorPopup-title": "Change Board Background",
|
||||
"boardChangeTitlePopup-title": "Rename Board",
|
||||
"boardChangeVisibilityPopup-title": "Change Visibility",
|
||||
"boardChangeWatchPopup-title": "Промени наблюдаването",
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Дъски",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Коридори",
|
||||
"board-view-lists": "Списъци",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
"cancel": "Cancel",
|
||||
"card-archived": "Тази карта е архивирана",
|
||||
"card-comments-title": "Тази карта има %s коментар.",
|
||||
"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 archive a card to remove it from the board and preserve the activity.",
|
||||
"card-due": "Готова за",
|
||||
"card-due-on": "Готова за",
|
||||
"card-spent": "Изработено време",
|
||||
"card-edit-attachments": "Промени прикачените файлове",
|
||||
"card-edit-labels": "Промени етикетите",
|
||||
"card-edit-members": "Промени членовете",
|
||||
"card-labels-title": "Променете етикетите за тази карта",
|
||||
"card-members-title": "Add or remove members of the board from the card.",
|
||||
"card-start": "Начало",
|
||||
"card-start-on": "Starts on",
|
||||
"cardAttachmentsPopup-title": "Attach From",
|
||||
"cardDeletePopup-title": "Желаете да изтриете картата?",
|
||||
"cardDetailsActionsPopup-title": "Опции",
|
||||
"cardLabelsPopup-title": "Етикети",
|
||||
"cardMembersPopup-title": "Членове",
|
||||
"cardMorePopup-title": "Още",
|
||||
"cards": "Карти",
|
||||
"change": "Change",
|
||||
"change-avatar": "Промени аватара",
|
||||
"change-password": "Промени паролата",
|
||||
"change-permissions": "Change permissions",
|
||||
"change-settings": "Промени настройките",
|
||||
"changeAvatarPopup-title": "Промени аватара",
|
||||
"changeLanguagePopup-title": "Промени езика",
|
||||
"changePasswordPopup-title": "Промени паролата",
|
||||
"changePermissionsPopup-title": "Change Permissions",
|
||||
"changeSettingsPopup-title": "Промяна на настройките",
|
||||
"checklists": "Списъци със задачи",
|
||||
"click-to-star": "Click to star this board.",
|
||||
"click-to-unstar": "Натиснете, за да премахнете тази дъска от любими.",
|
||||
"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 “Archives” button from the home header.",
|
||||
"color-black": "black",
|
||||
"color-blue": "blue",
|
||||
"color-green": "green",
|
||||
"color-lime": "lime",
|
||||
"color-orange": "orange",
|
||||
"color-pink": "pink",
|
||||
"color-purple": "purple",
|
||||
"color-red": "red",
|
||||
"color-sky": "sky",
|
||||
"color-yellow": "yellow",
|
||||
"comment": "Коментирай",
|
||||
"comment-placeholder": "Напиши коментар",
|
||||
"comment-only": "Само коментар",
|
||||
"comment-only-desc": "Може да коментира само в карти.",
|
||||
"computer": "Computer",
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Копирай връзката на картата в клипборда",
|
||||
"copyCardPopup-title": "Копирай картата",
|
||||
"copyChecklistToManyCardsPopup-title": "Копирай шаблона за чеклисти в много карти",
|
||||
"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",
|
||||
"current": "current",
|
||||
"date": "Дата",
|
||||
"decline": "Decline",
|
||||
"default-avatar": "Основен аватар",
|
||||
"delete": "Изтрий",
|
||||
"deleteLabelPopup-title": "Желаете да изтриете етикета?",
|
||||
"description": "Описание",
|
||||
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
|
||||
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
|
||||
"discard": "Discard",
|
||||
"done": "Done",
|
||||
"download": "Сваляне",
|
||||
"edit": "Промени",
|
||||
"edit-avatar": "Промени аватара",
|
||||
"edit-profile": "Промяна на профила",
|
||||
"edit-wip-limit": "Промени WIP лимита",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Промени началната дата",
|
||||
"editCardDueDatePopup-title": "Промени датата за готовност",
|
||||
"editCardSpentTimePopup-title": "Промени изработеното време",
|
||||
"editLabelPopup-title": "Change Label",
|
||||
"editNotificationPopup-title": "Промени известията",
|
||||
"editProfilePopup-title": "Промяна на профила",
|
||||
"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": "Неуспешно изпращане на имейла",
|
||||
"email-fail-text": "Възникна грешка при изпращането на имейла",
|
||||
"email-invalid": "Невалиден имейл",
|
||||
"email-invite": "Покани чрез имейл",
|
||||
"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-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-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-email-taken": "Имейлът е вече зает",
|
||||
"export-board": "Export board",
|
||||
"filter": "Филтър",
|
||||
"filter-cards": "Филтрирай картите",
|
||||
"filter-clear": "Премахване на филтрите",
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-on": "Има приложени филтри",
|
||||
"filter-on-desc": "В момента филтрирате картите в тази дъска. Моля, натиснете тук, за да промените филтъра.",
|
||||
"filter-to-selection": "Филтрирай избраните",
|
||||
"fullname": "Име",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"hide-system-messages": "Скриване на системните съобщения",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from Wekan",
|
||||
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
|
||||
"from-trello": "From Trello",
|
||||
"from-wekan": "From Wekan",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
|
||||
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"import-map-members": "Map members",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
"import-user-select": "Pick the Wekan user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "Select Wekan member",
|
||||
"info": "Версия",
|
||||
"initials": "Инициали",
|
||||
"invalid-date": "Невалидна дата",
|
||||
"invalid-time": "Невалиден час",
|
||||
"invalid-user": "Невалиден потребител",
|
||||
"joined": "joined",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"keyboard-shortcuts": "Keyboard shortcuts",
|
||||
"label-create": "Създай етикет",
|
||||
"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": "Етикети",
|
||||
"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": "Връзка към тази карта",
|
||||
"list-archive-cards": "Архивирай всички карти в този списък",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
|
||||
"list-move-cards": "Премести всички карти в този списък",
|
||||
"list-select-cards": "Избери всички карти в този списък",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"listMorePopup-title": "Още",
|
||||
"link-list": "Връзка към този списък",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "Списъци",
|
||||
"swimlanes": "Коридори",
|
||||
"log-out": "Изход",
|
||||
"log-in": "Вход",
|
||||
"loginPopup-title": "Вход",
|
||||
"memberMenuPopup-title": "Настройки на профила",
|
||||
"members": "Членове",
|
||||
"menu": "Меню",
|
||||
"move-selection": "Move selection",
|
||||
"moveCardPopup-title": "Премести картата",
|
||||
"moveCardToBottom-title": "Премести в края",
|
||||
"moveCardToTop-title": "Премести в началото",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Множествен избор",
|
||||
"multi-selection-on": "Множественият избор е приложен",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
"my-boards": "Моите дъски",
|
||||
"name": "Име",
|
||||
"no-archived-cards": "No archived cards.",
|
||||
"no-archived-lists": "No archived lists.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"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": "Получавате информация за всички карти, в които сте отбелязани или сте създали",
|
||||
"notify-watch": "Получавате информация за всички дъски, списъци и карти, които наблюдавате",
|
||||
"optional": "optional",
|
||||
"or": "or",
|
||||
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
|
||||
"page-not-found": "Page not found.",
|
||||
"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": "Профил",
|
||||
"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": "Желаете да изтриете списъка?",
|
||||
"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": "Възстанови",
|
||||
"save": "Запази",
|
||||
"search": "Търсене",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Избери цвят",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"shortcut-autocomplete-emoji": "Autocomplete emoji",
|
||||
"shortcut-autocomplete-members": "Autocomplete members",
|
||||
"shortcut-clear-filters": "Изчистване на всички филтри",
|
||||
"shortcut-close-dialog": "Close Dialog",
|
||||
"shortcut-filter-my-cards": "Филтрирай моите карти",
|
||||
"shortcut-show-shortcuts": "Bring up this shortcuts list",
|
||||
"shortcut-toggle-filterbar": "Отвори/затвори сайдбара с филтри",
|
||||
"shortcut-toggle-sidebar": "Toggle Board Sidebar",
|
||||
"show-cards-minimum-count": "Покажи бройката на картите, ако списъка съдържа повече от",
|
||||
"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-description": "Любимите дъски се показват в началото на списъка Ви.",
|
||||
"subscribe": "Subscribe",
|
||||
"team": "Team",
|
||||
"this-board": "this board",
|
||||
"this-card": "тази карта",
|
||||
"spent-time-hours": "Изработено време (часа)",
|
||||
"overtime-hours": "Оувъртайм (часа)",
|
||||
"overtime": "Оувъртайм",
|
||||
"has-overtime-cards": "Има карти с оувъртайм",
|
||||
"has-spenttime-cards": "Има карти с изработено време",
|
||||
"time": "Време",
|
||||
"title": "Title",
|
||||
"tracking": "Следене",
|
||||
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
|
||||
"unassign-member": "Unassign member",
|
||||
"unsaved-description": "You have an unsaved description.",
|
||||
"unwatch": "Спри наблюдаването",
|
||||
"upload": "Upload",
|
||||
"upload-avatar": "Качване на аватар",
|
||||
"uploaded-avatar": "Качихте аватар",
|
||||
"username": "Потребителско име",
|
||||
"view-it": "View it",
|
||||
"warn-list-archived": "warning: this card is in an archived list",
|
||||
"watch": "Наблюдавай",
|
||||
"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",
|
||||
"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": "Администраторски панел",
|
||||
"settings": "Настройки",
|
||||
"people": "Хора",
|
||||
"registration": "Регистрация",
|
||||
"disable-self-registration": "Disable Self-Registration",
|
||||
"invite": "Покани",
|
||||
"invite-people": "Покани хора",
|
||||
"to-boards": "To board(s)",
|
||||
"email-addresses": "Имейл адреси",
|
||||
"smtp-host-description": "Адресът на SMTP сървъра, който обслужва Вашите имейли.",
|
||||
"smtp-port-description": "Портът, който Вашият SMTP сървър използва за изходящи имейли.",
|
||||
"smtp-tls-description": "Разреши TLS поддръжка за SMTP сървъра",
|
||||
"smtp-host": "SMTP хост",
|
||||
"smtp-port": "SMTP порт",
|
||||
"smtp-username": "Потребителско име",
|
||||
"smtp-password": "Парола",
|
||||
"smtp-tls": "TLS поддръжка",
|
||||
"send-from": "От",
|
||||
"send-smtp-test": "Изпрати тестов имейл на себе си",
|
||||
"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 Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP тестов имейл, изпратен от Wekan",
|
||||
"email-smtp-test-text": "Успешно изпратихте имейл",
|
||||
"error-invitation-code-not-exist": "Invitation code doesn't exist",
|
||||
"error-notAuthorized": "You are not authorized to view this page.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"no-name": "(Unknown)",
|
||||
"Wekan_version": "Версия на Wekan",
|
||||
"Node_version": "Версия на Node",
|
||||
"OS_Arch": "Архитектура на ОС",
|
||||
"OS_Cpus": "Брой CPU ядра",
|
||||
"OS_Freemem": "Свободна памет",
|
||||
"OS_Loadavg": "ОС средно натоварване",
|
||||
"OS_Platform": "ОС платформа",
|
||||
"OS_Release": "ОС Версия",
|
||||
"OS_Totalmem": "ОС Общо памет",
|
||||
"OS_Type": "Тип ОС",
|
||||
"OS_Uptime": "OS Ъптайм",
|
||||
"hours": "часа",
|
||||
"minutes": "минути",
|
||||
"seconds": "секунди",
|
||||
"yes": "Да",
|
||||
"no": "Не",
|
||||
"accounts": "Профили",
|
||||
"accounts-allowEmailChange": "Разреши промяна на имейла",
|
||||
"createdAt": "Създаден на",
|
||||
"verified": "Потвърден",
|
||||
"active": "Активен"
|
||||
}
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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": "Krouiñ",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
+43
-38
@@ -12,7 +12,7 @@
|
||||
"act-archivedBoard": "__board__ arxivat",
|
||||
"act-archivedCard": "__card__ arxivat/da",
|
||||
"act-archivedList": "__list__ arxivat/da",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-archivedSwimlane": "arxivada __swimlane__",
|
||||
"act-importBoard": "__board__ importat",
|
||||
"act-importCard": "__card__ importat",
|
||||
"act-importList": "__list__ importat",
|
||||
@@ -40,12 +40,12 @@
|
||||
"activity-sent": "ha enviat %s %s",
|
||||
"activity-unjoined": "desassignat %s",
|
||||
"activity-checklist-added": "Checklist afegida a %s",
|
||||
"activity-checklist-item-added": "\nafegit checklist item de'%s' a %s",
|
||||
"activity-checklist-item-added": "afegida entrada de checklist de '%s' a %s",
|
||||
"add": "Afegeix",
|
||||
"add-attachment": "Afegeix adjunt",
|
||||
"add-board": "Afegeix Tauler",
|
||||
"add-card": "Afegeix fitxa",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-swimlane": "Afegix Carril de Natació",
|
||||
"add-checklist": "Afegeix checklist",
|
||||
"add-checklist-item": "Afegeix un ítem",
|
||||
"add-cover": "Afegeix coberta",
|
||||
@@ -56,9 +56,9 @@
|
||||
"addMemberPopup-title": "Membres",
|
||||
"admin": "Administrador",
|
||||
"admin-desc": "Pots veure i editar fitxes, eliminar membres, i canviar la configuració del tauler",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"admin-announcement": "Bàndol",
|
||||
"admin-announcement-active": "Activar bàndol del Sistema",
|
||||
"admin-announcement-title": "Bàndol de l'administració",
|
||||
"all-boards": "Tots els taulers",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
@@ -69,7 +69,7 @@
|
||||
"archive-board": "Arxiva tauler",
|
||||
"archive-card": "Arxiva fitxa",
|
||||
"archive-list": "Arxiva llista",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-swimlane": "Arxiva Carril de Natació",
|
||||
"archive-selection": "Arxiva selecció",
|
||||
"archiveBoardPopup-title": "Arxivar el tauler?",
|
||||
"archived-items": "Elements arxivats",
|
||||
@@ -97,8 +97,8 @@
|
||||
"boardChangeWatchPopup-title": "Canvia seguiment",
|
||||
"boardMenuPopup-title": "Menú del tauler",
|
||||
"boards": "Taulers",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view": "Visió del tauler",
|
||||
"board-view-swimlanes": "Carrils de Natació",
|
||||
"board-view-lists": "Llistes",
|
||||
"bucket-example": "Igual que “Bucket List”, per exemple",
|
||||
"cancel": "Cancel·la",
|
||||
@@ -109,7 +109,7 @@
|
||||
"card-delete-suggest-archive": "Podeu arxivar una fitxa per extreure-la del tauler i preservar l'activitat.",
|
||||
"card-due": "Finalitza",
|
||||
"card-due-on": "Finalitza a",
|
||||
"card-spent": "Spent Time",
|
||||
"card-spent": "Temps Dedicat",
|
||||
"card-edit-attachments": "Edita arxius adjunts",
|
||||
"card-edit-labels": "Edita etiquetes",
|
||||
"card-edit-members": "Edita membres",
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copia l'enllaç de la ftixa al porta-retalls",
|
||||
"copyCardPopup-title": "Copia la fitxa",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Títols de fitxa i Descripcions de destí en aquest format JSON",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Títol de la primera fitxa\", \"description\":\"Descripció de la primera fitxa\"}, {\"title\":\"Títol de la segona fitxa\",\"description\":\"Descripció de la segona fitxa\"},{\"title\":\"Títol de l'última fitxa\",\"description\":\"Descripció de l'última fitxa\"} ]",
|
||||
"create": "Crea",
|
||||
"createBoardPopup-title": "Crea tauler",
|
||||
"chooseBoardSourcePopup-title": "Importa Tauler",
|
||||
@@ -178,11 +181,11 @@
|
||||
"edit": "Edita",
|
||||
"edit-avatar": "Canvia Avatar",
|
||||
"edit-profile": "Edita el teu Perfil",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"edit-wip-limit": "Edita el Límit de Treball en Progrès",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Canvia data d'inici",
|
||||
"editCardDueDatePopup-title": "Canvia data de finalització",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editCardSpentTimePopup-title": "Canvia temps dedicat",
|
||||
"editLabelPopup-title": "Canvia etiqueta",
|
||||
"editNotificationPopup-title": "Edita la notificació",
|
||||
"editProfilePopup-title": "Edita teu Perfil",
|
||||
@@ -190,7 +193,7 @@
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hola __user__,\n\nPer començar a utilitzar el servei, segueix l'enllaç següent.\n\n__url__\n\nGràcies.",
|
||||
"email-fail": "Error enviant el correu",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-fail-text": "Error en intentar enviar e-mail",
|
||||
"email-invalid": "Adreça de correu invàlida",
|
||||
"email-invite": "Convida mitjançant correu electrònic",
|
||||
"email-invite-subject": "__inviter__ t'ha convidat",
|
||||
@@ -200,7 +203,7 @@
|
||||
"email-sent": "Correu enviat",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hola __user__, \n\n per verificar el teu correu, segueix l'enllaç següent.\n\n __url__\n\n Gràcies.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"enable-wip-limit": "Activa e Límit de Treball en Progrès",
|
||||
"error-board-doesNotExist": "Aquest tauler no existeix",
|
||||
"error-board-notAdmin": "Necessites ser administrador d'aquest tauler per dur a lloc aquest acció",
|
||||
"error-board-notAMember": "Necessites ser membre d'aquest tauler per dur a terme aquesta acció",
|
||||
@@ -211,7 +214,7 @@
|
||||
"error-user-notAllowSelf": "No et pots convidar a tu mateix",
|
||||
"error-user-notCreated": "L'usuari no s'ha creat",
|
||||
"error-username-taken": "Aquest usuari ja existeix",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"error-email-taken": "L'adreça de correu electrònic ja és en ús",
|
||||
"export-board": "Exporta tauler",
|
||||
"filter": "Filtre",
|
||||
"filter-cards": "Fitxes de filtre",
|
||||
@@ -246,7 +249,7 @@
|
||||
"initials": "Inicials",
|
||||
"invalid-date": "Data invàlida",
|
||||
"invalid-time": "Temps Invàlid",
|
||||
"invalid-user": "Invalid user",
|
||||
"invalid-user": "Usuari invàlid",
|
||||
"joined": "s'ha unit",
|
||||
"just-invited": "Has estat convidat a aquest tauler",
|
||||
"keyboard-shortcuts": "Dreceres de teclat",
|
||||
@@ -257,22 +260,22 @@
|
||||
"language": "Idioma",
|
||||
"last-admin-desc": "No podeu canviar rols perquè ha d'haver-hi almenys un administrador.",
|
||||
"leave-board": "Abandona tauler",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"leave-board-pop": "De debò voleu abandonar __boardTitle__? Se us eliminarà de totes les fitxes d'aquest tauler.",
|
||||
"leaveBoardPopup-title": "Abandonar Tauler?",
|
||||
"link-card": "Enllaç a aquesta fitxa",
|
||||
"list-archive-cards": "Arxiva totes les fitxes d'aquesta llista",
|
||||
"list-archive-cards-pop": "Això eliminarà totes les fitxes d'aquesta llista del tauler. Per veure les fitxes arxivades i recuperar-les en el tauler, feu clic a \" Menú \"/ \" Articles Arxivat \".",
|
||||
"list-move-cards": "Mou totes les fitxes d'aquesta llista",
|
||||
"list-select-cards": "Selecciona totes les fitxes d'aquesta llista",
|
||||
"listActionPopup-title": "Accions de la llista",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneActionPopup-title": "Accions de Carril de Natació",
|
||||
"listImportCardPopup-title": "importa una fitxa de Trello",
|
||||
"listMorePopup-title": "Més",
|
||||
"link-list": "Enllaça a aquesta llista",
|
||||
"list-delete-pop": "Totes les accions seran esborrades de la llista d'activitats i no serà possible recuperar la llista",
|
||||
"list-delete-suggest-archive": "Pots arxivar una llista per eliminar-la del tauler i preservar la seva activitat",
|
||||
"lists": "Llistes",
|
||||
"swimlanes": "Swimlanes",
|
||||
"swimlanes": "Carrils de Natació",
|
||||
"log-out": "Finalitza la sessió",
|
||||
"log-in": "Ingresa",
|
||||
"loginPopup-title": "Inicia sessió",
|
||||
@@ -292,7 +295,7 @@
|
||||
"name": "Nom",
|
||||
"no-archived-cards": "No hi ha fitxes arxivades.",
|
||||
"no-archived-lists": "No hi ha llistes arxivades.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-archived-swimlanes": "Cap Carril de Natació arxivat",
|
||||
"no-results": "Sense resultats",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Podeu veure i editar fitxes. No podeu canviar la configuració.",
|
||||
@@ -328,9 +331,11 @@
|
||||
"restore": "Restaura",
|
||||
"save": "Desa",
|
||||
"search": "Cerca",
|
||||
"search-cards": "Cerca títols de fitxa i descripcions en aquest tauler",
|
||||
"search-example": "Text que cercar?",
|
||||
"select-color": "Selecciona color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"set-wip-limit-value": "Limita el màxim nombre de tasques en aquesta llista",
|
||||
"setWipLimitPopup-title": "Configura el Límit de Treball en Progrès",
|
||||
"shortcut-assign-self": "Assigna't la ftixa actual",
|
||||
"shortcut-autocomplete-emoji": "Autocompleta emoji",
|
||||
"shortcut-autocomplete-members": "Autocompleta membres",
|
||||
@@ -351,11 +356,11 @@
|
||||
"team": "Equip",
|
||||
"this-board": "aquest tauler",
|
||||
"this-card": "aquesta fitxa",
|
||||
"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",
|
||||
"spent-time-hours": "Temps dedicat (hores)",
|
||||
"overtime-hours": "Temps de més (hores)",
|
||||
"overtime": "Temps de més",
|
||||
"has-overtime-cards": "Té fitxes amb temps de més",
|
||||
"has-spenttime-cards": "Té fitxes amb temps dedicat",
|
||||
"time": "Hora",
|
||||
"title": "Títol",
|
||||
"tracking": "En seguiment",
|
||||
@@ -373,13 +378,13 @@
|
||||
"watching": "En observació",
|
||||
"watching-info": "Seràs notificat de cada canvi en aquest tauler",
|
||||
"welcome-board": "Tauler de benvinguda",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-swimlane": "Objectiu 1",
|
||||
"welcome-list1": "Bàsics",
|
||||
"welcome-list2": "Avançades",
|
||||
"what-to-do": "Què vols fer?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"wipLimitErrorPopup-title": "Límit de Treball en Progrès invàlid",
|
||||
"wipLimitErrorPopup-dialog-pt1": "El nombre de tasques en esta llista és superior al límit de Treball en Progrès que heu definit.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Si us plau mogui algunes taques fora d'aquesta llista, o configuri un límit de Treball en Progrès superior.",
|
||||
"admin-panel": "Tauler d'administració",
|
||||
"settings": "Configuració",
|
||||
"people": "Persones",
|
||||
@@ -398,17 +403,17 @@
|
||||
"smtp-password": "Contrasenya",
|
||||
"smtp-tls": "Suport TLS",
|
||||
"send-from": "De",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"send-smtp-test": "Envia't un correu electrònic de prova",
|
||||
"invitation-code": "Codi d'invitació",
|
||||
"email-invite-register-subject": "__inviter__ t'ha convidat",
|
||||
"email-invite-register-text": " __user__,\n\n __inviter__ us ha convidat a col·laborar a Wekan.\n\n Clicau l'enllaç següent per acceptar l'invitació:\n __url__\n\n El vostre codi d'invitació és: __icode__\n\n Gràcies",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"email-smtp-test-subject": "Correu de Prova SMTP de Wekan",
|
||||
"email-smtp-test-text": "Has enviat un missatge satisfactòriament",
|
||||
"error-invitation-code-not-exist": "El codi d'invitació no existeix",
|
||||
"error-notAuthorized": "No estau autoritzats per veure aquesta pàgina",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"outgoing-webhooks": "Webhooks sortints",
|
||||
"outgoingWebhooksPopup-title": "Webhooks sortints",
|
||||
"new-outgoing-webhook": "Nou Webook sortint",
|
||||
"no-name": "Importa tauler des de Wekan",
|
||||
"Wekan_version": "Versió Wekan",
|
||||
"Node_version": "Versió Node",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Kopírovat adresu karty do mezipaměti",
|
||||
"copyCardPopup-title": "Kopírovat kartu",
|
||||
"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": "Vytvořit",
|
||||
"createBoardPopup-title": "Vytvořit tablo",
|
||||
"chooseBoardSourcePopup-title": "Importovat tablo",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Obnovit",
|
||||
"save": "Uložit",
|
||||
"search": "Hledat",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
+8
-3
@@ -55,7 +55,7 @@
|
||||
"added": "Hinzugefügt",
|
||||
"addMemberPopup-title": "Mitglieder",
|
||||
"admin": "Admin",
|
||||
"admin-desc": "Kann Karten anschauen und bearbeiten, Mitglieder entfernen und Boardeinstellungen ändern.",
|
||||
"admin-desc": "Kann Karten anzeigen und bearbeiten, Mitglieder entfernen und Boardeinstellungen ändern.",
|
||||
"admin-announcement": "Ankündigung",
|
||||
"admin-announcement-active": "Aktive, systemweite Ankündigungen",
|
||||
"admin-announcement-title": "Ankündigung des Administrators",
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Sind Sie sicher, dass Sie die Checkliste löschen möchten?",
|
||||
"copy-card-link-to-clipboard": "Kopiere Link zur Karte in die Zwischenablage",
|
||||
"copyCardPopup-title": "Karte kopieren",
|
||||
"copyChecklistToManyCardsPopup-title": "Checklistenvorlage in mehrere Karten kopieren",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
|
||||
"create": "Erstellen",
|
||||
"createBoardPopup-title": "Board erstellen",
|
||||
"chooseBoardSourcePopup-title": "Board importieren",
|
||||
@@ -295,7 +298,7 @@
|
||||
"no-archived-swimlanes": "Keine archivierten Swimlanes",
|
||||
"no-results": "Keine Ergebnisse",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Kann Karten anschauen und bearbeiten, aber keine Einstellungen ändern.",
|
||||
"normal-desc": "Kann Karten anzeigen und bearbeiten, aber keine Einstellungen ändern.",
|
||||
"not-accepted-yet": "Die Einladung wurde noch nicht angenommen",
|
||||
"notify-participate": "Benachrichtigungen zu allen Karten erhalten, an denen Sie teilnehmen",
|
||||
"notify-watch": "Benachrichtigungen über alle Boards, Listen oder Karten erhalten, die Sie beobachten",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Wiederherstellen",
|
||||
"save": "Speichern",
|
||||
"search": "Suchen",
|
||||
"search-cards": "Suche nach Kartentiteln und Beschreibungen auf diesem Board",
|
||||
"search-example": "Suchbegriff",
|
||||
"select-color": "Farbe auswählen",
|
||||
"set-wip-limit-value": "Setzen Sie ein Limit für die maximale Anzahl von Aufgaben in dieser Liste",
|
||||
"setWipLimitPopup-title": "WIP-Limit setzen",
|
||||
@@ -427,7 +432,7 @@
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
"accounts": "Konten",
|
||||
"accounts-allowEmailChange": "E-Mail ändern zulassen",
|
||||
"accounts-allowEmailChange": "Ändern der E-Mailadresse zulassen",
|
||||
"createdAt": "Erstellt am",
|
||||
"verified": "Geprüft",
|
||||
"active": "Aktiv"
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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": "Δημιουργία",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Αποθήκευση",
|
||||
"search": "Αναζήτηση",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Επιλέξτε Χρώμα",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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": "Krei",
|
||||
"createBoardPopup-title": "Krei tavolon",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Forigi",
|
||||
"save": "Savi",
|
||||
"search": "Serĉi",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "¿Estás segur@ que querés borrar la lista de ítems?",
|
||||
"copy-card-link-to-clipboard": "Copiar enlace a tarjeta en el portapapeles",
|
||||
"copyCardPopup-title": "Copiar Tarjeta",
|
||||
"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": "Crear",
|
||||
"createBoardPopup-title": "Crear Tablero",
|
||||
"chooseBoardSourcePopup-title": "Importar tablero",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restaurar",
|
||||
"save": "Grabar",
|
||||
"search": "Buscar",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Seleccionar Color",
|
||||
"set-wip-limit-value": "Fijar un límite para el número máximo de tareas en esta lista",
|
||||
"setWipLimitPopup-title": "Establecer Límite TEP",
|
||||
|
||||
+15
-10
@@ -2,8 +2,8 @@
|
||||
"accept": "Aceptar",
|
||||
"act-activity-notify": "[Wekan] Notificación de actividad",
|
||||
"act-addAttachment": "ha adjuntado __attachment__ a __card__",
|
||||
"act-addChecklist": "ha añadido la lista de tareas __checklist__ a __card__",
|
||||
"act-addChecklistItem": "ha añadido __checklistItem__ a la lista de tareas __checklist__ en __card__",
|
||||
"act-addChecklist": "ha añadido la lista de verificación __checklist__ a __card__",
|
||||
"act-addChecklistItem": "ha añadido __checklistItem__ a la lista de verificación __checklist__ en __card__",
|
||||
"act-addComment": "ha comentado en __card__: __comment__",
|
||||
"act-createBoard": "ha creado __board__",
|
||||
"act-createCard": "ha añadido __card__ a __list__",
|
||||
@@ -39,15 +39,15 @@
|
||||
"activity-removed": "ha eliminado %s de %s",
|
||||
"activity-sent": "ha enviado %s a %s",
|
||||
"activity-unjoined": "se ha desvinculado de %s",
|
||||
"activity-checklist-added": "ha añadido una lista de tareas a %s",
|
||||
"activity-checklist-item-added": "ha añadido el elemento de la lista de tareas a '%s' en %s",
|
||||
"activity-checklist-added": "ha añadido una lista de verificación a %s",
|
||||
"activity-checklist-item-added": "ha añadido el elemento de la lista de verificación a '%s' en %s",
|
||||
"add": "Añadir",
|
||||
"add-attachment": "Añadir adjunto",
|
||||
"add-board": "Añadir tablero",
|
||||
"add-card": "Añadir una tarjeta",
|
||||
"add-swimlane": "Añadir un carril de flujo",
|
||||
"add-checklist": "Añadir una lista de tareas",
|
||||
"add-checklist-item": "Añadir un elemento a la lista de tareas",
|
||||
"add-checklist": "Añadir una lista de verificación",
|
||||
"add-checklist-item": "Añadir un elemento a la lista de verificación",
|
||||
"add-cover": "Añadir portada",
|
||||
"add-label": "Añadir una etiqueta",
|
||||
"add-list": "Añadir una lista",
|
||||
@@ -98,7 +98,7 @@
|
||||
"boardMenuPopup-title": "Menú del tablero",
|
||||
"boards": "Tableros",
|
||||
"board-view": "Vista de tablero",
|
||||
"board-view-swimlanes": "Carril de flujo",
|
||||
"board-view-swimlanes": "Carriles de flujo",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "Como “Cosas por hacer” por ejemplo",
|
||||
"cancel": "Cancelar",
|
||||
@@ -134,7 +134,7 @@
|
||||
"changePasswordPopup-title": "Cambiar la contraseña",
|
||||
"changePermissionsPopup-title": "Cambiar los permisos",
|
||||
"changeSettingsPopup-title": "Cambiar las preferencias",
|
||||
"checklists": "Lista de tareas",
|
||||
"checklists": "Lista de verificación",
|
||||
"click-to-star": "Haz clic para destacar este tablero.",
|
||||
"click-to-unstar": "Haz clic para dejar de destacar este tablero.",
|
||||
"clipboard": "el portapapeles o con arrastrar y soltar",
|
||||
@@ -156,9 +156,12 @@
|
||||
"comment-only": "Sólo comentarios",
|
||||
"comment-only-desc": "Solo se puede comentar en las tarjetas.",
|
||||
"computer": "el ordenador",
|
||||
"confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de tareas",
|
||||
"confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de verificación?",
|
||||
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
|
||||
"copyCardPopup-title": "Copiar la tarjeta",
|
||||
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas.",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear tablero",
|
||||
"chooseBoardSourcePopup-title": "Importar un tablero",
|
||||
@@ -272,7 +275,7 @@
|
||||
"list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
|
||||
"list-delete-suggest-archive": "Puede archivar una lista para quitarla del tablero y preservar así sus actividades.",
|
||||
"lists": "Listas",
|
||||
"swimlanes": "Carril de flujo",
|
||||
"swimlanes": "Carriles de flujo",
|
||||
"log-out": "Finalizar la sesión",
|
||||
"log-in": "Iniciar sesión",
|
||||
"loginPopup-title": "Iniciar sesión",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restaurar",
|
||||
"save": "Guardar",
|
||||
"search": "Buscar",
|
||||
"search-cards": "Buscar entre los títulos y las descripciones de las tarjetas en este tablero.",
|
||||
"search-example": "¿Texto a buscar?",
|
||||
"select-color": "Selecciona un color",
|
||||
"set-wip-limit-value": "Fija un límite para el número máximo de tareas en esta lista.",
|
||||
"setWipLimitPopup-title": "Fijar el límite del TEP",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Ziur zaude kontrol-zerrenda ezabatu nahi duzula",
|
||||
"copy-card-link-to-clipboard": "Kopiatu txartela arbelera",
|
||||
"copyCardPopup-title": "Kopiatu txartela",
|
||||
"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": "Sortu",
|
||||
"createBoardPopup-title": "Sortu arbela",
|
||||
"chooseBoardSourcePopup-title": "Inportatu arbela",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Berrezarri",
|
||||
"save": "Gorde",
|
||||
"search": "Bilatu",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Aukeratu kolorea",
|
||||
"set-wip-limit-value": "Zerrenda honetako atazen muga maximoa ezarri",
|
||||
"setWipLimitPopup-title": "WIP muga ezarri",
|
||||
|
||||
+104
-99
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"accept": "تایید",
|
||||
"act-activity-notify": "[wekan]اطلاع فعالیت",
|
||||
"accept": "پذیرش",
|
||||
"act-activity-notify": "[wekan] اطلاع فعالیت",
|
||||
"act-addAttachment": "پیوست __attachment__ به __card__",
|
||||
"act-addChecklist": "added checklist __checklist__ to __card__",
|
||||
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
|
||||
"act-addComment": "یادداشت بر __card__: __comment__",
|
||||
"act-createBoard": " __board__ ایجادشد",
|
||||
"act-createCard": " __card__ به __list__ اضافه شد",
|
||||
"act-addChecklist": "سیاهه __checklist__ به __card__ افزوده شد",
|
||||
"act-addChecklistItem": "__checklistItem__ به سیاهه __checklist__ در __card__ افزوده شد",
|
||||
"act-addComment": "درج نظر برای __card__: __comment__",
|
||||
"act-createBoard": "__board__ ایجاد شد",
|
||||
"act-createCard": "__card__ به __list__ اضافه شد",
|
||||
"act-createList": "__list__ به __board__ اضافه شد",
|
||||
"act-addBoardMember": "__member__ به __board__ اضافه شد",
|
||||
"act-archivedBoard": "__board__ بایگانی شد",
|
||||
@@ -56,31 +56,31 @@
|
||||
"addMemberPopup-title": "اعضا",
|
||||
"admin": "مدیر",
|
||||
"admin-desc": "امکان دیدن و ویرایش کارتها،پاک کردن کاربران و تغییر تنظیمات برای تخته",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "تمام بردها",
|
||||
"admin-announcement": "اعلان",
|
||||
"admin-announcement-active": "اعلان سراسری فعال",
|
||||
"admin-announcement-title": "اعلان از سوی مدیر",
|
||||
"all-boards": "تمام تختهها",
|
||||
"and-n-other-card": "و __count__ کارت دیگر",
|
||||
"and-n-other-card_plural": "و __count__ کارت دیگر",
|
||||
"apply": "اجرا",
|
||||
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
|
||||
"apply": "اعمال",
|
||||
"app-is-offline": "Wekan در حال بارگذاری است. لطفا صبر کنید. نوسازی صفحه، منجر به از دست رفتن دادهها میشود. اگر Wekan بارگذاری نشد، لطفا بررسی کنید که سرور Wekan متوقف نشده باشد.",
|
||||
"archive": "بایگانی",
|
||||
"archive-all": "تمامی بایگانی ها",
|
||||
"archive-board": "بایگانی برد",
|
||||
"archive-all": "بایگانی کردن همه",
|
||||
"archive-board": "بایگانی تخته",
|
||||
"archive-card": "بایگانی کارت",
|
||||
"archive-list": "آرشیو لیست",
|
||||
"archive-list": "فهرست بایگانی",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "بایگانی موارد انتخاب شده ها",
|
||||
"archiveBoardPopup-title": "آیا می خواهید بایگانی شود؟",
|
||||
"archived-items": "آیتم های بایگانی شده",
|
||||
"archived-boards": "Archived Boards",
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Archived Boards.",
|
||||
"archives": "بایگانی ها",
|
||||
"archive-selection": "بایگانی موارد انتخاب شده",
|
||||
"archiveBoardPopup-title": "بایگانی تخته؟",
|
||||
"archived-items": "موارد بایگانی شده",
|
||||
"archived-boards": "تختههای بایگانی شده",
|
||||
"restore-board": "بازیابی تخته",
|
||||
"no-archived-boards": "تخته بایگانی شده وجود ندارد.",
|
||||
"archives": "بایگانیها",
|
||||
"assign-member": "تعیین عضو",
|
||||
"attached": "ضمیمه",
|
||||
"attachment": "ضمائم",
|
||||
"attachment-delete-pop": "حذف پیوست دایمی خواهد بود، بدون بازگشت",
|
||||
"attached": "ضمیمه شده",
|
||||
"attachment": "ضمیمه",
|
||||
"attachment-delete-pop": "حذف پیوست دایمی و بی بازگشت خواهد بود.",
|
||||
"attachmentDeletePopup-title": "آیا می خواهید ضمیمه را حذف کنید؟",
|
||||
"attachments": "ضمائم",
|
||||
"auto-watch": "اضافه شدن خودکار دیده بانی تخته زمانی که ایجاد می شوند",
|
||||
@@ -88,53 +88,53 @@
|
||||
"back": "بازگشت",
|
||||
"board-change-color": "تغییر رنگ",
|
||||
"board-nb-stars": "%s ستاره",
|
||||
"board-not-found": "برد مورد نظر پیدا نشد",
|
||||
"board-private-info": "این برد <strong>خصوصی</strong> خواهد بود.",
|
||||
"board-public-info": "این برد <strong>عمومی</strong> خواهد بود.",
|
||||
"boardChangeColorPopup-title": "تغییر پس زمینه برد",
|
||||
"boardChangeTitlePopup-title": "تغییر نام برد",
|
||||
"boardChangeVisibilityPopup-title": "تغغیر وضعیت نمایش",
|
||||
"board-not-found": "تخته مورد نظر پیدا نشد",
|
||||
"board-private-info": "این تخته <strong>خصوصی</strong> خواهد بود.",
|
||||
"board-public-info": "این تخته <strong>عمومی</strong> خواهد بود.",
|
||||
"boardChangeColorPopup-title": "تغییر پس زمینه تخته",
|
||||
"boardChangeTitlePopup-title": "تغییر نام تخته",
|
||||
"boardChangeVisibilityPopup-title": "تغییر وضعیت نمایش",
|
||||
"boardChangeWatchPopup-title": "تغییر دیده بانی",
|
||||
"boardMenuPopup-title": "منوی تخته",
|
||||
"boards": "تخته ها",
|
||||
"board-view": "Board View",
|
||||
"boards": "تختهها",
|
||||
"board-view": "نمایش تخته",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "لیست ها",
|
||||
"bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\" ",
|
||||
"board-view-lists": "فهرستها",
|
||||
"bucket-example": "برای مثال چیزی شبیه \"لیست سبدها\"",
|
||||
"cancel": "انصراف",
|
||||
"card-archived": "این کارت بایگانی شده است.",
|
||||
"card-comments-title": "این کارت دارای %s نظر می باشد.",
|
||||
"card-delete-notice": "پاک کردن بطور کامل. شما تمامی اقدامات مربوطه را از دست خواهید داد.",
|
||||
"card-delete-pop": "همه اقدامات ازاین پردازه (خوراک) حذف خواهد شد و امکان بازگشا کردن کارت وجود نخواهد داشت. هیچ امکان بازگشتی!",
|
||||
"card-archived": "این کارت بایگانی شد.",
|
||||
"card-comments-title": "این کارت دارای %s نظر است.",
|
||||
"card-delete-notice": "حذف دائمی. تمامی موارد مرتبط با این کارت از بین خواهند رفت.",
|
||||
"card-delete-pop": "همه اقدامات از این پردازه (خوراک) حذف خواهد شد و امکان بازگرداندن کارت وجود نخواهد داشت.",
|
||||
"card-delete-suggest-archive": "شما می توانید یک کارت را با حفظ فعالیت های آن بایگانی کنید.",
|
||||
"card-due": "ناشی از",
|
||||
"card-due-on": "مقتضی بر",
|
||||
"card-spent": "Spent Time",
|
||||
"card-spent": "زمان صرف شده",
|
||||
"card-edit-attachments": "ویرایش ضمائم",
|
||||
"card-edit-labels": "ویرایش برچسب",
|
||||
"card-edit-members": "ویرایش اعضا",
|
||||
"card-labels-title": "تغییر برچسب کارت",
|
||||
"card-members-title": "افزودن یا حذف اعضا از کارت.",
|
||||
"card-start": "شروع",
|
||||
"card-start-on": "آغاز بر",
|
||||
"card-start-on": "شروع از",
|
||||
"cardAttachmentsPopup-title": "ضمیمه از",
|
||||
"cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
|
||||
"cardDetailsActionsPopup-title": "اعمال کارت",
|
||||
"cardLabelsPopup-title": "برچسب ها",
|
||||
"cardMembersPopup-title": "اعضا",
|
||||
"cardMorePopup-title": "بیشتر",
|
||||
"cards": "کارت ها",
|
||||
"cards": "کارتها",
|
||||
"change": "تغییر",
|
||||
"change-avatar": "تغییر تصویر",
|
||||
"change-password": "تغییر کلمه عبور",
|
||||
"change-permissions": "تغییر دسترسی ها",
|
||||
"change-permissions": "تغییر دسترسیها",
|
||||
"change-settings": "تغییر تنظیمات",
|
||||
"changeAvatarPopup-title": "تغییر تصویر",
|
||||
"changeLanguagePopup-title": "تغییر زبان",
|
||||
"changePasswordPopup-title": "تغییر کلمه عبور",
|
||||
"changePermissionsPopup-title": "تغییر دسترسی ها",
|
||||
"changePermissionsPopup-title": "تغییر دسترسیها",
|
||||
"changeSettingsPopup-title": "تغییر تنظیمات",
|
||||
"checklists": "سیاهه ها",
|
||||
"checklists": "سیاههها",
|
||||
"click-to-star": "با کلیک کردن ستاره بدهید",
|
||||
"click-to-unstar": "با کلیک کردن ستاره را کم کنید",
|
||||
"clipboard": "ذخیره در حافظه ویا بردار-رهاکن",
|
||||
@@ -152,16 +152,19 @@
|
||||
"color-sky": "آبی آسمانی",
|
||||
"color-yellow": "زرد",
|
||||
"comment": "نظر",
|
||||
"comment-placeholder": "Write Comment",
|
||||
"comment-only": "صرفا یادداشت",
|
||||
"comment-only-desc": "صرفا یادداشت برروی کارت ها",
|
||||
"comment-placeholder": "درج نظر",
|
||||
"comment-only": "فقط نظر",
|
||||
"comment-only-desc": "فقط میتواند روی کارتها نظر دهد.",
|
||||
"computer": "رایانه",
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"confirm-checklist-delete-dialog": "مطمئنید که میخواهید سیاهه را حذف کنید؟",
|
||||
"copy-card-link-to-clipboard": "درج پیوند کارت در حافظه",
|
||||
"copyCardPopup-title": "کپی کارت",
|
||||
"copyChecklistToManyCardsPopup-title": "کپی قالب کارت به کارتهای متعدد",
|
||||
"copyChecklistToManyCardsPopup-instructions": "عنوان و توضیحات کارت مقصد در این قالب JSON",
|
||||
"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": "ایجاد",
|
||||
"createBoardPopup-title": "ایجاد تخته",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"chooseBoardSourcePopup-title": "بارگذاری تخته",
|
||||
"createLabelPopup-title": "ایجاد برچسب",
|
||||
"current": "جاری",
|
||||
"date": "تاریخ",
|
||||
@@ -182,17 +185,17 @@
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "تغییر تاریخ آغاز",
|
||||
"editCardDueDatePopup-title": "تغییر تاریخ بدلیل",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editCardSpentTimePopup-title": "تغییر زمان صرف شده",
|
||||
"editLabelPopup-title": "تغیر برچسب",
|
||||
"editNotificationPopup-title": "اصلاح اعلان",
|
||||
"editProfilePopup-title": "ویرایش پروفایل",
|
||||
"email": "پست الکترونیک",
|
||||
"email-enrollAccount-subject": "یک حساب کاربری برای شما در __siteName__ ایجاد شد",
|
||||
"email-enrollAccount-text": "سلام __user__ \nبرای شروع به استفاده از این سرویس برروی آدرس زیر کلیک نمایید،با تشکر \n__url__.",
|
||||
"email-fail": "عدم موفقیت در ارسال نامه الکترونیکی",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "پست الکترونیکی نادرست",
|
||||
"email-invite": "دعوت از طریق نامه الکترونیکی",
|
||||
"email-enrollAccount-text": "سلام __user__ \nبرای شروع به استفاده از این سرویس برروی آدرس زیر کلیک کنید.\n__url__\nبا تشکر.",
|
||||
"email-fail": "عدم موفقیت در فرستادن رایانامه",
|
||||
"email-fail-text": "خطا در تلاش برای فرستادن رایانامه",
|
||||
"email-invalid": "رایانامه نادرست",
|
||||
"email-invite": "دعوت از طریق رایانامه",
|
||||
"email-invite-subject": "__inviter__ برای شما دعوت نامه ارسال کرده است",
|
||||
"email-invite-text": "__User__ عزیز\n __inviter__ شما را به عضویت تخته \"__board__\" برای همکاری دعوت کرده است.\nلطفا لینک زیر را دنبال کنید، باتشکر:\n__url__",
|
||||
"email-resetPassword-subject": "تنظیم مجدد کلمه عبور در __siteName__",
|
||||
@@ -211,10 +214,10 @@
|
||||
"error-user-notAllowSelf": "عدم امکان دعوت خود",
|
||||
"error-user-notCreated": "این کاربر ایجاد نشده است",
|
||||
"error-username-taken": "این نام کاربری استفاده شده است",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"error-email-taken": "رایانامه توسط گیرنده دریافت شده است",
|
||||
"export-board": "انتقال به بیرون تخته",
|
||||
"filter": "صافی ـFilterـ",
|
||||
"filter-cards": "صافی ـFilterـ کارتها",
|
||||
"filter-cards": "صافی ـFilterـ کارتها",
|
||||
"filter-clear": "حذف صافی ـFilterـ",
|
||||
"filter-no-label": "بدون برچسب",
|
||||
"filter-no-member": "بدون عضو",
|
||||
@@ -227,13 +230,13 @@
|
||||
"headerBarCreateBoardPopup-title": "ایجاد تخته",
|
||||
"home": "خانه",
|
||||
"import": "وارد کردن",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "وارد کردن تخته ها از Trello",
|
||||
"import-board-title-wekan": "Import board from Wekan",
|
||||
"import-board": "وارد کردن تخته",
|
||||
"import-board-c": "وارد کردن تخته",
|
||||
"import-board-title-trello": "وارد کردن تخته از Trello",
|
||||
"import-board-title-wekan": "وارد کردن تخته از Wekan",
|
||||
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
|
||||
"from-trello": "From Trello",
|
||||
"from-wekan": "From Wekan",
|
||||
"from-trello": "از Trello",
|
||||
"from-wekan": "از Wekan",
|
||||
"import-board-instruction-trello": "در Trello-ی خود به 'Menu'، 'More'، 'Print'، 'Export to JSON رفته و متن نهایی را دراینجا وارد نمایید.",
|
||||
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-json-placeholder": "اطلاعات Json معتبر خود را اینجا وارد کنید.",
|
||||
@@ -242,17 +245,17 @@
|
||||
"import-show-user-mapping": "بررسی نقشه کاربران",
|
||||
"import-user-select": "کاربری از نرم افزار را که می خواهید بعنوان این عضو جایگزین شود را انتخاب کنید.",
|
||||
"importMapMembersAddPopup-title": "انتخاب کاربر Wekan",
|
||||
"info": "Version",
|
||||
"info": "نسخه",
|
||||
"initials": "تخصیصات اولیه",
|
||||
"invalid-date": "تاریخ نامعتبر",
|
||||
"invalid-time": "Invalid time",
|
||||
"invalid-user": "Invalid user",
|
||||
"invalid-time": "زمان نامعتبر",
|
||||
"invalid-user": "کاربر نامعتیر",
|
||||
"joined": "متصل",
|
||||
"just-invited": "هم اکنون، شما به این تخته دعوت شده اید.",
|
||||
"keyboard-shortcuts": "میانبر کلیدها",
|
||||
"label-create": "ایجاد برچسب",
|
||||
"label-default": "%s برچسب(پیش فرض)",
|
||||
"label-delete-pop": "بدون برگشت. این حذف برچسب را از هر کارت پاک خواهد کردو تاریخچه آن را نیز ازبین می برد.",
|
||||
"label-delete-pop": "این اقدام، برچسب را از همه کارتها پاک خواهد کرد و تاریخچه آن را نیز از بین میبرد.",
|
||||
"labels": "برچسب ها",
|
||||
"language": "زبان",
|
||||
"last-admin-desc": "شما نمی توانید نقش ـroleـ را تغییر دهید چراکه باید حداقل یک مدیری وجود داشته باشد.",
|
||||
@@ -268,7 +271,7 @@
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "وارد کردن کارت Trello",
|
||||
"listMorePopup-title": "بیشتر",
|
||||
"link-list": "Link to this list",
|
||||
"link-list": "پیوند به این فهرست",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "لیست ها",
|
||||
@@ -288,10 +291,10 @@
|
||||
"multi-selection-on": "حالت چند انتخابی روشن است",
|
||||
"muted": "بی صدا",
|
||||
"muted-info": "شما هیچگاه از تغییرات این تخته مطلع نخواهید شد",
|
||||
"my-boards": "تخته های من",
|
||||
"my-boards": "تختههای من",
|
||||
"name": "نام",
|
||||
"no-archived-cards": "کارتی در بایگانی نیست",
|
||||
"no-archived-lists": "لیستی در بایگانی نیست",
|
||||
"no-archived-lists": "فهرستی در بایگانی نیست.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "بدون نتیجه",
|
||||
"normal": "عادی",
|
||||
@@ -301,7 +304,7 @@
|
||||
"notify-watch": "اطلاع رسانی از هرگونه تغییر در تخته، لیست یا کارتهایی که از آنها دیده بانی میکنید",
|
||||
"optional": "انتخابی",
|
||||
"or": "یا",
|
||||
"page-maybe-private": "این صفحه ممکن است خصوصی باشد.شما با<a href='%s'>ورود</a> می توانید آنرا ملاحظه نمایید.",
|
||||
"page-maybe-private": "این صفحه ممکن است خصوصی باشد. شما با<a href='%s'>ورود</a> میتوانید آن را ببینید.",
|
||||
"page-not-found": "صفحه پیدا نشد.",
|
||||
"password": "کلمه عبور",
|
||||
"paste-or-dragdrop": "جهت چسباندن، یا برداشتن-رهاسازی فایل تصویر به آن (تصویر)",
|
||||
@@ -317,8 +320,8 @@
|
||||
"quick-access-description": "جهت افزودن یک تخته به اینجا،آنرا ستاره دار نمایید.",
|
||||
"remove-cover": "حذف کاور",
|
||||
"remove-from-board": "حذف از تخته",
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-label": "حذف برچسب",
|
||||
"listDeletePopup-title": "حذف فهرست؟",
|
||||
"remove-member": "حذف عضو",
|
||||
"remove-member-from-card": "حذف از کارت",
|
||||
"remove-member-pop": "آیا __name__ (__username__) را از __boardTitle__ حذف می کنید? کاربر از تمام کارت ها در این تخته حذف خواهد شد و آنها ازین اقدام مطلع خواهند شد.",
|
||||
@@ -328,8 +331,10 @@
|
||||
"restore": "بازیابی",
|
||||
"save": "ذخیره",
|
||||
"search": "جستجو",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"search-cards": "جستجو در میان عناوین و توضیحات در این تخته",
|
||||
"search-example": "متن مورد جستجو؟",
|
||||
"select-color": "انتخاب رنگ",
|
||||
"set-wip-limit-value": "تعیین بیشینه تعداد وظایف در این فهرست",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"shortcut-assign-self": "اختصاص خود به کارت فعلی",
|
||||
"shortcut-autocomplete-emoji": "تکمیل خودکار شکلکها",
|
||||
@@ -351,7 +356,7 @@
|
||||
"team": "تیم",
|
||||
"this-board": "این تخته",
|
||||
"this-card": "این کارت",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"spent-time-hours": "زمان صرف شده (ساعت)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
@@ -384,11 +389,11 @@
|
||||
"settings": "تنظمات",
|
||||
"people": "افراد",
|
||||
"registration": "ثبت نام",
|
||||
"disable-self-registration": "غیرفعالسازی خودثبت نامی",
|
||||
"disable-self-registration": "غیرفعالسازی خودثبتنامی",
|
||||
"invite": "دعوت",
|
||||
"invite-people": "دعوت از افراد",
|
||||
"to-boards": "به تخته(ها)",
|
||||
"email-addresses": "ادرس پست های الکترونیکی",
|
||||
"email-addresses": "نشانی رایانامه",
|
||||
"smtp-host-description": "آدرس سرور SMTP ای که پست الکترونیکی شما برروی آن است",
|
||||
"smtp-port-description": "شماره درگاه ـPortـ ای که سرور SMTP شما جهت ارسال از آن استفاده می کند",
|
||||
"smtp-tls-description": "پشتیبانی از TLS برای سرور SMTP",
|
||||
@@ -398,20 +403,20 @@
|
||||
"smtp-password": "کلمه عبور",
|
||||
"smtp-tls": "پشتیبانی از SMTP",
|
||||
"send-from": "از",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"send-smtp-test": "فرستادن رایانامه آزمایشی به خود",
|
||||
"invitation-code": "کد دعوت نامه",
|
||||
"email-invite-register-subject": "__inviter__ برای شما دعوت نامه ارسال کرده است",
|
||||
"email-invite-register-text": "__User__ عزیز \nکاربر __inviter__ شما را به عضویت در Wekan برای همکاری دعوت کرده است.\nلطفا لینک زیر را دنبال کنید،\n __url__\nکد دعوت شما __icode__ می باشد.\n باتشکر",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"email-smtp-test-subject": "رایانامه SMTP آزمایشی از Wekan",
|
||||
"email-smtp-test-text": "با موفقیت، یک رایانامه را فرستادید",
|
||||
"error-invitation-code-not-exist": "چنین کد دعوتی یافت نشد",
|
||||
"error-notAuthorized": "You are not authorized to view this page.",
|
||||
"error-notAuthorized": "شما مجاز به دیدن این صفحه نیستید.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"no-name": "(Unknown)",
|
||||
"Wekan_version": "Wekan version",
|
||||
"Node_version": "Node version",
|
||||
"no-name": "(ناشناخته)",
|
||||
"Wekan_version": "نسخه Wekan",
|
||||
"Node_version": "نسخه Node ",
|
||||
"OS_Arch": "OS Arch",
|
||||
"OS_Cpus": "OS CPU Count",
|
||||
"OS_Freemem": "OS Free Memory",
|
||||
@@ -421,14 +426,14 @@
|
||||
"OS_Totalmem": "OS Total Memory",
|
||||
"OS_Type": "OS Type",
|
||||
"OS_Uptime": "OS Uptime",
|
||||
"hours": "hours",
|
||||
"minutes": "minutes",
|
||||
"seconds": "seconds",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"accounts": "Accounts",
|
||||
"accounts-allowEmailChange": "Allow Email Change",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
"hours": "ساعت",
|
||||
"minutes": "دقیقه",
|
||||
"seconds": "ثانیه",
|
||||
"yes": "بله",
|
||||
"no": "خیر",
|
||||
"accounts": "حسابها",
|
||||
"accounts-allowEmailChange": "اجازه تغییر رایانامه",
|
||||
"createdAt": "ساخته شده در",
|
||||
"verified": "معتبر",
|
||||
"active": "فعال"
|
||||
}
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Haluatko varmasti poistaa tarkistuslistan",
|
||||
"copy-card-link-to-clipboard": "Kopioi kortin linkki leikepöydälle",
|
||||
"copyCardPopup-title": "Kopioi kortti",
|
||||
"copyChecklistToManyCardsPopup-title": "Kopioi tarkistuslistan malli monille korteille",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Kohde korttien otsikot ja kuvaukset JSON muodossa",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Ensimmäisen kortin otsikko\", \"description\":\"Ensimmäisen kortin kuvaus\"}, {\"title\":\"Toisen kortin otsikko\",\"description\":\"Toisen kortin kuvaus\"},{\"title\":\"Viimeisen kortin otsikko\",\"description\":\"Viimeisen kortin kuvaus\"} ]",
|
||||
"create": "Luo",
|
||||
"createBoardPopup-title": "Luo taulu",
|
||||
"chooseBoardSourcePopup-title": "Tuo taulu",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Palauta",
|
||||
"save": "Tallenna",
|
||||
"search": "Etsi",
|
||||
"search-cards": "Etsi korttien otsikoista ja kuvauksista tällä taululla",
|
||||
"search-example": "Teksti jota etsitään?",
|
||||
"select-color": "Valitse väri",
|
||||
"set-wip-limit-value": "Aseta tämän listan tehtävien enimmäismäärä",
|
||||
"setWipLimitPopup-title": "Aseta WIP-raja",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Êtes-vous sûr de vouloir supprimer cette checklist ?",
|
||||
"copy-card-link-to-clipboard": "Copier le lien vers la carte dans le presse-papier",
|
||||
"copyCardPopup-title": "Copier la carte",
|
||||
"copyChecklistToManyCardsPopup-title": "Copier le modèle de checklist vers plusieurs cartes",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Titres et descriptions des cartes de destination dans ce format JSON",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titre de la première carte\", \"description\":\"Description de la première carte\"}, {\"title\":\"Titre de la seconde carte\",\"description\":\"Description de la seconde carte\"},{\"title\":\"Titre de la dernière carte\",\"description\":\"Description de la dernière carte\"} ]",
|
||||
"create": "Créer",
|
||||
"createBoardPopup-title": "Créer un tableau",
|
||||
"chooseBoardSourcePopup-title": "Importer un tableau",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restaurer",
|
||||
"save": "Enregistrer",
|
||||
"search": "Chercher",
|
||||
"search-cards": "Rechercher parmi les titres et descriptions des cartes de ce tableau",
|
||||
"search-example": "Texte à rechercher ?",
|
||||
"select-color": "Sélectionner une couleur",
|
||||
"set-wip-limit-value": "Définit une limite maximale au nombre de cartes de cette liste",
|
||||
"setWipLimitPopup-title": "Définir la limite WIP",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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": "Crear",
|
||||
"createBoardPopup-title": "Crear taboleiro",
|
||||
"chooseBoardSourcePopup-title": "Importar taboleiro",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "האם אתה בטוח שברצונך למחוק את רשימת המשימות",
|
||||
"copy-card-link-to-clipboard": "העתקת קישור הכרטיס ללוח הגזירים",
|
||||
"copyCardPopup-title": "העתק כרטיס",
|
||||
"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": "יצירה",
|
||||
"createBoardPopup-title": "יצירת לוח",
|
||||
"chooseBoardSourcePopup-title": "ייבוא לוח",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "שחזור",
|
||||
"save": "שמירה",
|
||||
"search": "חיפוש",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "בחירת צבע",
|
||||
"set-wip-limit-value": "הגדרת מגבלה למספר המרבי של משימות ברשימה זו",
|
||||
"setWipLimitPopup-title": "הגדרת מגבלת „בעבודה”",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Biztosan törölni szeretné az ellenőrzőlistát?",
|
||||
"copy-card-link-to-clipboard": "Kártya hivatkozásának másolása a vágólapra",
|
||||
"copyCardPopup-title": "Kártya másolása",
|
||||
"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": "Létrehozás",
|
||||
"createBoardPopup-title": "Tábla létrehozása",
|
||||
"chooseBoardSourcePopup-title": "Tábla importálása",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Visszaállítás",
|
||||
"save": "Mentés",
|
||||
"search": "Keresés",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Szín kiválasztása",
|
||||
"set-wip-limit-value": "Korlát beállítása a listán lévő feladatok legnagyobb számához",
|
||||
"setWipLimitPopup-title": "WIP korlát beállítása",
|
||||
|
||||
@@ -0,0 +1,439 @@
|
||||
{
|
||||
"accept": "Ընդունել",
|
||||
"act-activity-notify": "[Wekan] Activity Notification",
|
||||
"act-addAttachment": "attached __attachment__ to __card__",
|
||||
"act-addChecklist": "added checklist __checklist__ to __card__",
|
||||
"act-addChecklistItem": "ավելացրել է __checklistItem__ __checklist__ on __card__-ին",
|
||||
"act-addComment": "մեկնաբանել է __card__: __comment__",
|
||||
"act-createBoard": "created __board__",
|
||||
"act-createCard": "added __card__ to __list__",
|
||||
"act-createList": "added __list__ to __board__",
|
||||
"act-addBoardMember": "added __member__ to __board__",
|
||||
"act-archivedBoard": "archived __board__",
|
||||
"act-archivedCard": "archived __card__",
|
||||
"act-archivedList": "archived __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "imported __board__",
|
||||
"act-importCard": "imported __card__",
|
||||
"act-importList": "imported __list__",
|
||||
"act-joinMember": "added __member__ to __card__",
|
||||
"act-moveCard": "moved __card__ from __oldList__ to __list__",
|
||||
"act-removeBoardMember": "removed __member__ from __board__",
|
||||
"act-restoredCard": "restored __card__ to __board__",
|
||||
"act-unjoinMember": "removed __member__ from __card__",
|
||||
"act-withBoardTitle": "[Wekan] __board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Actions",
|
||||
"activities": "Activities",
|
||||
"activity": "Activity",
|
||||
"activity-added": "added %s to %s",
|
||||
"activity-archived": "archived %s",
|
||||
"activity-attached": "attached %s to %s",
|
||||
"activity-created": "created %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-checklist-added": "added checklist to %s",
|
||||
"activity-checklist-item-added": "added checklist item to '%s' in %s",
|
||||
"add": "Add",
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-card": "Add Card",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"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": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
|
||||
"archive": "Archive",
|
||||
"archive-all": "Archive All",
|
||||
"archive-board": "Archive Board",
|
||||
"archive-card": "Archive Card",
|
||||
"archive-list": "Archive List",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Archive selection",
|
||||
"archiveBoardPopup-title": "Archive Board?",
|
||||
"archived-items": "Archived Items",
|
||||
"archived-boards": "Archived Boards",
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Archived Boards.",
|
||||
"archives": "Archives",
|
||||
"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 (70KB 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 <strong>private</strong>.",
|
||||
"board-public-info": "This board will be <strong>public</strong>.",
|
||||
"boardChangeColorPopup-title": "Change Board Background",
|
||||
"boardChangeTitlePopup-title": "Rename Board",
|
||||
"boardChangeVisibilityPopup-title": "Change Visibility",
|
||||
"boardChangeWatchPopup-title": "Change Watch",
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
"cancel": "Cancel",
|
||||
"card-archived": "This card is archived.",
|
||||
"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 archive a card 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-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",
|
||||
"cardDeletePopup-title": "Delete Card?",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
"cardMembersPopup-title": "Members",
|
||||
"cardMorePopup-title": "More",
|
||||
"cards": "Cards",
|
||||
"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",
|
||||
"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 “Archives” button from the home header.",
|
||||
"color-black": "black",
|
||||
"color-blue": "blue",
|
||||
"color-green": "green",
|
||||
"color-lime": "lime",
|
||||
"color-orange": "orange",
|
||||
"color-pink": "pink",
|
||||
"color-purple": "purple",
|
||||
"color-red": "red",
|
||||
"color-sky": "sky",
|
||||
"color-yellow": "yellow",
|
||||
"comment": "Comment",
|
||||
"comment-placeholder": "Write Comment",
|
||||
"comment-only": "Comment only",
|
||||
"comment-only-desc": "Can comment on cards only.",
|
||||
"computer": "Computer",
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
"current": "current",
|
||||
"date": "Date",
|
||||
"decline": "Decline",
|
||||
"default-avatar": "Default avatar",
|
||||
"delete": "Delete",
|
||||
"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",
|
||||
"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-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-email-taken": "Email has already been taken",
|
||||
"export-board": "Export board",
|
||||
"filter": "Filter",
|
||||
"filter-cards": "Filter Cards",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"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",
|
||||
"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",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from Wekan",
|
||||
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
|
||||
"from-trello": "From Trello",
|
||||
"from-wekan": "From Wekan",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
|
||||
"import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"import-map-members": "Map members",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
"import-user-select": "Pick the Wekan user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "Select Wekan member",
|
||||
"info": "Version",
|
||||
"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": "Archive all cards in this list",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
|
||||
"list-move-cards": "Move all cards in this list",
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"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 archive a list 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-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 archived cards.",
|
||||
"no-archived-lists": "No archived lists.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"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 <a href='%s'>logging in</a>.",
|
||||
"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",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"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-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.",
|
||||
"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",
|
||||
"username": "Username",
|
||||
"view-it": "View it",
|
||||
"warn-list-archived": "warning: this card is in an archived list",
|
||||
"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",
|
||||
"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 Wekan 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 From Wekan",
|
||||
"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.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"no-name": "(Unknown)",
|
||||
"Wekan_version": "Wekan version",
|
||||
"Node_version": "Node version",
|
||||
"OS_Arch": "OS Arch",
|
||||
"OS_Cpus": "OS CPU Count",
|
||||
"OS_Freemem": "OS Free Memory",
|
||||
"OS_Loadavg": "OS Load Average",
|
||||
"OS_Platform": "OS Platform",
|
||||
"OS_Release": "OS Release",
|
||||
"OS_Totalmem": "OS Total Memory",
|
||||
"OS_Type": "OS Type",
|
||||
"OS_Uptime": "OS Uptime",
|
||||
"hours": "hours",
|
||||
"minutes": "minutes",
|
||||
"seconds": "seconds",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"accounts": "Accounts",
|
||||
"accounts-allowEmailChange": "Allow Email Change",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
}
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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": "Buat",
|
||||
"createBoardPopup-title": "Buat Panel",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Pulihkan",
|
||||
"save": "Simpan",
|
||||
"search": "Cari",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
+16
-11
@@ -45,7 +45,7 @@
|
||||
"add-attachment": "Aggiungi Allegato",
|
||||
"add-board": "Aggiungi Bacheca",
|
||||
"add-card": "Aggiungi Scheda",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-swimlane": "Aggiungi Corsia",
|
||||
"add-checklist": "Aggiungi Checklist",
|
||||
"add-checklist-item": "Aggiungi un elemento alla checklist",
|
||||
"add-cover": "Aggiungi copertina",
|
||||
@@ -69,7 +69,7 @@
|
||||
"archive-board": "Archivia bacheca",
|
||||
"archive-card": "Archivia scheda",
|
||||
"archive-list": "Archivia Lista",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-swimlane": "Archivia Corsia",
|
||||
"archive-selection": "Archivia selezione",
|
||||
"archiveBoardPopup-title": "Archivia Bacheca?",
|
||||
"archived-items": "Elementi archiviati",
|
||||
@@ -97,8 +97,8 @@
|
||||
"boardChangeWatchPopup-title": "Cambia faccia",
|
||||
"boardMenuPopup-title": "Menu bacheca",
|
||||
"boards": "Bacheche",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view": "Visualizza bacheca",
|
||||
"board-view-swimlanes": "Corsie",
|
||||
"board-view-lists": "Liste",
|
||||
"bucket-example": "Per esempio come \"una lista di cose da fare\"",
|
||||
"cancel": "Cancella",
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Sei sicuro di voler cancellare questa checklist?",
|
||||
"copy-card-link-to-clipboard": "Copia link della scheda sulla clipboard",
|
||||
"copyCardPopup-title": "Copia Scheda",
|
||||
"copyChecklistToManyCardsPopup-title": "Copia template checklist su più schede",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Titolo e la descrizione della scheda di destinazione in questo formato JSON",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titolo prima scheda\", \"description\":\"Descrizione prima scheda\"}, {\"title\":\"Titolo seconda scheda\",\"description\":\"Descrizione seconda scheda\"},{\"title\":\"Titolo ultima scheda\",\"description\":\"Descrizione ultima scheda\"} ]",
|
||||
"create": "Crea",
|
||||
"createBoardPopup-title": "Crea bacheca",
|
||||
"chooseBoardSourcePopup-title": "Importa bacheca",
|
||||
@@ -265,14 +268,14 @@
|
||||
"list-move-cards": "Sposta tutte le schede in questa lista",
|
||||
"list-select-cards": "Selezione tutte le schede in questa lista",
|
||||
"listActionPopup-title": "Azioni disponibili",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneActionPopup-title": "Azioni corsia",
|
||||
"listImportCardPopup-title": "Importa una scheda di Trello",
|
||||
"listMorePopup-title": "Altro",
|
||||
"link-list": "Link a questa lista",
|
||||
"list-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di recuperare la lista. Non potrai tornare indietro.",
|
||||
"list-delete-suggest-archive": "Puoi archiviare una lista per rimuoverla dalla bacheca e preservarne l'attività.",
|
||||
"lists": "Liste",
|
||||
"swimlanes": "Swimlanes",
|
||||
"swimlanes": "Corsie",
|
||||
"log-out": "Log Out",
|
||||
"log-in": "Log In",
|
||||
"loginPopup-title": "Log In",
|
||||
@@ -292,7 +295,7 @@
|
||||
"name": "Nome",
|
||||
"no-archived-cards": "Nessuna scheda archiviata.",
|
||||
"no-archived-lists": "Nessuna lista archiviata.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-archived-swimlanes": "Nessuna scheda archiviata.",
|
||||
"no-results": "Nessun risultato",
|
||||
"normal": "Normale",
|
||||
"normal-desc": "Può visionare e modificare le schede. Non può cambiare le impostazioni.",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Ripristina",
|
||||
"save": "Salva",
|
||||
"search": "Cerca",
|
||||
"search-cards": "Ricerca per titolo e descrizione scheda su questa bacheca",
|
||||
"search-example": "Testo da ricercare?",
|
||||
"select-color": "Seleziona Colore",
|
||||
"set-wip-limit-value": "Seleziona un limite per il massimo numero di attività in questa lista",
|
||||
"setWipLimitPopup-title": "Imposta limite di work in progress",
|
||||
@@ -354,8 +359,8 @@
|
||||
"spent-time-hours": "Tempo trascorso (ore)",
|
||||
"overtime-hours": "Overtime (ore)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"has-overtime-cards": "Ci sono scheda scadute",
|
||||
"has-spenttime-cards": "Ci sono scheda con tempo impiegato",
|
||||
"time": "Ora",
|
||||
"title": "Titolo",
|
||||
"tracking": "Monitoraggio",
|
||||
@@ -373,7 +378,7 @@
|
||||
"watching": "Stai seguendo",
|
||||
"watching-info": "Sarai notificato per tutte le modifiche in questa bacheca",
|
||||
"welcome-board": "Bacheca di benvenuto",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-swimlane": "Pietra miliare 1",
|
||||
"welcome-list1": "Basi",
|
||||
"welcome-list2": "Avanzate",
|
||||
"what-to-do": "Cosa vuoi fare?",
|
||||
@@ -402,7 +407,7 @@
|
||||
"invitation-code": "Codice d'invito",
|
||||
"email-invite-register-subject": "__inviter__ ti ha inviato un invito",
|
||||
"email-invite-register-text": "Gentile __user__,\n\n__inviter__ ti ha invitato su Wekan per collaborare.\n\nPer favore segui il link qui sotto:\n__url__\n\nIl tuo codice d'invito è: __icode__\n\nGrazie.",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-subject": "Test invio email SMTP per Wekan",
|
||||
"email-smtp-test-text": "Hai inviato un'email con successo",
|
||||
"error-invitation-code-not-exist": "Il codice d'invito non esiste",
|
||||
"error-notAuthorized": "Non sei autorizzato ad accedere a questa pagina.",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "カードへのリンクをクリップボードにコピー",
|
||||
"copyCardPopup-title": "カードをコピー",
|
||||
"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": "作成",
|
||||
"createBoardPopup-title": "ボードの作成",
|
||||
"chooseBoardSourcePopup-title": "ボードをインポート",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "復元",
|
||||
"save": "保存",
|
||||
"search": "検索",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "色を選択",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "정말 이 체크리스트를 삭제할까요?",
|
||||
"copy-card-link-to-clipboard": "클립보드에 카드의 링크가 복사되었습니다.",
|
||||
"copyCardPopup-title": "카드 복사",
|
||||
"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": "생성",
|
||||
"createBoardPopup-title": "보드 생성",
|
||||
"chooseBoardSourcePopup-title": "보드 가져오기",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "복구",
|
||||
"save": "저장",
|
||||
"search": "검색",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "색 선택",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
+26
-21
@@ -76,7 +76,7 @@
|
||||
"archived-boards": "Archived Boards",
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Archived Boards.",
|
||||
"archives": "Archives",
|
||||
"archives": "Архив",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
@@ -125,15 +125,15 @@
|
||||
"cardMorePopup-title": "More",
|
||||
"cards": "Cards",
|
||||
"change": "Change",
|
||||
"change-avatar": "Change Avatar",
|
||||
"change-password": "Change Password",
|
||||
"change-avatar": "Аватар өөрчлөх",
|
||||
"change-password": "Нууц үг солих",
|
||||
"change-permissions": "Change permissions",
|
||||
"change-settings": "Change Settings",
|
||||
"changeAvatarPopup-title": "Change Avatar",
|
||||
"changeLanguagePopup-title": "Change Language",
|
||||
"changePasswordPopup-title": "Change Password",
|
||||
"change-settings": "Тохиргоо өөрчлөх",
|
||||
"changeAvatarPopup-title": "Аватар өөрчлөх",
|
||||
"changeLanguagePopup-title": "Хэл солих",
|
||||
"changePasswordPopup-title": "Нууц үг солих",
|
||||
"changePermissionsPopup-title": "Change Permissions",
|
||||
"changeSettingsPopup-title": "Change Settings",
|
||||
"changeSettingsPopup-title": "Тохиргоо өөрчлөх",
|
||||
"checklists": "Checklists",
|
||||
"click-to-star": "Click to star this board.",
|
||||
"click-to-unstar": "Click to unstar this board.",
|
||||
@@ -159,10 +159,13 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"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": "Үүсгэх",
|
||||
"createBoardPopup-title": "Самбар үүсгэх",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"createLabelPopup-title": "Шошго үүсгэх",
|
||||
"current": "current",
|
||||
"date": "Date",
|
||||
"decline": "Decline",
|
||||
@@ -176,16 +179,16 @@
|
||||
"done": "Done",
|
||||
"download": "Download",
|
||||
"edit": "Edit",
|
||||
"edit-avatar": "Change Avatar",
|
||||
"edit-profile": "Edit Profile",
|
||||
"edit-avatar": "Аватар өөрчлөх",
|
||||
"edit-profile": "Бүртгэл засварлах",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Change start date",
|
||||
"editCardDueDatePopup-title": "Change due date",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "Change Label",
|
||||
"editNotificationPopup-title": "Edit Notification",
|
||||
"editProfilePopup-title": "Edit Profile",
|
||||
"editNotificationPopup-title": "Мэдэгдэл тохируулах",
|
||||
"editProfilePopup-title": "Бүртгэл засварлах",
|
||||
"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.",
|
||||
@@ -224,7 +227,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"hide-system-messages": "Hide system messages",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"headerBarCreateBoardPopup-title": "Самбар үүсгэх",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
"import-board": "import board",
|
||||
@@ -250,7 +253,7 @@
|
||||
"joined": "joined",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"keyboard-shortcuts": "Keyboard shortcuts",
|
||||
"label-create": "Create Label",
|
||||
"label-create": "Шошго үүсгэх",
|
||||
"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",
|
||||
@@ -273,10 +276,10 @@
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "Lists",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Log Out",
|
||||
"log-out": "Гарах",
|
||||
"log-in": "Log In",
|
||||
"loginPopup-title": "Log In",
|
||||
"memberMenuPopup-title": "Member Settings",
|
||||
"memberMenuPopup-title": "Гишүүний тохиргоо",
|
||||
"members": "Гишүүд",
|
||||
"menu": "Menu",
|
||||
"move-selection": "Move selection",
|
||||
@@ -288,7 +291,7 @@
|
||||
"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",
|
||||
"my-boards": "Миний самбарууд",
|
||||
"name": "Name",
|
||||
"no-archived-cards": "No archived cards.",
|
||||
"no-archived-lists": "No archived lists.",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -343,7 +348,7 @@
|
||||
"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",
|
||||
"signupPopup-title": "Хэрэглэгч үүсгэх",
|
||||
"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.",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Weet u zeker dat u de checklist wilt verwijderen",
|
||||
"copy-card-link-to-clipboard": "Kopieer kaart link naar klembord",
|
||||
"copyCardPopup-title": "Kopieer kaart",
|
||||
"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": "Aanmaken",
|
||||
"createBoardPopup-title": "Bord aanmaken",
|
||||
"chooseBoardSourcePopup-title": "Importeer bord",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Herstel",
|
||||
"save": "Opslaan",
|
||||
"search": "Zoek",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Selecteer kleur",
|
||||
"set-wip-limit-value": "Zet een limiet voor het maximaal aantal taken in deze lijst",
|
||||
"setWipLimitPopup-title": "Zet een WIP limiet",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Skopiuj kartę",
|
||||
"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": "Utwórz",
|
||||
"createBoardPopup-title": "Utwórz tablicę",
|
||||
"chooseBoardSourcePopup-title": "Import tablicy",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Przywróć",
|
||||
"save": "Zapisz",
|
||||
"search": "Wyszukaj",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Wybierz kolor",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Tem a certeza de que pretende eliminar lista de verificação",
|
||||
"copy-card-link-to-clipboard": "Copiar link do cartão para a área de transferência",
|
||||
"copyCardPopup-title": "Copiar o cartão",
|
||||
"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": "Criar",
|
||||
"createBoardPopup-title": "Criar Quadro",
|
||||
"chooseBoardSourcePopup-title": "Importar quadro",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restaurar",
|
||||
"save": "Salvar",
|
||||
"search": "Buscar",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Selecionar Cor",
|
||||
"set-wip-limit-value": "Defina um limite máximo para o número de tarefas nesta lista",
|
||||
"setWipLimitPopup-title": "Definir Limite WIP",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Salvează",
|
||||
"search": "Caută",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
+15
-10
@@ -12,7 +12,7 @@
|
||||
"act-archivedBoard": "__board__ помещена в архив",
|
||||
"act-archivedCard": "поместил __card__ в архив",
|
||||
"act-archivedList": "поместил __list__ в архив",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-archivedSwimlane": "поместил __swimlane__ в архив",
|
||||
"act-importBoard": "__board__ импортирована",
|
||||
"act-importCard": "__card__ импортирована",
|
||||
"act-importList": "__list__ импортирован",
|
||||
@@ -45,7 +45,7 @@
|
||||
"add-attachment": "Добавить вложение",
|
||||
"add-board": "Добавить доску",
|
||||
"add-card": "Добавить карту",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-swimlane": "Добавить дорожку",
|
||||
"add-checklist": "Добавить контрольный список",
|
||||
"add-checklist-item": "Добавить пункт в контрольный список",
|
||||
"add-cover": "Прикрепить",
|
||||
@@ -69,7 +69,7 @@
|
||||
"archive-board": "Архивировать доску",
|
||||
"archive-card": "Архивировать карточку",
|
||||
"archive-list": "Архивировать список",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-swimlane": "Архивировать дорожку",
|
||||
"archive-selection": "Архивировать выбранное",
|
||||
"archiveBoardPopup-title": "Заархивировать доску?",
|
||||
"archived-items": "Объекты в архиве",
|
||||
@@ -97,8 +97,8 @@
|
||||
"boardChangeWatchPopup-title": "Изменить Отслеживание",
|
||||
"boardMenuPopup-title": "Меню доски",
|
||||
"boards": "Доски",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view": "Вид доски",
|
||||
"board-view-swimlanes": "Дорожки",
|
||||
"board-view-lists": "Списки",
|
||||
"bucket-example": "Например “Список дел”",
|
||||
"cancel": "Отмена",
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Вы уверены, что хотите удалить контрольный список?",
|
||||
"copy-card-link-to-clipboard": "Копировать ссылку на карточку в буфер обмена",
|
||||
"copyCardPopup-title": "Копировать карточку",
|
||||
"copyChecklistToManyCardsPopup-title": "Копировать шаблон контрольного списка в несколько карточек",
|
||||
"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": "Создать",
|
||||
"createBoardPopup-title": "Создать доску",
|
||||
"chooseBoardSourcePopup-title": "Импортировать доску",
|
||||
@@ -265,14 +268,14 @@
|
||||
"list-move-cards": "Переместить все карточки в этом списке",
|
||||
"list-select-cards": "Выбрать все карточки в этом списке",
|
||||
"listActionPopup-title": "Список действий",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneActionPopup-title": "Действия с дорожкой",
|
||||
"listImportCardPopup-title": "Импортировать Trello карточку",
|
||||
"listMorePopup-title": "Поделиться",
|
||||
"link-list": "Ссылка на список",
|
||||
"list-delete-pop": "Все действия будут удалены из ленты активности участников и вы не сможете восстановить список. Данное действие необратимо.",
|
||||
"list-delete-suggest-archive": "Вы можете заархивировать список, чтобы убрать его с доски, сохранив всю историю действий участников.",
|
||||
"lists": "Списки",
|
||||
"swimlanes": "Swimlanes",
|
||||
"swimlanes": "Дорожки",
|
||||
"log-out": "Выйти",
|
||||
"log-in": "Войти",
|
||||
"loginPopup-title": "Войти",
|
||||
@@ -292,7 +295,7 @@
|
||||
"name": "Имя",
|
||||
"no-archived-cards": "Нет карточек в архиве.",
|
||||
"no-archived-lists": "Нет списков в архиве.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-archived-swimlanes": "Нет дорожек в архиве.\n",
|
||||
"no-results": "Ничего не найдено",
|
||||
"normal": "Обычный",
|
||||
"normal-desc": "Может редактировать карточки. Не может управлять настройками.",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Восстановить",
|
||||
"save": "Сохранить",
|
||||
"search": "Поиск",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Выбрать цвет",
|
||||
"set-wip-limit-value": "Устанавливает ограничение на максимальное количество задач в этом списке",
|
||||
"setWipLimitPopup-title": "Задать лимит на кол-во задач",
|
||||
@@ -355,7 +360,7 @@
|
||||
"overtime-hours": "Переработка (в часах)",
|
||||
"overtime": "Переработка",
|
||||
"has-overtime-cards": "Имеются карточки с переработкой",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"has-spenttime-cards": "Имеются карточки с учетом затраченного времени",
|
||||
"time": "Время",
|
||||
"title": "Название",
|
||||
"tracking": "Отслеживание",
|
||||
@@ -373,7 +378,7 @@
|
||||
"watching": "Отслеживается",
|
||||
"watching-info": "Вы будете уведомлены об любых изменениях в этой доске.",
|
||||
"welcome-board": "Приветственная Доска",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-swimlane": "Этап 1",
|
||||
"welcome-list1": "Основы",
|
||||
"welcome-list2": "Расширенно",
|
||||
"what-to-do": "Что вы хотите сделать?",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Oporavi",
|
||||
"save": "Snimi",
|
||||
"search": "Pretraga",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
+6
-1
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Är du säker på att du vill ta bort checklista",
|
||||
"copy-card-link-to-clipboard": "Kopiera kortlänk till urklipp",
|
||||
"copyCardPopup-title": "Kopiera kort",
|
||||
"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": "Skapa",
|
||||
"createBoardPopup-title": "Skapa anslagstavla",
|
||||
"chooseBoardSourcePopup-title": "Importera anslagstavla",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Återställ",
|
||||
"save": "Spara",
|
||||
"search": "Sök",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Välj färg",
|
||||
"set-wip-limit-value": "Ange en gräns för det maximala antalet uppgifter i den här listan",
|
||||
"setWipLimitPopup-title": "Ställ in WIP-gräns",
|
||||
@@ -373,7 +378,7 @@
|
||||
"watching": "Bevakar",
|
||||
"watching-info": "Du kommer att meddelas om alla ändringar på denna anslagstavla",
|
||||
"welcome-board": "Välkomstanslagstavla",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-swimlane": "Milstolpe 1",
|
||||
"welcome-list1": "Grunderna",
|
||||
"welcome-list2": "Avancerad",
|
||||
"what-to-do": "Vad vill du göra?",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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": "สร้าง",
|
||||
"createBoardPopup-title": "สร้างบอร์ด",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "กู้คืน",
|
||||
"save": "บันทึก",
|
||||
"search": "ค้นหา",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
+14
-9
@@ -12,7 +12,7 @@
|
||||
"act-archivedBoard": "__board__ panosunu arşivledi",
|
||||
"act-archivedCard": "__card__ kartını arşivledi",
|
||||
"act-archivedList": "__list__ listesini arşivledi",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-archivedSwimlane": "__swimlane__ arşivlendi",
|
||||
"act-importBoard": "__board__ panosunu içe aktardı",
|
||||
"act-importCard": "__card__ kartını içe aktardı",
|
||||
"act-importList": "__list__ listesini içe aktardı",
|
||||
@@ -45,7 +45,7 @@
|
||||
"add-attachment": "Ek Ekle",
|
||||
"add-board": "Pano Ekle",
|
||||
"add-card": "Kart Ekle",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-swimlane": "Kulvar Ekle",
|
||||
"add-checklist": "Yapılacak Listesi Ekle",
|
||||
"add-checklist-item": "Yapılacak listesine yeni bir öğe ekle",
|
||||
"add-cover": "Kapak resmi ekle",
|
||||
@@ -69,7 +69,7 @@
|
||||
"archive-board": "Panoyu Arşivle",
|
||||
"archive-card": "Kartı Arşivle",
|
||||
"archive-list": "Listeyi Arşivle",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-swimlane": "Kulvarı Arşivle",
|
||||
"archive-selection": "Seçimi arşivle",
|
||||
"archiveBoardPopup-title": "Pano Arşivlensin mi?",
|
||||
"archived-items": "Arşivlenmiş Öğeler",
|
||||
@@ -98,7 +98,7 @@
|
||||
"boardMenuPopup-title": "Pano menüsü",
|
||||
"boards": "Panolar",
|
||||
"board-view": "Pano Görünümü",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-swimlanes": "Kulvarlar",
|
||||
"board-view-lists": "Listeler",
|
||||
"bucket-example": "Örn: \"Marketten Alacaklarım\"",
|
||||
"cancel": "İptal",
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Yapılacak listesini silmek istediğinize emin misiniz",
|
||||
"copy-card-link-to-clipboard": "Kartın linkini kopyala",
|
||||
"copyCardPopup-title": "Kartı Kopyala",
|
||||
"copyChecklistToManyCardsPopup-title": "Yapılacaklar Listesi şemasını birden çok karta kopyala",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Hedef Kart Başlıkları ve Açıklamaları bu JSON formatında",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"İlk kart başlığı\", \"description\":\"İlk kart açıklaması\"}, {\"title\":\"İkinci kart başlığı\",\"description\":\"İkinci kart açıklaması\"},{\"title\":\"Son kart başlığı\",\"description\":\"Son kart açıklaması\"} ]",
|
||||
"create": "Oluştur",
|
||||
"createBoardPopup-title": "Pano Oluşturma",
|
||||
"chooseBoardSourcePopup-title": "Panoyu içe aktar",
|
||||
@@ -265,14 +268,14 @@
|
||||
"list-move-cards": "Listedeki tüm kartları taşı",
|
||||
"list-select-cards": "Listedeki tüm kartları seç",
|
||||
"listActionPopup-title": "Liste İşlemleri",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneActionPopup-title": "Kulvar İşlemleri",
|
||||
"listImportCardPopup-title": "Bir Trello kartını içeri aktar",
|
||||
"listMorePopup-title": "Daha",
|
||||
"link-list": "Listeye doğrudan bağlantı",
|
||||
"list-delete-pop": "Etkinlik akışınızdaki tüm eylemler geri kurtarılamaz şekilde kaldırılacak. Bu işlem geri alınamaz.",
|
||||
"list-delete-suggest-archive": "Bir listeyi etkinliklerini koruyarak panodan kaldırmak için arşivleyebilirsiniz.",
|
||||
"lists": "Listeler",
|
||||
"swimlanes": "Swimlanes",
|
||||
"swimlanes": "Kulvarlar",
|
||||
"log-out": "Oturum Kapat",
|
||||
"log-in": "Oturum Aç",
|
||||
"loginPopup-title": "Oturum Aç",
|
||||
@@ -292,7 +295,7 @@
|
||||
"name": "Adı",
|
||||
"no-archived-cards": "Arşivlenmiş kart bulunamadı.",
|
||||
"no-archived-lists": "Arşivlenmiş liste bulunamadı.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-archived-swimlanes": "Arşivlenmiş kulvar bulunamadı.",
|
||||
"no-results": "Sonuç yok",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Kartları görüntüleyebilir ve düzenleyebilir. Ayarları değiştiremez.",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Geri Getir",
|
||||
"save": "Kaydet",
|
||||
"search": "Arama",
|
||||
"search-cards": "Bu tahta da ki kart başlıkları ve açıklamalarında arama yap",
|
||||
"search-example": "Aranılacak metin?",
|
||||
"select-color": "Renk Seç",
|
||||
"set-wip-limit-value": "Bu listedeki en fazla öğe sayısı için bir sınır belirleyin",
|
||||
"setWipLimitPopup-title": "Devam Eden İş Sınırı Belirle",
|
||||
@@ -355,7 +360,7 @@
|
||||
"overtime-hours": "Aşılan süre (saat)",
|
||||
"overtime": "Aşılan süre",
|
||||
"has-overtime-cards": "Süresi aşılmış kartlar",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"has-spenttime-cards": "Zaman geçirilmiş kartlar",
|
||||
"time": "Zaman",
|
||||
"title": "Başlık",
|
||||
"tracking": "Takip",
|
||||
@@ -373,7 +378,7 @@
|
||||
"watching": "Takip Ediliyor",
|
||||
"watching-info": "Bu pano hakkındaki tüm değişiklikler hakkında bildirim alacaksınız",
|
||||
"welcome-board": "Hoş Geldiniz Panosu",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-swimlane": "Kilometre taşı",
|
||||
"welcome-list1": "Temel",
|
||||
"welcome-list2": "Gelişmiş",
|
||||
"what-to-do": "Ne yapmak istiyorsunuz?",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"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",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "Restore",
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "确认要删除清单吗",
|
||||
"copy-card-link-to-clipboard": "复制卡片链接到剪贴板",
|
||||
"copyCardPopup-title": "复制卡片",
|
||||
"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": "创建",
|
||||
"createBoardPopup-title": "创建看板",
|
||||
"chooseBoardSourcePopup-title": "导入看板",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "还原",
|
||||
"save": "保存",
|
||||
"search": "搜索",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "选择颜色",
|
||||
"set-wip-limit-value": "设置此列表中的最大任务数",
|
||||
"setWipLimitPopup-title": "设置最大任务数",
|
||||
|
||||
@@ -159,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "將卡片連結複製到剪貼板",
|
||||
"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": "建立",
|
||||
"createBoardPopup-title": "建立看板",
|
||||
"chooseBoardSourcePopup-title": "匯入看板",
|
||||
@@ -328,6 +331,8 @@
|
||||
"restore": "還原",
|
||||
"save": "儲存",
|
||||
"search": "搜尋",
|
||||
"search-cards": "Search from card titles and descriptions on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"select-color": "選擇顏色",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# v0.75 2018-02-16 Wekan julkaisu
|
||||
|
||||
Tämä julkaisu lisää seuraavat ominaisuudet:
|
||||
|
||||
- [Tarkistuslista mallit](https://github.com/wekan/wekan/pull/1470);
|
||||
- Lisätty [Suomenkielinen muutosloki](https://github.com/wekan/wekan/tree/devel/meta/t9n-changelog)
|
||||
ja [lisää suomennoksia](https://github.com/wekan/wekan/blob/devel/sandstorm-pkgdef.capnp)
|
||||
Sandstormiin.
|
||||
|
||||
|
||||
Kiitos GitHub käyttäjille erikturk ja xet7 heidän osallistumisistaan.
|
||||
|
||||
# v0.74 2018-02-13 Wekan julkaisu
|
||||
|
||||
Tämä julkaisu korjaa seuraavat bugit:
|
||||
|
||||
- [Poistettu Emoji tuki, jotta MAC osoitteet, kellonajat jne näkyvät oikein](https://github.com/wekan/wekan/commit/056843d66c361594d5d4478cfe86e2e405333b91).
|
||||
HUOM: Voit silti käyttää Unicode Emojeita, tämä vain poistaa rikkinäisen automaattimuunnoksen Emojeiksi.
|
||||
|
||||
Kiitos GitHub käyttäjälle xet7 osallistumisista.
|
||||
@@ -23,6 +23,9 @@ Activities.helpers({
|
||||
list() {
|
||||
return Lists.findOne(this.listId);
|
||||
},
|
||||
swimlane() {
|
||||
return Swimlanes.findOne(this.swimlaneId);
|
||||
},
|
||||
oldList() {
|
||||
return Lists.findOne(this.oldListId);
|
||||
},
|
||||
|
||||
+27
-6
@@ -35,7 +35,7 @@ Boards.attachSchema(new SimpleSchema({
|
||||
type: String,
|
||||
autoValue() { // eslint-disable-line consistent-return
|
||||
if (this.isInsert) {
|
||||
return 'board-view-swimlanes';
|
||||
return 'board-view-lists';
|
||||
}
|
||||
},
|
||||
},
|
||||
@@ -264,6 +264,27 @@ Boards.helpers({
|
||||
Boards.direct.update(this._id, { $push: { labels: { _id, name, color } } });
|
||||
return _id;
|
||||
},
|
||||
|
||||
searchCards(term) {
|
||||
check(term, Match.OneOf(String, null, undefined));
|
||||
|
||||
let query = { boardId: this._id };
|
||||
const projection = { limit: 10, sort: { createdAt: -1 } };
|
||||
|
||||
if (term) {
|
||||
const regex = new RegExp(term, 'i');
|
||||
|
||||
query = {
|
||||
boardId: this._id,
|
||||
$or: [
|
||||
{ title: regex },
|
||||
{ description: regex },
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
return Cards.find(query, projection);
|
||||
},
|
||||
});
|
||||
|
||||
Boards.mutations({
|
||||
@@ -587,7 +608,7 @@ if (Meteor.isServer) {
|
||||
|
||||
//BOARDS REST API
|
||||
if (Meteor.isServer) {
|
||||
JsonRoutes.add('GET', '/api/users/:userId/boards', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/users/:userId/boards', function (req, res) {
|
||||
try {
|
||||
Authentication.checkLoggedIn(req.userId);
|
||||
const paramUserId = req.params.userId;
|
||||
@@ -617,7 +638,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/boards', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
JsonRoutes.sendResult(res, {
|
||||
@@ -638,7 +659,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/boards/:id', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:id', function (req, res) {
|
||||
try {
|
||||
const id = req.params.id;
|
||||
Authentication.checkBoardAccess(req.userId, id);
|
||||
@@ -656,7 +677,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('POST', '/api/boards', function (req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/boards', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const id = Boards.insert({
|
||||
@@ -687,7 +708,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('DELETE', '/api/boards/:id', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/boards/:id', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const id = req.params.id;
|
||||
|
||||
@@ -87,7 +87,7 @@ if (Meteor.isServer) {
|
||||
|
||||
//CARD COMMENT REST API
|
||||
if (Meteor.isServer) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
@@ -111,7 +111,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
@@ -130,7 +130,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/comments', function (req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/comments', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
@@ -160,7 +160,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
|
||||
+6
-5
@@ -433,7 +433,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
//LISTS REST API
|
||||
if (Meteor.isServer) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (req, res) {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramListId = req.params.listId;
|
||||
Authentication.checkBoardAccess(req.userId, paramBoardId);
|
||||
@@ -449,7 +449,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramListId = req.params.listId;
|
||||
const paramCardId = req.params.cardId;
|
||||
@@ -460,7 +460,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
});
|
||||
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function (req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function (req, res) {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramListId = req.params.listId;
|
||||
@@ -472,6 +472,7 @@ if (Meteor.isServer) {
|
||||
listId: paramListId,
|
||||
description: req.body.description,
|
||||
userId: req.body.authorId,
|
||||
swimlaneId: req.body.swimlaneId,
|
||||
sort: 0,
|
||||
members: [req.body.authorId],
|
||||
});
|
||||
@@ -492,7 +493,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('PUT', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) {
|
||||
JsonRoutes.add('PUT', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramCardId = req.params.cardId;
|
||||
@@ -526,7 +527,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
|
||||
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId/cards/:cardId', function (req, res) {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramListId = req.params.listId;
|
||||
|
||||
@@ -258,7 +258,7 @@ if (Meteor.isServer) {
|
||||
|
||||
//CARD COMMENT REST API
|
||||
if (Meteor.isServer) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramCardId = req.params.cardId;
|
||||
@@ -280,7 +280,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramChecklistId = req.params.checklistId;
|
||||
@@ -298,7 +298,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramCardId = req.params.cardId;
|
||||
@@ -329,7 +329,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramCommentId = req.params.commentId;
|
||||
|
||||
@@ -59,7 +59,7 @@ Integrations.allow({
|
||||
//INTEGRATIONS REST API
|
||||
if (Meteor.isServer) {
|
||||
// Get all integrations in board
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/integrations', function(req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/integrations', function(req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
Authentication.checkBoardAccess(req.userId, paramBoardId);
|
||||
@@ -79,7 +79,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
|
||||
// Get a single integration in board
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/integrations/:intId', function(req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/integrations/:intId', function(req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramIntId = req.params.intId;
|
||||
@@ -99,7 +99,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
|
||||
// Create a new integration
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/integrations', function(req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/integrations', function(req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
Authentication.checkBoardAccess(req.userId, paramBoardId);
|
||||
@@ -126,7 +126,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
|
||||
// Edit integration data
|
||||
JsonRoutes.add('PUT', '/api/boards/:boardId/integrations/:intId', function (req, res, next) {
|
||||
JsonRoutes.add('PUT', '/api/boards/:boardId/integrations/:intId', function (req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramIntId = req.params.intId;
|
||||
@@ -174,7 +174,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
|
||||
// Delete subscribed activities
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId/activities', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId/activities', function (req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramIntId = req.params.intId;
|
||||
@@ -198,7 +198,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
|
||||
// Add subscribed activities
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/integrations/:intId/activities', function (req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/integrations/:intId/activities', function (req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramIntId = req.params.intId;
|
||||
@@ -222,7 +222,7 @@ if (Meteor.isServer) {
|
||||
});
|
||||
|
||||
// Delete integration
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId', function (req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramIntId = req.params.intId;
|
||||
|
||||
+4
-4
@@ -201,7 +201,7 @@ if (Meteor.isServer) {
|
||||
|
||||
//LISTS REST API
|
||||
if (Meteor.isServer) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists', function (req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
Authentication.checkBoardAccess( req.userId, paramBoardId);
|
||||
@@ -224,7 +224,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId', function (req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramListId = req.params.listId;
|
||||
@@ -242,7 +242,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/lists', function (req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/lists', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
@@ -265,7 +265,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
|
||||
+4
-4
@@ -131,7 +131,7 @@ if (Meteor.isServer) {
|
||||
|
||||
//SWIMLANE REST API
|
||||
if (Meteor.isServer) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes', function (req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
Authentication.checkBoardAccess( req.userId, paramBoardId);
|
||||
@@ -154,7 +154,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res) {
|
||||
try {
|
||||
const paramBoardId = req.params.boardId;
|
||||
const paramSwimlaneId = req.params.swimlaneId;
|
||||
@@ -172,7 +172,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/swimlanes', function (req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/swimlanes', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
@@ -195,7 +195,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId( req.userId);
|
||||
const paramBoardId = req.params.boardId;
|
||||
|
||||
+13
-13
@@ -401,19 +401,19 @@ export class TrelloCreator {
|
||||
}
|
||||
|
||||
createSwimlanes(boardId) {
|
||||
const swimlaneToCreate = {
|
||||
archived: false,
|
||||
boardId,
|
||||
// We are being defensing here by providing a default date (now) if the
|
||||
// creation date wasn't found on the action log. This happen on old
|
||||
// Wekan boards (eg from 2013) that didn't log the 'createList' action
|
||||
// we require.
|
||||
createdAt: this._now(),
|
||||
title: 'Default',
|
||||
};
|
||||
const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate);
|
||||
Swimlanes.direct.update(swimlaneId, {$set: {'updatedAt': this._now()}});
|
||||
this.swimlane = swimlaneId;
|
||||
const swimlaneToCreate = {
|
||||
archived: false,
|
||||
boardId,
|
||||
// We are being defensing here by providing a default date (now) if the
|
||||
// creation date wasn't found on the action log. This happen on old
|
||||
// Wekan boards (eg from 2013) that didn't log the 'createList' action
|
||||
// we require.
|
||||
createdAt: this._now(),
|
||||
title: 'Default',
|
||||
};
|
||||
const swimlaneId = Swimlanes.direct.insert(swimlaneToCreate);
|
||||
Swimlanes.direct.update(swimlaneId, {$set: {'updatedAt': this._now()}});
|
||||
this.swimlane = swimlaneId;
|
||||
}
|
||||
|
||||
createChecklists(trelloChecklists) {
|
||||
|
||||
+6
-6
@@ -600,7 +600,7 @@ if (Meteor.isServer) {
|
||||
|
||||
// USERS REST API
|
||||
if (Meteor.isServer) {
|
||||
JsonRoutes.add('GET', '/api/user', function(req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/user', function(req, res) {
|
||||
try {
|
||||
Authentication.checkLoggedIn(req.userId);
|
||||
const data = Meteor.users.findOne({ _id: req.userId});
|
||||
@@ -618,7 +618,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/users', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/users', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
JsonRoutes.sendResult(res, {
|
||||
@@ -636,7 +636,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('GET', '/api/users/:id', function (req, res, next) {
|
||||
JsonRoutes.add('GET', '/api/users/:id', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const id = req.params.id;
|
||||
@@ -653,7 +653,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('PUT', '/api/users/:id', function (req, res, next) {
|
||||
JsonRoutes.add('PUT', '/api/users/:id', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const id = req.params.id;
|
||||
@@ -696,7 +696,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('POST', '/api/users/', function (req, res, next) {
|
||||
JsonRoutes.add('POST', '/api/users/', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const id = Accounts.createUser({
|
||||
@@ -720,7 +720,7 @@ if (Meteor.isServer) {
|
||||
}
|
||||
});
|
||||
|
||||
JsonRoutes.add('DELETE', '/api/users/:id', function (req, res, next) {
|
||||
JsonRoutes.add('DELETE', '/api/users/:id', function (req, res) {
|
||||
try {
|
||||
Authentication.checkUserId(req.userId);
|
||||
const id = req.params.id;
|
||||
|
||||
@@ -228,7 +228,10 @@ export class WekanCreator {
|
||||
title: card.title,
|
||||
// we attribute the card to its creator if available
|
||||
userId: this._user(this.createdBy.cards[card._id]),
|
||||
isOvertime: card.isOvertime || false,
|
||||
startAt: card.startAt ? this._now(card.startAt) : null,
|
||||
dueAt: card.dueAt ? this._now(card.dueAt) : null,
|
||||
spentTime: card.spentTime || null,
|
||||
};
|
||||
// add labels
|
||||
if (card.labelIds) {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "0.74.0",
|
||||
"version": "0.78.0",
|
||||
"description": "The open-source Trello-like kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
+11
-2
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 59,
|
||||
appVersion = 63,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "0.74.0~2018-02-13"),
|
||||
appMarketingVersion = (defaultText = "0.78.0~2018-03-17"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
@@ -90,6 +90,7 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
defaultText = embed "CHANGELOG.md",
|
||||
localizations = [
|
||||
(locale = "fr", text = embed "meta/t9n-changelog/fr.md"),
|
||||
(locale = "fi", text = embed "meta/t9n-changelog/fi.md"),
|
||||
],
|
||||
)
|
||||
)
|
||||
@@ -117,12 +118,14 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
defaultText = "participate",
|
||||
localizations = [
|
||||
(locale = "fr", text = "participer"),
|
||||
(locale = "fi", text = "osallistu"),
|
||||
],
|
||||
),
|
||||
description = (
|
||||
defaultText = "allows participating in the board",
|
||||
localizations = [
|
||||
(locale = "fr", text = "permet de participer dans le tableau"),
|
||||
(locale = "fi", text = "mahdollistaa taululle osallistumisen"),
|
||||
],
|
||||
)
|
||||
), (
|
||||
@@ -131,12 +134,14 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
defaultText = "configure",
|
||||
localizations = [
|
||||
(locale = "fr", text = "configurer"),
|
||||
(locale = "fi", text = "asetukset"),
|
||||
],
|
||||
),
|
||||
description = (
|
||||
defaultText = "allows configuring the board",
|
||||
localizations = [
|
||||
(locale = "fr", text = "permet de configurer le tableau"),
|
||||
(locale = "fi", text = "mahdollistaa taulun asetusten määrittämisen"),
|
||||
],
|
||||
)
|
||||
)],
|
||||
@@ -146,6 +151,7 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
defaultText = "observer",
|
||||
localizations = [
|
||||
(locale = "fr", text = "observateur"),
|
||||
(locale = "fi", text = "tarkkailija"),
|
||||
],
|
||||
),
|
||||
permissions = [false, false],
|
||||
@@ -153,6 +159,7 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
defaultText = "can read",
|
||||
localizations = [
|
||||
(locale = "fr", text = "peut lire"),
|
||||
(locale = "fi", text = "voi lukea"),
|
||||
],
|
||||
)
|
||||
), (
|
||||
@@ -160,6 +167,7 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
defaultText = "member",
|
||||
localizations = [
|
||||
(locale = "fr", text = "membre"),
|
||||
(locale = "fi", text = "jäsen"),
|
||||
],
|
||||
),
|
||||
permissions = [true, false],
|
||||
@@ -167,6 +175,7 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
defaultText = "can edit",
|
||||
localizations = [
|
||||
(locale = "fr", text = "peut éditer"),
|
||||
(locale = "fi", text = "voi muokata"),
|
||||
],
|
||||
),
|
||||
default = true,
|
||||
|
||||
+7
-1
@@ -22,7 +22,9 @@ const sandstormBoard = {
|
||||
|
||||
if (isSandstorm && Meteor.isServer) {
|
||||
const fs = require('fs');
|
||||
const Capnp = require('/node_modules/capnp.js');
|
||||
const pathParts = process.cwd().split('/');
|
||||
const path = pathParts.join('/');
|
||||
const Capnp = Npm.require(`${path}../../../node_modules/capnp.js`);
|
||||
const Package = Capnp.importSystem('sandstorm/package.capnp');
|
||||
const Powerbox = Capnp.importSystem('sandstorm/powerbox.capnp');
|
||||
const Identity = Capnp.importSystem('sandstorm/identity.capnp');
|
||||
@@ -250,6 +252,10 @@ if (isSandstorm && Meteor.isServer) {
|
||||
Users.after.insert((userId, doc) => {
|
||||
if (!Boards.findOne(sandstormBoard._id)) {
|
||||
Boards.insert(sandstormBoard, { validate: false });
|
||||
Swimlanes.insert({
|
||||
title: 'Default',
|
||||
boardId: sandstormBoard._id,
|
||||
});
|
||||
Activities.update(
|
||||
{ activityTypeId: sandstormBoard._id },
|
||||
{ $set: { userId: doc._id }}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
http://:8080
|
||||
proxy / localhost:3001 {
|
||||
websocket
|
||||
transparent
|
||||
}
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
# get wekan/mongo settings
|
||||
source $SNAP/bin/wekan-read-settings
|
||||
|
||||
if [ "$CADDY_ENABLED" = "true" ]; then
|
||||
env LC_ALL=C caddy -conf=$SNAP_COMMON/Caddyfile -host=localhost:${CADDY_PORT}
|
||||
else
|
||||
echo "caddy is disabled. Stop service"
|
||||
snapctl stop --disable ${SNAP_NAME}.caddy
|
||||
# sleep here, in case snapctl fails to stop service so we do not restart too often
|
||||
fi
|
||||
@@ -1,17 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
# store here all configuration options for wekan snap
|
||||
# read configured settings first
|
||||
SETTINGS_FILE="$SNAP_COMMON/wekan_settings.sh"
|
||||
[ -f $SETTINGS_FILE ] && . $SETTINGS_FILE
|
||||
# All supported keys are defined here together with descriptions and default values
|
||||
|
||||
# list of supported keys
|
||||
keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB"
|
||||
keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT"
|
||||
|
||||
# default values
|
||||
DESCRIPTION_MONGODB_BIND_UNIX_SOCKET="mongodb binding unix socket:\n"\
|
||||
"\t\t\t Default behaviour will preffer binding over unix socket, to disable unix socket binding set value to 'nill' string\n"\
|
||||
"\t\t\t To bind to instance of mongo provided through contect interface set to relative path to the socket inside shared directory"
|
||||
"\t\t\t To bind to instance of mongodb provided through content interface,set value to relative path to the socket inside '$SNAP_DATA/shared' directory"
|
||||
DEFAULT_MONGODB_BIND_UNIX_SOCKET="$SNAP_DATA/share"
|
||||
KEY_MONGODB_BIND_UNIX_SOCKET="mongodb-bind-unix-socket"
|
||||
|
||||
@@ -39,6 +36,14 @@ DESCRIPTION_PORT="port wekan is exposed at"
|
||||
DEFAULT_PORT="8080"
|
||||
KEY_PORT="port"
|
||||
|
||||
DESCRIPTION_DISABLE_MONGODB="Disable mongodb service: use only if binding to database outside of the snap. Valid values: [true,false]"
|
||||
DESCRIPTION_DISABLE_MONGODB="Disable mongodb service: use only if binding to database outside of the ${SNAP_NAME} snap. Valid values: [true,false]"
|
||||
DEFAULT_DISABLE_MONGODB="false"
|
||||
KEY_DISABLE_MONGODB="disable-mongodb"
|
||||
|
||||
DESCRIPTION_CADDY_ENABLED="Enable caddy service (caddy - Every Site on HTTPS). Set to 'true' to enable caddy\n\t\tcaddy settings are handled through $SNAP_COMMON/Caddyfile"
|
||||
DEFAULT_CADDY_ENABLED="false"
|
||||
KEY_CADDY_ENABLED="caddy-enabled"
|
||||
|
||||
DESCRIPTION_CADDY_BIND_PORT="Port on which caddy will expect proxy, value set here will be set in $SNAP_COMMON/Caddyfile"
|
||||
DEFAULT_CADDY_BIND_PORT="3001"
|
||||
KEY_CADDY_BIND_PORT="caddy-bind-port"
|
||||
File renamed without changes.
@@ -4,7 +4,8 @@
|
||||
source $SNAP/bin/wekan-read-settings
|
||||
|
||||
if [ "true" == "${DISABLE_MONGODB}" ]; then
|
||||
echo "mongodb is disabled. Not starting it"
|
||||
echo "mongodb is disabled. Stop service"
|
||||
snapctl stop --disable ${SNAP_NAME}.mongodb
|
||||
exit 0
|
||||
fi
|
||||
|
||||
File renamed without changes.
@@ -1,8 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
SYSTEMD_WEKAN_SERVICE="snap.${SNAP_NAME}.wekan"
|
||||
SYSTEMD_MONGODB_SERVICE="snap.${SNAP_NAME}.mongodb"
|
||||
|
||||
# get wekan/mongo settings
|
||||
source $SNAP/bin/wekan-read-settings
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
source $SNAP/bin/config &>/dev/null
|
||||
# first read settings
|
||||
source $SNAP/bin/wekan-read-settings &>/dev/null
|
||||
if [ "$CADDY_ENABLED" = "true" ]; then
|
||||
# tweak port nunmber as it has been remapped
|
||||
export PORT=${CADDY_PORT} &>/dev/null
|
||||
fi
|
||||
|
||||
echo -e "Wekan: The open-source Trello-like kanban.\n"
|
||||
echo -e "Make sure you have connected all interfaces, check more by calling $ snap interfaces"
|
||||
echo -e "Make sure you have connected all interfaces, check more by calling $ snap interfaces ${SNAP_NAME}"
|
||||
echo -e "\n"
|
||||
echo -e "${SNAP_NAME} has two services, to check status/restart/stop use systemd commands"
|
||||
echo -e "mongodb service:"
|
||||
echo -e "\t$ sudo systemctl status/start/stop/restart snap.$SNAP_NAME.mongodb"
|
||||
echo -e "wekan service"
|
||||
echo -e "\t$ sudo systemctl status/start/stop/restart snap.$SNAP_NAME.wekan"
|
||||
echo -e "${SNAP_NAME} has multiple services, to check status use systemctl"
|
||||
echo -e "\t$ systemctl status snap.$SNAP_NAME.*"
|
||||
echo -e "\n"
|
||||
echo -e "To make backup of wekan's database use: $ ${SNAP_NAME}.database-backup [backup file]"
|
||||
echo -e "\t backup file is optional parameter, if not passed backup is created in directory:"
|
||||
@@ -42,7 +44,5 @@ do
|
||||
echo -e "\t\tCurrent value set to: '${!key}', (default value: '${!default_value}')"
|
||||
fi
|
||||
done
|
||||
echo -e "\nFor changes to take effect restart wekan service,"
|
||||
echo -e "if mongodb key was change also restart mongodb service, before restarting wekan"
|
||||
echo -e "to restart mongodb: $ sudo systemctl restart snap.$SNAP_NAME.mongodb"
|
||||
echo -e "to restart wekan: $ sudo systemctl restart snap.$SNAP_NAME.wekan"
|
||||
|
||||
echo -e "\n!!!! Some changes result in restart of some or all services, use with caution !!!!!"
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# read wekan config
|
||||
source $SNAP/bin/config
|
||||
|
||||
|
||||
for key in ${keys[@]}
|
||||
do
|
||||
default_value="DEFAULT_$key"
|
||||
description="DESCRIPTION_$key"
|
||||
snappy_key="KEY_$key"
|
||||
value=$(snapctl get ${!snappy_key})
|
||||
if [ "x$value" == "x" ]; then
|
||||
echo -e "$key=${!default_value} (default value)"
|
||||
export $key=${!default_value}
|
||||
else
|
||||
echo -e "$key=$value"
|
||||
export $key=$value
|
||||
fi
|
||||
done
|
||||
|
||||
# if caddy is enabled, do update port settings based on caddy file
|
||||
if [ "$CADDY_ENABLED" = "true" ]; then
|
||||
echo "caddy is enabled, adjusting ports"
|
||||
export CADDY_PORT=${PORT}
|
||||
echo -e "CADDY_PORT=$CADDY_PORT"
|
||||
export PORT=${CADDY_BIND_PORT}
|
||||
echo -e "PORT=$PORT"
|
||||
fi
|
||||
@@ -1,36 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# read wekan config
|
||||
source $SNAP/bin/config
|
||||
|
||||
# TODO: uncomment following, once snapctl can be called from outside the hooks
|
||||
# for key in ${keys[@]}
|
||||
# do
|
||||
# # snappy is picky about key syntax, using mapping
|
||||
# MAP_KEY="KEY_$key"
|
||||
# SNAPPY_KEY=
|
||||
# if value=$(snapctl get ${!MAP_KEY}); then
|
||||
# echo "$key='$value'"
|
||||
# export $key=$value
|
||||
# else
|
||||
# # use default value
|
||||
# default_value="DEFAULT_$key"
|
||||
# echo "using default value: $key='${!default_value}'"
|
||||
# export $key=${!default_value}
|
||||
# fi
|
||||
# done
|
||||
|
||||
# TODO: get rid of this workaround once above can be used
|
||||
# loop through all values, and if not defined, use default value
|
||||
for key in ${keys[@]}
|
||||
do
|
||||
if [ "x" == "x${!key}" ]; then
|
||||
# use default value
|
||||
default_value="DEFAULT_$key"
|
||||
echo "using default value: $key='${!default_value}'"
|
||||
export $key=${!default_value}
|
||||
# echo "export $key='${!def_value}'" >> $SETTINGS_FILE
|
||||
else
|
||||
echo "$key='${!key}'"
|
||||
fi
|
||||
done
|
||||
Vendored
+27
-24
@@ -1,32 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
exec >> $SNAP_DATA/hook.log 2>&1
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') $0: Entering hook"
|
||||
|
||||
set -x
|
||||
|
||||
# read wekan config
|
||||
. $SNAP/bin/config
|
||||
|
||||
# create run dir, we're going to use it for unix socket
|
||||
mkdir -p $SNAP_DATA/share
|
||||
mkdir -p $SNAP_DATA/shared
|
||||
|
||||
# settings were altered by user, safest way to get them applied is to restart service
|
||||
# first check if caddy service is enabled
|
||||
value=$(snapctl get caddy-enabled)
|
||||
if [ "$value" = "true" ]; then
|
||||
# update caddy file
|
||||
bind_port=$(snapctl get caddy-bind-port)
|
||||
port=$(snapctl get port)
|
||||
[ "x" != "x${bind_port}" ] && sed -i 's|proxy / localhost:.* {|proxy / localhost:'"${bind_port}"' {|g' $SNAP_COMMON/Caddyfile
|
||||
[ "x" != "x$port" ] && sed -i 's|http://:.*|http://:'"${port}"'|g' $SNAP_COMMON/Caddyfile
|
||||
snapctl start --enable ${SNAP_NAME}.caddy 2>&1 || true
|
||||
snapctl restart ${SNAP_NAME}.caddy 2>&1 || true
|
||||
else
|
||||
snapctl stop --disable ${SNAP_NAME}.caddy 2>&1 || true
|
||||
fi
|
||||
|
||||
# TODO: remove this workaround once it's not needed
|
||||
# for the moment we can't read settings outside of the hook,
|
||||
# so store all settings in helpper script which is then picked by main wrapper
|
||||
echo -e "#!/bin/sh\n" > $SETTINGS_FILE
|
||||
for key in ${keys[@]}
|
||||
do
|
||||
# snappy is picky about key syntax, using mapping
|
||||
MAP_KEY="KEY_$key"
|
||||
if value=$(snapctl get ${!MAP_KEY}); then
|
||||
echo "export $key='$value'" >> $SETTINGS_FILE
|
||||
elif [ -d "${!key}" ]; then
|
||||
# store back value from SETTINGS_FILE
|
||||
echo "export $key='${!key}'" >> $SETTINGS_FILE
|
||||
fi
|
||||
done
|
||||
value=$(snapctl get disable-mongodb)
|
||||
if [ "$value" = "true" ]; then
|
||||
snapctl stop --disable ${SNAP_NAME}.mongodb 2>&1 || true
|
||||
else
|
||||
snapctl start --enable ${SNAP_NAME}.mongodb 2>&1 || true
|
||||
snapctl restart ${SNAP_NAME}.mongodb 2>&1 || true
|
||||
fi
|
||||
|
||||
# set file executable
|
||||
chmod 755 $SETTINGS_FILE
|
||||
# we can't use snapctl to restart service, may be one day ....
|
||||
|
||||
echo "Setting has been updated, restart service."
|
||||
# restart all services
|
||||
snapctl restart ${SNAP_NAME}.wekan 2>&1 || true
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
exec >> $SNAP_DATA/hook.log 2>&1
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') $0: Entering hook"
|
||||
|
||||
# coppy caddy file in place
|
||||
[ ! -e $SNAP_COMMON/Caddyfile ] && cp $SNAP/Caddyfile $SNAP_COMMON/Caddyfile
|
||||
|
||||
# create run dir, we're going to use it for unix socket
|
||||
mkdir -p $SNAP_DATA/share
|
||||
mkdir -p $SNAP_DATA/shared
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
install
|
||||
+25
-7
@@ -21,6 +21,12 @@ plugs:
|
||||
interface: content
|
||||
target: $SNAP_DATA/shared
|
||||
|
||||
hooks:
|
||||
configure:
|
||||
plugs:
|
||||
- network
|
||||
- network-bind
|
||||
|
||||
slots:
|
||||
mongodb-slot:
|
||||
interface: content
|
||||
@@ -38,6 +44,11 @@ apps:
|
||||
daemon: simple
|
||||
plugs: [network, network-bind]
|
||||
|
||||
caddy:
|
||||
command: caddy-control
|
||||
daemon: simple
|
||||
plugs: [network, network-bind]
|
||||
|
||||
help:
|
||||
command: wekan-help
|
||||
|
||||
@@ -85,6 +96,7 @@ parts:
|
||||
- npm
|
||||
- curl
|
||||
- paxctl
|
||||
- execstack
|
||||
prepare: |
|
||||
echo "Cleaning environment first"
|
||||
rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
|
||||
@@ -118,17 +130,23 @@ parts:
|
||||
cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
|
||||
cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
|
||||
rm $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
|
||||
execstack --clear-execstack $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
|
||||
organize:
|
||||
README: README.wekan
|
||||
|
||||
helpers:
|
||||
source: snap-src
|
||||
plugin: dump
|
||||
|
||||
caddy:
|
||||
plugin: dump
|
||||
source: https://caddyserver.com/download/linux/amd64?plugins=
|
||||
source-type: tar
|
||||
organize:
|
||||
wekan-control: bin/wekan-control
|
||||
mongodb-control: bin/mongodb-control
|
||||
wekan-read-settings: bin/wekan-read-settings
|
||||
wekan-help: bin/wekan-help
|
||||
mongodb-backup: bin/mongodb-backup
|
||||
mongodb-restore: bin/mongodb-restore
|
||||
config: bin/config
|
||||
caddy: bin/caddy
|
||||
CHANGES.txt: CADDY_CHANGES.txt
|
||||
EULA.txt: CADDY_EULA.txt
|
||||
LICENSES.txt: CADDY_LICENSES.txt
|
||||
README.txt: CADDY_README.txt
|
||||
stage:
|
||||
- -init
|
||||
Reference in new issue
Block a user