Compare commits

...
92 Commits
Author SHA1 Message Date
Lauri Ojansivu 12cccc25cc v2.09 2019-01-28 18:29:46 +02:00
Lauri Ojansivu 34f62cb3b3 - [Fix vertical automatic scrolling when opening a card](https://github.com/wekan/wekan/commit/820d3270935dc89f046144a7bbf2c8277e2484bc).
Thanks to bentiss !
2019-01-28 18:23:28 +02:00
Lauri Ojansivu 820d327093 Merge pull request #2140 from bentiss/scrolling-fixes
automatic scroll: fix vertical automatic scrolling when opening a card
2019-01-28 18:12:51 +02:00
Lauri Ojansivu 04279342a4 v2.08 2019-01-28 17:26:18 +02:00
Benjamin Tissoires 1cfe084cc2 automatic scroll: fix vertical automatic scrolling when opening a card
We actually want the vertical scrolling to be fixed when opening the
card details.
I am not sure where the `100` value comes from, but this makes the
scrolling happy on the swimlane view and on the lists view.
2019-01-28 16:21:43 +01:00
Lauri Ojansivu 4629cc1b19 Update translations. 2019-01-28 17:08:47 +02:00
Lauri Ojansivu b4e87466ba Merge branch 'bentiss-horizontal-fixes' into edge 2019-01-28 17:06:56 +02:00
Benjamin Tissoires ae82f43078 make the max height of the swimlane not too big
We should take a full screen minus the header height
2019-01-28 15:34:12 +01:00
Benjamin Tissoires 7cc185ac57 Properly fix horizontal rendering on Chrome and Firefox
This reverts commit 74cf9e2573 "- Fix Firefox left-rigth scrollbar."

This reverts commit 9dd8216dfb.
"- Fix cards below swimlane title in Firefox by making
[previous fix](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb)"

And this partially reverts commit dd88eb4cc

The root of the issue was that I was adding a new div and nesting
the list of lists in this new list. This resulted in some
weird behavior that Firefox could not handled properly
Revert to a code colser to v2.02, by just having the
swimlane header in a separate line, and keep only one
flex element.

fixes #2137
2019-01-28 15:33:47 +01:00
Lauri Ojansivu 4d37e1d640 v2.07 2019-01-28 02:58:02 +02:00
Lauri Ojansivu 74cf9e2573 - Fix Firefox left-rigth scrollbar.
Thanks to xet7 !

Closes #2137
2019-01-28 02:50:25 +02:00
Lauri Ojansivu 3c2de2a38d v2.06 2019-01-27 19:11:57 +02:00
Lauri Ojansivu 9dd8216dfb - Fix cards below swimlane title in Firefox by making [previous fix](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb)
Firefox-only.

Thanks to xet7 !
2019-01-27 19:03:50 +02:00
Lauri Ojansivu 905ddafe41 v2.05 2019-01-27 18:27:21 +02:00
Lauri Ojansivu 62a0e57f38 Update translations. 2019-01-27 18:18:20 +02:00
Lauri Ojansivu be03a191c4 - Try to have some progress on Wekan Sandstorm API. I did not get it fully working yet.
Thanks to xet7.
2019-01-27 18:16:27 +02:00
Lauri Ojansivu cf7d3b5a7e - Add back scrollbars that [were hidden when trying to fix another
bug](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb).

Thanks to xet7 !

Closes #2134
2019-01-27 18:09:53 +02:00
Lauri Ojansivu 939d8a7078 v2.04 2019-01-26 20:20:54 +02:00
Lauri Ojansivu db62a51d5a Update translations. 2019-01-26 19:48:28 +02:00
Lauri Ojansivu 9ebf5751fd Merge pull request #2132 from bentiss/edge
Fix for v2.03
2019-01-26 19:45:56 +02:00
Benjamin Tissoires f7c6b7fce2 ui: fix rendering issue on firefox
When a list have more cards that can fit in the screen, the members icons
are drawn on top of the swimlane below and the scrollbar is not available.

According to https://github.com/utatti/perfect-scrollbar the container
must have an `overflow: hidden` css style.

When changing the swimlane header from vertical to horizontal, dd88eb4cc1
broke this which led to this weird bug.
2019-01-26 17:38:51 +01:00
Benjamin Tissoires 850b34ce33 ifttt: card actions: simplify the logic for setting the color
Jade allows a simpler approach than my initial manual update.
Just declare the correct ReactiveVar and accessor, and done.
2019-01-26 17:38:51 +01:00
Lauri Ojansivu 1a64a88d3d Waiting for bugfix. 2019-01-25 23:06:34 +02:00
Lauri Ojansivu be8f00ab8a v2.03 2019-01-25 22:18:39 +02:00
Lauri Ojansivu ddedb8a48b Update translations (de). 2019-01-25 22:14:09 +02:00
Lauri Ojansivu ba392362ee Update ChangeLog for all that huge amount of contributions from bentiss. 2019-01-25 22:09:40 +02:00
Lauri Ojansivu 8fbd47e199 Merge pull request #2130 from bentiss/color-lists
lists-color: only colorize the bottom border
2019-01-25 20:02:26 +02:00
Lauri Ojansivu 6aaf0c812a Update translations. 2019-01-25 19:25:46 +02:00
Benjamin Tissoires 33977b2282 lists-color: only colorize the bottom border
And make the background clearer to visually separate the header from
the list of cards
2019-01-25 18:13:37 +01:00
Lauri Ojansivu 37f70bdf0f Merge branch 'devel' into edge 2019-01-25 19:13:08 +02:00
Lauri Ojansivu 5d6203f5f9 Merge pull request #2128 from bentiss/color-lists
Color lists
2019-01-25 19:05:44 +02:00
Lauri Ojansivu 082aabc735 Merge pull request #2127 from bentiss/fix-set-member
api: fix set_board_member_permission
2019-01-25 19:05:26 +02:00
Lauri Ojansivu ba15526516 Merge pull request #2126 from bentiss/color-swimlanes
Color for swimlanes
2019-01-25 19:05:09 +02:00
Lauri Ojansivu 4a2576fbc2 Merge pull request #2121 from bentiss/color
Color picker in IFTTT
2019-01-25 19:04:45 +02:00
Benjamin Tissoires 97d95b4bcb ui: lists: make sure all lists boxes are the same height
When `Show card count` is enabled, the lists with the card counts have
two lines of text while the lists without have only one.

This results in the box around the list headers are not of the same size
and this is visible when setting a color to the list.
2019-01-25 15:58:52 +01:00
Benjamin Tissoires d0a9d8c581 colors: add per list color
Hamburger menu only.

Note that I am definitively not responsible for the resulting Christmas
tree.

fixes #328
2019-01-25 15:56:40 +01:00
Benjamin Tissoires 78c779faaf client: lists headers: use padding instead of margin
No visual changes but allows to set a background color to the list header.
2019-01-25 14:25:28 +01:00
Benjamin Tissoires 8d81aca439 api: fix set_board_member_permission
If the data is passed as a boolean, through json, data.toLowerCase()
raises an error.

Also define query which we are returning in case of success.
2019-01-25 14:15:08 +01:00
Benjamin Tissoires 6c3dbc3c6f api: new_card: add the card at the end of the list
If we keep the `0` value, the card might be inserted in the middle of the
list, making it hard to find it later on.

Always append the card at the end of the list by setting a sort value
based on the number of cards in the list.
2019-01-25 12:44:27 +01:00
Benjamin Tissoires b5411841cf api: fix the sort field when inserting a swimlane or a list
This has the side effect of always inserting the element at the end.
2019-01-25 11:04:56 +01:00
Benjamin Tissoires 5c6a725712 Make sure Swimlanes and Lists have a populated sort field
When moving around the swimlanes or the lists, if one element has a sort
with a null value, the computation of the new sort value is aborted,
meaning that there are glitches in the UI.

This happens on the first swimlane created with the new board, or when
a swimlane or a list gets added through the API.
2019-01-25 11:04:56 +01:00
Benjamin Tissoires 03efeaeb1a Add colors to swimlanes
fixes #1688
2019-01-25 11:04:40 +01:00
Benjamin Tissoires c075187088 swimlane: insert the new swimlane after the one we clicked on 2019-01-24 20:52:03 +01:00
Benjamin Tissoires 416b17062e Remove the 'Add Swimlane' entry and replace it by a plus sign
Still need to create the swimlane right after the one that has been
created
2019-01-24 20:51:38 +01:00
Benjamin Tissoires dd88eb4cc1 swimlane-view: have the swimlane header horizontal
This allows to use the header as a separator between swimlanes.

This will be most useful when we can set the background color of these
headers.
2019-01-24 20:50:42 +01:00
Benjamin Tissoires 5fa0821e07 card colors: remove unused variables 2019-01-24 20:50:42 +01:00
Benjamin Tissoires 6e9bad5772 IFTTT: card colors: add an actual white entry
To unset the color through the IFTTT, we need a white entry.
However, we do not want to show the white enry in the hamburger
`Set Color` entry.

We can also give the `white` capability to the API, it won't hurt
and be more straightforward.
2019-01-24 16:51:06 +01:00
Benjamin Tissoires 5769d438a0 rules: set card color: use the color picker 2019-01-24 16:51:06 +01:00
Benjamin Tissoires 8a48ff96ef set card colors: properly set the title of the popups 2019-01-24 16:51:06 +01:00
Benjamin Tissoires 0782c97d4f card colors: force overwrite of text color
This allows to show checks on the color with the correct color instead
of plain white.
2019-01-24 09:32:38 +01:00
Lauri Ojansivu 542cc75dc4 Update translations (tr). 2019-01-22 19:27:32 +02:00
Lauri Ojansivu 1b445ad789 v2.02 2019-01-22 17:31:57 +02:00
Lauri Ojansivu 9baed4256a Update translations (he). 2019-01-22 17:28:19 +02:00
Lauri Ojansivu 2b4df7e8c7 Update changelog. 2019-01-22 17:26:48 +02:00
Lauri Ojansivu 6e28dec712 Merge pull request #2119 from bentiss/fix-color-translation
Fix: Translate and add colors to IFTTT Rules dropdown."
2019-01-22 16:45:29 +02:00
Benjamin Tissoires ba9f0ca672 Fix: Translate and add colors to IFTTT Rules dropdown."
This fixes commit 44e4df2492.

When the label has a name, not setting `translatedname` results in a
blank item in the IFTTT label trigger.
2019-01-22 15:40:54 +01:00
Lauri Ojansivu 7261ccdc90 Update translations. 2019-01-22 16:32:43 +02:00
Lauri Ojansivu 6fbadbe5bc Merge pull request #2118 from bentiss/export
Allow to call export from the API
2019-01-22 16:29:42 +02:00
Benjamin Tissoires 26d7ba72aa api: export board: allow authentication through generic authentication
This allows to retrieve the full export of the board from the API.
When the board is big, retrieving individual cards is heavy for both
the server and the number of requests.

Allowing the API to directly call on export and then treat the data
makes the whole process smoother.
2019-01-22 15:14:01 +01:00
Lauri Ojansivu 44e4df2492 - Translate and add colors to IFTTT Rules dropdown.
Thanks to xet7 !
2019-01-22 15:22:31 +02:00
Lauri Ojansivu d8482b533a Merge pull request #2117 from bentiss/color
Set the card color with the color picker
2019-01-22 14:57:00 +02:00
Benjamin Tissoires 2082480ddd Set the card color with the color picker
When triggered from the hamburger
2019-01-22 13:45:08 +01:00
Lauri Ojansivu e8c4e394fd Update translations. 2019-01-22 14:01:07 +02:00
Lauri Ojansivu 0c5052ebae Merge pull request #2116 from bentiss/color
Add per card color
2019-01-22 13:02:14 +02:00
Lauri Ojansivu d3b2ae1975 Update translations. 2019-01-22 12:12:18 +02:00
Benjamin Tissoires f4f0f489eb add action: set card color 2019-01-22 11:10:29 +01:00
Benjamin Tissoires 3368ebf067 color: add option in hamburger to change the card color
Currently only dropdown, no palette

Fixes: #428
2019-01-22 11:10:29 +01:00
Benjamin Tissoires b0ac10d94a Add the ability to change the card background
Currently the only way to set it is via the REST API
2019-01-22 11:10:29 +01:00
Lauri Ojansivu c87a8b86ae - Added missing translation for 'days'
Thanks to Chartman123 !

Closes #2114
2019-01-21 16:26:55 +02:00
Lauri Ojansivu d5d71d7097 Update upcase/lowercase. 2019-01-20 00:53:59 +02:00
Lauri Ojansivu c960a8b909 - [OpenAPI and generating of REST API Docs](https://github.com/wekan/wekan/pull/1965).
Thanks to bentiss.
2019-01-19 21:14:32 +02:00
Lauri Ojansivu 3257f78d24 Merge branch 'bentiss-openapi' into devel 2019-01-19 21:09:42 +02:00
Lauri Ojansivu a9133bf933 Merge branch 'openapi' of https://github.com/bentiss/wekan into bentiss-openapi 2019-01-19 20:55:14 +02:00
Lauri Ojansivu 8e8147b5ac - Fix License to 2019. https://github.com/wekan/wekan/pull/2112
Thanks to ajRiverav !
2019-01-19 20:45:43 +02:00
Lauri Ojansivu 711f4de3d7 Merge pull request #2112 from ajRiverav/devel
update license to year 2019
2019-01-19 20:43:42 +02:00
Lauri Ojansivu 68998e062e Update translations. 2019-01-19 20:42:41 +02:00
AJ Rivera f40d1f6bd5 update license to year 2019 2019-01-18 17:25:48 -04:00
Benjamin Tissoires 048c3cd14d snap: also generate the html doc of the REST API
Same for snap: embed the documentation of the REST API
in the snap.
2019-01-18 19:33:08 +01:00
Benjamin Tissoires 08ca353205 openapi: generate the HTML documentation too and embed it in the image
Aligning with the requirement to run the container without
external resources: embed the documentation of the REST API
directly in the Docker image.
2019-01-18 19:33:08 +01:00
Benjamin Tissoires c83cdc9335 Add openapi in snaps
Same thing than in the Dockerfile, snaps need
to embed the current openapi yaml file.
2019-01-18 17:07:18 +01:00
Benjamin Tissoires e91e3c076d snapcraft add nodejs and npm as build dependencies
When pulling the docker container snapcore/snapcraft
to build the snap, those 2 packages are not present
by default leading to a failure in the snap creation.

Note: it is good to call `apt-get update` before
`snapcraft` or the build will fail.
2019-01-18 17:05:41 +01:00
Benjamin Tissoires 8be7eec2ca openapi: make the code python 3.5 compatible
It is common to use Ubuntu 16.04 to build snaps. For example,
the official docker container to build snaps is using this old
distribution.

However, Ubuntu 16.04 ships Python 3.5.X which is not compatible
with the f-strings in generate_openapi.py. This is sad, because
we need to use the `.format()` syntax to make it compatible.
2019-01-18 17:03:12 +01:00
Benjamin Tissoires acc4493517 Generate the OpenAPI in the Dockerfile
When we build the docker container, we need to generate the openapi
description in it so the geenrated API actually matches the code
the container is running.
2019-01-18 17:03:05 +01:00
Benjamin Tissoires ff467402c0 RESTAPI: Add some JSDoc
So we can have a decent REST API documentation generated.
2019-01-18 17:02:56 +01:00
Benjamin Tissoires 49d3eb5a3f Add OpenAPI description of the REST API
The API is generated by a custom script that parses the models directory.
Once the API is generated, tools like https://editor.swagger.io/ or
Python bravado can parse the file and generate a language friendly API.

Note that the tool generate an OpenAPI 2.0 version because bravado
doesn't handle OpenAPI 3.0.

The script also parses the JSDoc with a custom parser to allow
customization of the description of the fields.
2019-01-18 17:01:11 +01:00
Benjamin Tissoires 889aa6d652 Revert "models: boards: add PUT members entry point"
This reverts commit f61942e5cb.

Adding a member is actually already handled by
POST', '/api/boards/:boardId/members/:userId/add'

So this function is purely duplicated.

Not to mention that the '/add' one allows to set permissions
so this one in this commit is less interesting.
2019-01-18 17:01:03 +01:00
Lauri Ojansivu 78e0457843 Update translations (ca). 2019-01-15 15:47:46 +02:00
Lauri Ojansivu 7f568faef6 Fix typo.
Thanks to xorander00 !

Closes #2101
2019-01-13 20:12:57 +02:00
Lauri Ojansivu be045f3156 Fix typo.
Thanks to xorander00 !

Closes #2101
2019-01-13 20:10:20 +02:00
Lauri Ojansivu 3b5e81d514 Update translations. 2019-01-11 16:34:02 +02:00
Lauri Ojansivu 346bdf2ca8 v2.01 2019-01-06 13:29:04 +02:00
Lauri Ojansivu 501289786c Update translations (cs and he). 2019-01-06 13:26:10 +02:00
90 changed files with 4601 additions and 623 deletions

No files matched your search

+134 -1
View File
@@ -1,4 +1,137 @@
# v2.00 2018-01-04 Wekan release
# v2.09 2019-01-28 Wekan release
This release fixes the following bugs with Apache I-CLA, thanks to bentiss:
- [Fix vertical automatic scrolling when opening a card](https://github.com/wekan/wekan/commit/820d3270935dc89f046144a7bbf2c8277e2484bc).
Thanks to GitHub user bentiss for contributions.
# v2.08 2019-01-28 Wekan release
This release fixes the following bugs with Apache I-CLA, thanks to bentiss:
- Make the max height of the swimlane not too big](https://github.com/wekan/wekan/commit/ae82f43078546902e199d985a922ebf7041a4917).
We take a full screen minus the header height;
- [Properly fix horizontal rendering on Chrome and Firefox](https://github.com/wekan/wekan/commit/7cc185ac57c77be85178f92b1d01d46e20218948).
This reverts [commit 74cf9e2573](https://github.com/wekan/wekan/commit/74cf9e2573) "- Fix Firefox left-rigth scrollbar."
This reverts [commit 9dd8216dfb](https://github.com/wekan/wekan/commit/9dd8216dfb)
"- Fix cards below swimlane title in Firefox" by making
[previous fix](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb)"
And this partially reverts [commit dd88eb4cc](https://github.com/wekan/wekan/commit/dd88eb4cc).
The root of the issue was that I was adding a new div and nesting
the list of lists in this new list. This resulted in some
weird behavior that Firefox could not handled properly
Revert to a code colser to v2.02, by just having the
swimlane header in a separate line, and keep only one
flex element.
Fixes #2137
Thanks to GitHub user bentiss for contributions, and translators for their translations.
# v2.07 2019-01-28 Wekan release
This release fixes the following bugs:
- [Fix Firefox left-rigth scrollbar](https://github.com/wekan/wekan/issues/2137).
Thanks to GitHub user xet7 for contributions.
# v2.06 2019-01-27 Wekan release
This release fixes the following bugs:
- [Fix cards below swimlane title in Firefox](https://github.com/wekan/wekan/commit/9dd8216dfb80855999998ed76d8a3c06a954a002)
by making [previous fix](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb)
Firefox-only.
Thanks to GitHub user xet7 for contributions.
# v2.05 2019-01-27 Wekan release
This release fixes the following bugs partially:
- Add back scrollbars that [were hidden when trying to fix another
bug](https://github.com/wekan/wekan/pull/2132/commits/f7c6b7fce237a6dbdbbd6d728cfb11ad3f4378eb).
This makes scrollbars work in Chromium/Chrome, but adds back bug to Firefox
that cards are below of swimlane title - this Firefox bug is fixed in Wekan v2.06.
- [Try to have some progress on Wekan Sandstorm API](https://github.com/wekan/wekan/commit/be03a191c4321c2f80116c0ee1ae6c826d882535).
I did not get it fully working yet.
Thanks to GitHub user xet7 for contributions.
# v2.04 2019-01-26 Wekan release
This release fixes the following bugs with Apache I-CLA, thanks to bentiss:
- [Bugfix for swimlanes, simplify setting color, fix rendering on Firefox](https://github.com/wekan/wekan/pull/2132).
Thanks to GitHub user bentiss for contributions, and translators for their translations.
# v2.03 2019-01-25 Wekan NOT RELEASED because of [bug](https://github.com/wekan/wekan/pull/2126#issuecomment-457723923) that was fixed in v2.04 above
This release adds the following new features with Apache I-CLA, thanks to bentiss:
- Change [Swimlane](https://github.com/wekan/wekan/issues/1688)/[List](https://github.com/wekan/wekan/issues/328)/[Card](https://github.com/wekan/wekan/issues/428)
color with color picker at webbrowser and [REST API](https://github.com/wekan/wekan/commit/5769d438a05d01bd5f35cd5830b7ad3c03a21ed2);
- Lists-Color: [Only colorize the bottom border](https://github.com/wekan/wekan/commit/33977b2282d8891bf507c4d9a1502c644afd6352),
and make the background clearer to visually separate the header from the list of cards;
- [Change Swimlane to Horizontal](https://github.com/wekan/wekan/commit/dd88eb4cc191a06f7eb84213b026dfb93546f245);
- [Change IFTTT wizard color names to color picker](https://github.com/wekan/wekan/commit/4a2576fbc200d397bcf7cede45316d9fb7e520dd);
- REST API: [Add new card to the end of the list](https://github.com/wekan/wekan/commit/6c3dbc3c6f52a42ddbeeaec9bbfcc82c1c839f7d).
If we keep the `0` value, the card might be inserted in the middle of the list, making it hard to find it later on.
Always append the card at the end of the list by setting a sort value based on the number of cards in the list.
and fixes the following bugs with Apache I-CLA, thanks to bentiss:
- [Fix set_board_member_permission](https://github.com/wekan/wekan/commit/082aabc7353d1fe75ccef1a7d942331be56f0838);
- [Fix the sort field when inserting a swimlane or a list](https://github.com/wekan/wekan/commit/b5411841cf6aa33b2c0d29d85cbc795e3faa7f4f).
This has the side effect of always inserting the element at the end;
- [Make sure Swimlanes and Lists have a populated sort field](https://github.com/wekan/wekan/commit/5c6a725712a443b4d03b4f86262033ddfb66bc3d).
When moving around the swimlanes or the lists, if one element has a sort
with a null value, the computation of the new sort value is aborted,
meaning that there are glitches in the UI.
This happens on the first swimlane created with the new board, or when
a swimlane or a list gets added through the API;
- UI: Lists: [Make sure all lists boxes are the same height](https://github.com/wekan/wekan/commit/97d95b4bcbcab86629e368ea41bb9f00450b21f6).
When `Show card count` is enabled, the lists with the card counts have
two lines of text while the lists without have only one.
This results in the box around the list headers are not of the same size
and this is visible when setting a color to the list.
Thanks to GitHub user bentiss for contributions, and translators for their translations.
# v2.02 2019-01-22 Wekan release
This release adds the following new features with Apache I-CLA, thanks to bentiss:
- [Add per card color: Card / Hamburger menu / Set Color](https://github.com/wekan/wekan/pull/2116) with [color picker](https://github.com/wekan/wekan/pull/2117);
- [OpenAPI and generating of REST API Docs](https://github.com/wekan/wekan/pull/1965);
- [Allow to retrieve full export of board from the REST API](https://github.com/wekan/wekan/pull/2118) through generic authentication.
When the board is big, retrieving individual cards is heavy for both the server and the number of requests.
Allowing the API to directly call on export and then treat the data makes the whole process smoother.
and adds the following new features with Apache I-CLA, thanks to xet7 and bentiss:
- [Translate and add color names to IFTTT Rules dropdown](https://github.com/wekan/wekan/commit/44e4df2492b95226f1297e7f556d61b1afaab714), thanks to xet7.
[Fix to this feature blank item](https://github.com/wekan/wekan/pull/2119), thanks to bentiss.
and adds these updates:
- Update translations. Thanks to translators.
- Added missing translation for 'days'. Thanks to Chartman123.
and fixes these typos;
- Fix typo, changelog year to 2019. Thanks to xorander00.
- Fix License to 2019. Thanks to ajRiverav.
Thanks to above GitHub users for their contributions.
# v2.01 2019-01-06 Wekan release
Update translations. Thanks to translators.
# v2.00 2019-01-04 Wekan release
Update translations. Thanks to translators.
+16 -1
View File
@@ -75,7 +75,7 @@ ARG DEFAULT_AUTHENTICATION_METHOD
# Set the environment variables (defaults where required)
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python git ca-certificates gcc-7" \
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python python3 python3-distutils git ca-certificates gcc-7" \
NODE_VERSION=v8.15.0 \
METEOR_RELEASE=1.6.0.1 \
USE_EDGE=false \
@@ -251,6 +251,18 @@ RUN \
cd /home/wekan/.meteor && \
gosu wekan:wekan /home/wekan/.meteor/meteor -- help; \
\
# extract the OpenAPI specification
npm install -g api2html && \
mkdir -p /home/wekan/python && \
chown wekan:wekan --recursive /home/wekan/python && \
cd /home/wekan/python && \
gosu wekan:wekan git clone --depth 1 -b master git://github.com/Kronuz/esprima-python && \
cd /home/wekan/python/esprima-python && \
python3 setup.py install --record files.txt && \
cd /home/wekan/app &&\
mkdir -p ./public/api && \
python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \
/opt/nodejs/bin/api2html -c ./public/wekan-logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \
# Build app
cd /home/wekan/app && \
gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js && \
@@ -275,10 +287,13 @@ RUN \
# Cleanup
apt-get remove --purge -y ${BUILD_DEPS} && \
apt-get autoremove -y && \
npm uninstall -g api2html &&\
rm -R /var/lib/apt/lists/* && \
rm -R /home/wekan/.meteor && \
rm -R /home/wekan/app && \
rm -R /home/wekan/app_build && \
cat /home/wekan/python/esprima-python/files.txt | xargs rm -R && \
rm -R /home/wekan/python && \
rm /home/wekan/install_meteor.sh
ENV PORT=8080
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2018 The Wekan Team
Copyright (c) 2014-2019 The Wekan Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v2.00.0"
appVersion: "v2.09.0"
files:
userUploads:
- README.md
+31
View File
@@ -35,6 +35,37 @@ BlazeComponent.extendComponent({
this._isDragging = false;
// Used to set the overlay
this.mouseHasEnterCardDetails = false;
// fix swimlanes sort field if there are null values
const currentBoardData = Boards.findOne(Session.get('currentBoard'));
const nullSortSwimlanes = currentBoardData.nullSortSwimlanes();
if (nullSortSwimlanes.count() > 0) {
const swimlanes = currentBoardData.swimlanes();
let count = 0;
swimlanes.forEach((s) => {
Swimlanes.update(s._id, {
$set: {
sort: count,
},
});
count += 1;
});
}
// fix lists sort field if there are null values
const nullSortLists = currentBoardData.nullSortLists();
if (nullSortLists.count() > 0) {
const lists = currentBoardData.lists();
let count = 0;
lists.forEach((l) => {
Lists.update(l._id, {
$set: {
sort: count,
},
});
count += 1;
});
}
},
onRendered() {
const boardComponent = this;
+11 -2
View File
@@ -1,6 +1,6 @@
template(name="cardDetails")
section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas
.card-details-header
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
+inlinedForm(classNames="js-card-details-title")
+editCardTitleForm
else
@@ -234,6 +234,7 @@ template(name="cardDetailsActionsPopup")
li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}}
li: a.js-set-card-color {{_ 'setCardColorPopup-title'}}
hr
ul.pop-over-list
li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}}
@@ -335,7 +336,15 @@ template(name="cardMorePopup")
span.date(title=card.createdAt) {{ moment createdAt 'LLL' }}
a.js-delete(title="{{_ 'card-delete-notice'}}") {{_ 'delete'}}
template(name="setCardColorPopup")
form.edit-label
.palette-colors: each colors
unless $eq color 'white'
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
template(name="cardDeletePopup")
p {{_ "card-delete-pop"}}
+44 -5
View File
@@ -1,6 +1,11 @@
const subManager = new SubsManager();
const { calculateIndexData, enableClickOnTouch } = Utils;
let cardColors;
Meteor.startup(() => {
cardColors = Cards.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
mixins() {
return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar];
@@ -73,14 +78,13 @@ BlazeComponent.extendComponent({
//Scroll top
const cardViewStartTop = $cardView.offset().top;
const cardContainerScrollTop = $cardContainer.scrollTop();
let topOffset = false;
if(cardViewStartTop < 0){
topOffset = 0;
} else if(cardViewStartTop - cardContainerScrollTop > 100) {
topOffset = cardViewStartTop - cardContainerScrollTop - 100;
if(cardViewStartTop !== 100){
topOffset = cardViewStartTop - 100;
}
if(topOffset !== false) {
bodyBoardComponent.scrollTop(topOffset);
bodyBoardComponent.scrollTop(cardContainerScrollTop + topOffset);
}
},
@@ -337,6 +341,7 @@ Template.cardDetailsActionsPopup.events({
'click .js-move-card': Popup.open('moveCard'),
'click .js-copy-card': Popup.open('copyCard'),
'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
'click .js-set-card-color': Popup.open('setCardColor'),
'click .js-move-card-to-top' (evt) {
evt.preventDefault();
const minOrder = _.min(this.list().cards(this.swimlaneId).map((c) => c.sort));
@@ -583,6 +588,40 @@ Template.copyChecklistToManyCardsPopup.events({
},
});
BlazeComponent.extendComponent({
onCreated() {
this.currentCard = this.currentData();
this.currentColor = new ReactiveVar(this.currentCard.color);
},
colors() {
return cardColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
if (this.currentColor.get() === null) {
return color === 'white';
}
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.currentCard.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentCard.setColor(null);
Popup.close();
},
}];
},
}).register('setCardColorPopup');
BlazeComponent.extendComponent({
onCreated() {
this.currentCard = this.currentData();
+81
View File
@@ -140,3 +140,84 @@ input[type="submit"].attachment-add-link-submit
.card-details-menu
margin-right: 10px
card-details-color(background, color...)
background: background !important
if color
color: color !important //overwrite text for better visibility
.card-details-white
card-details-color(unset, #000) //Black text for better visibility
border: 1px solid #eee
.card-details-green
card-details-color(#3cb500, #ffffff) //White text for better visibility
.card-details-yellow
card-details-color(#fad900, #000) //Black text for better visibility
.card-details-orange
card-details-color(#ff9f19, #000) //Black text for better visibility
.card-details-red
card-details-color(#eb4646, #ffffff) //White text for better visibility
.card-details-purple
card-details-color(#a632db, #ffffff) //White text for better visibility
.card-details-blue
card-details-color(#0079bf, #ffffff) //White text for better visibility
.card-details-pink
card-details-color(#ff78cb, #000) //Black text for better visibility
.card-details-sky
card-details-color(#00c2e0, #ffffff) //White text for better visibility
.card-details-black
card-details-color(#4d4d4d, #ffffff) //White text for better visibility
.card-details-lime
card-details-color(#51e898, #000) //Black text for better visibility
.card-details-silver
card-details-color(#c0c0c0, #000) //Black text for better visibility
.card-details-peachpuff
card-details-color(#ffdab9, #000) //Black text for better visibility
.card-details-crimson
card-details-color(#dc143c, #ffffff) //White text for better visibility
.card-details-plum
card-details-color(#dda0dd, #000) //Black text for better visibility
.card-details-darkgreen
card-details-color(#006400, #ffffff) //White text for better visibility
.card-details-slateblue
card-details-color(#6a5acd, #ffffff) //White text for better visibility
.card-details-magenta
card-details-color(#ff00ff, #ffffff) //White text for better visibility
.card-details-gold
card-details-color(#ffd700, #000) //Black text for better visibility
.card-details-navy
card-details-color(#000080, #ffffff) //White text for better visibility
.card-details-gray
card-details-color(#808080, #ffffff) //White text for better visibility
.card-details-saddlebrown
card-details-color(#8b4513, #ffffff) //White text for better visibility
.card-details-paleturquoise
card-details-color(#afeeee, #000) //Black text for better visibility
.card-details-mistyrose
card-details-color(#ffe4e1, #000) //Black text for better visibility
.card-details-indigo
card-details-color(#4b0082, #ffffff) //White text for better visibility
+2 -1
View File
@@ -1,7 +1,8 @@
template(name="minicard")
.minicard(
class="{{#if isLinkedCard}}linked-card{{/if}}"
class="{{#if isLinkedBoard}}linked-board{{/if}}")
class="{{#if isLinkedBoard}}linked-board{{/if}}"
class="minicard-{{colorClass}}")
if cover
.minicard-cover(style="background-image: url('{{cover.url}}');")
if labels
+83
View File
@@ -202,3 +202,86 @@
border-top-right-radius: 0
z-index: 15
box-shadow: 0 1px 2px rgba(0,0,0,.15)
minicard-color(background, color...)
background-color: background
if color
color: color //overwrite text for better visibility
&:hover:not(.minicard-composer),
.is-selected &,
.draggable-hover-card &
background: darken(background, 3%)
.draggable-hover-card &
background: darken(background, 7%)
.minicard-green
minicard-color(#3cb500, #ffffff) //White text for better visibility
.minicard-yellow
minicard-color(#fad900)
.minicard-orange
minicard-color(#ff9f19)
.minicard-red
minicard-color(#eb4646, #ffffff) //White text for better visibility
.minicard-purple
minicard-color(#a632db, #ffffff) //White text for better visibility
.minicard-blue
minicard-color(#0079bf, #ffffff) //White text for better visibility
.minicard-pink
minicard-color(#ff78cb)
.minicard-sky
minicard-color(#00c2e0, #ffffff) //White text for better visibility
.minicard-black
minicard-color(#4d4d4d, #ffffff) //White text for better visibility
.minicard-lime
minicard-color(#51e898)
.minicard-silver
minicard-color(#c0c0c0)
.minicard-peachpuff
minicard-color(#ffdab9)
.minicard-crimson
minicard-color(#dc143c, #ffffff) //White text for better visibility
.minicard-plum
minicard-color(#dda0dd)
.minicard-darkgreen
minicard-color(#006400, #ffffff) //White text for better visibility
.minicard-slateblue
minicard-color(#6a5acd, #ffffff) //White text for better visibility
.minicard-magenta
minicard-color(#ff00ff, #ffffff) //White text for better visibility
.minicard-gold
minicard-color(#ffd700)
.minicard-navy
minicard-color(#000080, #ffffff) //White text for better visibility
.minicard-gray
minicard-color(#808080, #ffffff) //White text for better visibility
.minicard-saddlebrown
minicard-color(#8b4513, #ffffff) //White text for better visibility
.minicard-paleturquoise
minicard-color(#afeeee)
.minicard-mistyrose
minicard-color(#ffe4e1)
.minicard-indigo
minicard-color(#4b0082, #ffffff) //White text for better visibility
+97 -6
View File
@@ -10,7 +10,6 @@
// 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
@@ -44,12 +43,24 @@
background: white
margin: -3px 0 8px
.list-header
.list-header-card-count
height: 35px
.list-header-add
flex: 0 0 auto
margin: 20px 12px 4px
padding: 20px 12px 4px
position: relative
min-height: 20px
.list-header
flex: 0 0 auto
padding: 20px 12px 4px
position: relative
min-height: 20px
background-color: #e4e4e4;
border-bottom: 6px solid #e4e4e4;
&.ui-sortable-handle
cursor: grab
@@ -68,16 +79,17 @@
text-overflow: ellipsis
word-wrap: break-word
.list-header-watch-icon
padding-left: 10px
color: #a6a6a6
.list-header-menu
position: absolute
padding: 7px
padding: 27px 19px
margin-top: 1px
top: -@padding
right: -@padding
top: -7px
right: -7px
.list-header-plus-icon
color: #a6a6a6
@@ -198,3 +210,82 @@
.search-card-results
max-height: 250px
overflow: hidden
list-header-color(background, color...)
border-bottom: 6px solid background
.list-header-white
list-header-color(#ffffff, #4d4d4d) //Black text for better visibility
border: 1px solid #eee
.list-header-green
list-header-color(#3cb500, #ffffff) //White text for better visibility
.list-header-yellow
list-header-color(#fad900, #4d4d4d) //Black text for better visibility
.list-header-orange
list-header-color(#ff9f19, #4d4d4d) //Black text for better visibility
.list-header-red
list-header-color(#eb4646, #ffffff) //White text for better visibility
.list-header-purple
list-header-color(#a632db, #ffffff) //White text for better visibility
.list-header-blue
list-header-color(#0079bf, #ffffff) //White text for better visibility
.list-header-pink
list-header-color(#ff78cb, #4d4d4d) //Black text for better visibility
.list-header-sky
list-header-color(#00c2e0, #ffffff) //White text for better visibility
.list-header-black
list-header-color(#4d4d4d, #ffffff) //White text for better visibility
.list-header-lime
list-header-color(#51e898, #4d4d4d) //Black text for better visibility
.list-header-silver
list-header-color(unset, #4d4d4d) //Black text for better visibility
.list-header-peachpuff
list-header-color(#ffdab9, #4d4d4d) //Black text for better visibility
.list-header-crimson
list-header-color(#dc143c, #ffffff) //White text for better visibility
.list-header-plum
list-header-color(#dda0dd, #4d4d4d) //Black text for better visibility
.list-header-darkgreen
list-header-color(#006400, #ffffff) //White text for better visibility
.list-header-slateblue
list-header-color(#6a5acd, #ffffff) //White text for better visibility
.list-header-magenta
list-header-color(#ff00ff, #ffffff) //White text for better visibility
.list-header-gold
list-header-color(#ffd700, #4d4d4d) //Black text for better visibility
.list-header-navy
list-header-color(#000080, #ffffff) //White text for better visibility
.list-header-gray
list-header-color(#808080, #ffffff) //White text for better visibility
.list-header-saddlebrown
list-header-color(#8b4513, #ffffff) //White text for better visibility
.list-header-paleturquoise
list-header-color(#afeeee, #4d4d4d) //Black text for better visibility
.list-header-mistyrose
list-header-color(#ffe4e1, #4d4d4d) //Black text for better visibility
.list-header-indigo
list-header-color(#4b0082, #ffffff) //White text for better visibility
+16 -1
View File
@@ -1,5 +1,7 @@
template(name="listHeader")
.list-header.js-list-header
.list-header.js-list-header(
class="{{#if limitToShowCardsCount}}list-header-card-count{{/if}}"
class="{{#if colorClass}}list-header-{{colorClass}}{{/if}}")
+inlinedForm
+editListTitleForm
else
@@ -49,6 +51,9 @@ template(name="listActionPopup")
li: a.js-toggle-watch-list {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
unless currentUser.isCommentOnly
hr
ul.pop-over-list
li: a.js-set-color-list {{_ 'set-color-list'}}
hr
ul.pop-over-list
if cards.count
li: a.js-select-cards {{_ 'list-select-cards'}}
@@ -111,3 +116,13 @@ template(name="wipLimitErrorPopup")
p {{_ 'wipLimitErrorPopup-dialog-pt1'}}
p {{_ 'wipLimitErrorPopup-dialog-pt2'}}
button.full.js-back-view(type="submit") {{_ 'cancel'}}
template(name="setListColorPopup")
form.edit-label
.palette-colors: each colors
// note: we use the swimlane palette to have more than just the border
span.card-label.palette-color.js-palette-color(class="swimlane-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
+37
View File
@@ -1,3 +1,8 @@
let listsColors;
Meteor.startup(() => {
listsColors = Lists.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
canSeeAddCard() {
const list = Template.currentData();
@@ -72,6 +77,7 @@ Template.listActionPopup.helpers({
Template.listActionPopup.events({
'click .js-list-subscribe' () {},
'click .js-set-color-list': Popup.open('setListColor'),
'click .js-select-cards' () {
const cardIds = this.allCards().map((card) => card._id);
MultiSelection.add(cardIds);
@@ -154,3 +160,34 @@ Template.listMorePopup.events({
Utils.goBoardId(this.boardId);
}),
});
BlazeComponent.extendComponent({
onCreated() {
this.currentList = this.currentData();
this.currentColor = new ReactiveVar(this.currentList.color);
},
colors() {
return listsColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.currentList.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentList.setColor(null);
Popup.close();
},
}];
},
}).register('setListColorPopup');
@@ -35,9 +35,21 @@ template(name="cardActions")
div.trigger-button.js-add-removeall-action.js-goto-rules
i.fa.fa-plus
div.trigger-item
div.trigger-content
div.trigger-text
| {{{_'r-set-color'}}}
button.trigger-button.trigger-button-color.js-show-color-palette(
id="color-action"
class="card-details-{{cardColorButton}}")
| {{{_ cardColorButtonText }}}
div.trigger-button.js-set-color-action.js-goto-rules
i.fa.fa-plus
template(name="setCardActionsColorPopup")
form.edit-label
.palette-colors: each colors
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
@@ -1,6 +1,20 @@
let cardColors;
Meteor.startup(() => {
cardColors = Cards.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
onCreated() {
this.subscribe('allRules');
this.cardColorButtonValue = new ReactiveVar('green');
},
cardColorButton() {
return this.cardColorButtonValue.get();
},
cardColorButtonText() {
return `color-${ this.cardColorButtonValue.get() }`;
},
labels() {
@@ -112,7 +126,63 @@ BlazeComponent.extendComponent({
boardId,
});
},
'click .js-show-color-palette'(event){
const funct = Popup.open('setCardActionsColor');
const colorButton = this.find('#color-action');
if (colorButton.value === '') {
colorButton.value = 'green';
}
funct.call(this, event);
},
'click .js-set-color-action' (event) {
const ruleName = this.data().ruleName.get();
const trigger = this.data().triggerVar.get();
const selectedColor = this.cardColorButtonValue.get();
const boardId = Session.get('currentBoard');
const desc = Utils.getTriggerActionDesc(event, this);
const triggerId = Triggers.insert(trigger);
const actionId = Actions.insert({
actionType: 'setColor',
selectedColor,
boardId,
desc,
});
Rules.insert({
title: ruleName,
triggerId,
actionId,
boardId,
});
},
}];
},
}).register('cardActions');
BlazeComponent.extendComponent({
onCreated() {
this.currentAction = this.currentData();
this.colorButtonValue = Popup.getOpenerComponent().cardColorButtonValue;
this.currentColor = new ReactiveVar(this.colorButtonValue.get());
},
colors() {
return cardColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.colorButtonValue.set(this.currentColor.get());
Popup.close();
},
}];
},
}).register('setCardActionsColorPopup');
+9
View File
@@ -174,6 +174,15 @@
top:30px
.trigger-button.trigger-button-person
right:-40px
.trigger-button.trigger-button-color
top: unset
position: unset
transform: unset
font-size: 16px
width:auto
padding-left: 10px
padding-right: 10px
height:40px
.trigger-item.trigger-item-mail
height:300px
@@ -1,13 +1,13 @@
template(name="cardTriggers")
div.trigger-item
div.trigger-content
div.trigger-text
div.trigger-text
| {{_'r-when-a-label-is'}}
div.trigger-dropdown
select(id="label-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
@@ -21,20 +21,20 @@ template(name="cardTriggers")
div.trigger-item
div.trigger-content
div.trigger-text
div.trigger-text
| {{_'r-when-the-label-is'}}
div.trigger-dropdown
select(id="spec-label")
each labels
option(value="#{_id}")
= name
div.trigger-text
option(value="#{_id}" style="background-color: #{name}")
= translatedname
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="spec-label-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
@@ -48,13 +48,13 @@ template(name="cardTriggers")
div.trigger-item
div.trigger-content
div.trigger-text
div.trigger-text
| {{_'r-when-a-member'}}
div.trigger-dropdown
select(id="gen-member-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
@@ -69,17 +69,17 @@ template(name="cardTriggers")
div.trigger-item
div.trigger-content
div.trigger-text
div.trigger-text
| {{_'r-when-the-member'}}
div.trigger-dropdown
input(id="spec-member",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
input(id="spec-member",type=text,placeholder="{{_'r-name'}}")
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="spec-member-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
@@ -93,15 +93,15 @@ template(name="cardTriggers")
div.trigger-item
div.trigger-content
div.trigger-text
div.trigger-text
| {{_'r-when-a-attach'}}
div.trigger-text
div.trigger-text
| {{_'r-is'}}
div.trigger-dropdown
select(id="attach-action")
option(value="added") {{_'r-added-to'}}
option(value="removed") {{_'r-removed-from'}}
div.trigger-text
div.trigger-text
| {{_'r-a-card'}}
div.trigger-button.trigger-button-person.js-show-user-field
i.fa.fa-user
@@ -6,7 +6,10 @@ BlazeComponent.extendComponent({
const labels = Boards.findOne(Session.get('currentBoard')).labels;
for (let i = 0; i < labels.length; i++) {
if (labels[i].name === '' || labels[i].name === undefined) {
labels[i].name = labels[i].color.toUpperCase();
labels[i].name = labels[i].color;
labels[i].translatedname = `${TAPi18n.__(`color-${ labels[i].color}`)}`;
} else {
labels[i].translatedname = labels[i].name;
}
}
return labels;
@@ -1,5 +1,5 @@
template(name="swimlaneHeader")
.swimlane-header-wrap.js-swimlane-header
.swimlane-header-wrap.js-swimlane-header(class='{{#if colorClass}}swimlane-{{colorClass}}{{/if}}')
+inlinedForm
+editSwimlaneTitleForm
else
@@ -8,6 +8,7 @@ template(name="swimlaneHeader")
= title
.swimlane-header-menu
unless currentUser.isCommentOnly
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon
a.fa.fa-navicon.js-open-swimlane-menu
template(name="editSwimlaneTitleForm")
@@ -19,5 +20,25 @@ template(name="editSwimlaneTitleForm")
template(name="swimlaneActionPopup")
unless currentUser.isCommentOnly
ul.pop-over-list
li: a.js-set-swimlane-color {{_ 'select-color'}}
hr
ul.pop-over-list
li: a.js-close-swimlane {{_ 'archive-swimlane'}}
template(name="swimlaneAddPopup")
unless currentUser.isCommentOnly
form
input.swimlane-name-input.full-line(type="text" placeholder="{{_ 'add-swimlane'}}"
autocomplete="off" autofocus)
.edit-controls.clearfix
button.primary.confirm(type="submit") {{_ 'add'}}
template(name="setSwimlaneColorPopup")
form.edit-label
.palette-colors: each colors
span.card-label.palette-color.js-palette-color(class="card-details-{{color}}")
if(isSelected color)
i.fa.fa-check
button.primary.confirm.js-submit {{_ 'save'}}
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
@@ -1,3 +1,10 @@
const { calculateIndexData } = Utils;
let swimlaneColors;
Meteor.startup(() => {
swimlaneColors = Swimlanes.simpleSchema()._schema.color.allowedValues;
});
BlazeComponent.extendComponent({
editTitle(evt) {
evt.preventDefault();
@@ -11,15 +18,82 @@ BlazeComponent.extendComponent({
events() {
return [{
'click .js-open-swimlane-menu': Popup.open('swimlaneAction'),
'click .js-open-add-swimlane-menu': Popup.open('swimlaneAdd'),
submit: this.editTitle,
}];
},
}).register('swimlaneHeader');
Template.swimlaneActionPopup.events({
'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
'click .js-close-swimlane' (evt) {
evt.preventDefault();
this.archive();
Popup.close();
},
});
BlazeComponent.extendComponent({
onCreated() {
this.currentSwimlane = this.currentData();
},
events() {
return [{
submit(evt) {
evt.preventDefault();
const currentBoard = Boards.findOne(Session.get('currentBoard'));
const nextSwimlane = currentBoard.nextSwimlane(this.currentSwimlane);
const titleInput = this.find('.swimlane-name-input');
const title = titleInput.value.trim();
const sortValue = calculateIndexData(this.currentSwimlane, nextSwimlane, 1);
if (title) {
Swimlanes.insert({
title,
boardId: Session.get('currentBoard'),
sort: sortValue.base,
});
titleInput.value = '';
titleInput.focus();
}
// XXX ideally, we should move the popup to the newly
// created swimlane so a user can add more than one swimlane
// with a minimum of interactions
Popup.close();
},
}];
},
}).register('swimlaneAddPopup');
BlazeComponent.extendComponent({
onCreated() {
this.currentSwimlane = this.currentData();
this.currentColor = new ReactiveVar(this.currentSwimlane.color);
},
colors() {
return swimlaneColors.map((color) => ({ color, name: '' }));
},
isSelected(color) {
return this.currentColor.get() === color;
},
events() {
return [{
'click .js-palette-color'() {
this.currentColor.set(this.currentData().color);
},
'click .js-submit' () {
this.currentSwimlane.setColor(this.currentColor.get());
Popup.close();
},
'click .js-remove-color'() {
this.currentSwimlane.setColor(null);
Popup.close();
},
}];
},
}).register('setSwimlaneColorPopup');
+4 -28
View File
@@ -1,6 +1,7 @@
template(name="swimlane")
.swimlane.js-lists.js-swimlane
.swimlane
+swimlaneHeader
.swimlane.js-lists.js-swimlane
if isMiniScreen
if currentList
+list(currentList)
@@ -15,7 +16,7 @@ template(name="swimlane")
if currentCardIsInThisList _id ../_id
+cardDetails(currentCard)
if currentUser.isBoardMember
+addListAndSwimlaneForm
+addListForm
template(name="listsGroup")
.swimlane.list-group.js-lists
@@ -35,34 +36,9 @@ template(name="listsGroup")
if currentUser.isBoardMember
+addListForm
template(name="addListAndSwimlaneForm")
.list.list-composer.js-list-composer
.list-header
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
autocomplete="off" autofocus)
.edit-controls.clearfix
button.primary.confirm(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.open-list-composer.js-open-inlined-form
i.fa.fa-plus
| {{_ 'add-list'}}
.list-header
+inlinedForm(autoclose=false)
input.swimlane-name-input.full-line(type="text" placeholder="{{_ 'add-swimlane'}}"
autocomplete="off" autofocus)
.edit-controls.clearfix
button.primary.confirm(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.open-list-composer.js-open-inlined-form
i.fa.fa-plus
| {{_ 'add-swimlane'}}
template(name="addListForm")
.list.list-composer.js-list-composer
.list-header
.list-header-add
+inlinedForm(autoclose=false)
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
autocomplete="off" autofocus)
-42
View File
@@ -175,48 +175,6 @@ BlazeComponent.extendComponent({
},
}).register('addListForm');
BlazeComponent.extendComponent({
// Proxy
open() {
this.childComponents('inlinedForm')[0].open();
},
events() {
return [{
submit(evt) {
evt.preventDefault();
let titleInput = this.find('.list-name-input');
if (titleInput) {
const title = titleInput.value.trim();
if (title) {
Lists.insert({
title,
boardId: Session.get('currentBoard'),
sort: $('.list').length,
});
titleInput.value = '';
titleInput.focus();
}
} else {
titleInput = this.find('.swimlane-name-input');
const title = titleInput.value.trim();
if (title) {
Swimlanes.insert({
title,
boardId: Session.get('currentBoard'),
sort: $('.swimlane').length,
});
titleInput.value = '';
titleInput.focus();
}
}
},
}];
},
}).register('addListAndSwimlaneForm');
Template.swimlane.helpers({
canSeeAddList() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
+91 -11
View File
@@ -7,7 +7,7 @@
display: flex
flex-direction: row
overflow: 0;
max-height: 100%
max-height: calc(100% - 26px)
&.placeholder
background-color: rgba(0, 0, 0, .2)
@@ -27,20 +27,15 @@
.swimlane-header-wrap
display: flex;
flex-direction: row;
flex: 0 0 50px;
padding-bottom: 30px;
border-bottom: 1px solid #CCC
flex: 1 0 100%;
background-color: #ccc;
.swimlane-header
-ms-writing-mode: tb-rl;
writing-mode: vertical-rl;
transform: rotate(180deg);
font-size: 14px;
line-height: 50px;
margin-top: 50px;
padding: 5px 5px
font-weight: bold;
min-height: 9px;
width: 50px;
width: 100%;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
@@ -49,7 +44,92 @@
.swimlane-header-menu
position: absolute
padding: 20px 20px
padding: 5px 5px
.swimlane-header-plus-icon
margin-left: 5px
margin-right: 10px
.list-group
height: 100%
swimlane-color(background, color...)
background: background !important
if color
color: color !important //overwrite text for better visibility
.swimlane-white
swimlane-color(#ffffff, #4d4d4d) //Black text for better visibility
border: 1px solid #eee
.swimlane-green
swimlane-color(#3cb500, #ffffff) //White text for better visibility
.swimlane-yellow
swimlane-color(#fad900, #4d4d4d) //Black text for better visibility
.swimlane-orange
swimlane-color(#ff9f19, #4d4d4d) //Black text for better visibility
.swimlane-red
swimlane-color(#eb4646, #ffffff) //White text for better visibility
.swimlane-purple
swimlane-color(#a632db, #ffffff) //White text for better visibility
.swimlane-blue
swimlane-color(#0079bf, #ffffff) //White text for better visibility
.swimlane-pink
swimlane-color(#ff78cb, #4d4d4d) //Black text for better visibility
.swimlane-sky
swimlane-color(#00c2e0, #ffffff) //White text for better visibility
.swimlane-black
swimlane-color(#4d4d4d, #ffffff) //White text for better visibility
.swimlane-lime
swimlane-color(#51e898, #4d4d4d) //Black text for better visibility
.swimlane-silver
swimlane-color(unset, #4d4d4d) //Black text for better visibility
.swimlane-peachpuff
swimlane-color(#ffdab9, #4d4d4d) //Black text for better visibility
.swimlane-crimson
swimlane-color(#dc143c, #ffffff) //White text for better visibility
.swimlane-plum
swimlane-color(#dda0dd, #4d4d4d) //Black text for better visibility
.swimlane-darkgreen
swimlane-color(#006400, #ffffff) //White text for better visibility
.swimlane-slateblue
swimlane-color(#6a5acd, #ffffff) //White text for better visibility
.swimlane-magenta
swimlane-color(#ff00ff, #ffffff) //White text for better visibility
.swimlane-gold
swimlane-color(#ffd700, #4d4d4d) //Black text for better visibility
.swimlane-navy
swimlane-color(#000080, #ffffff) //White text for better visibility
.swimlane-gray
swimlane-color(#808080, #ffffff) //White text for better visibility
.swimlane-saddlebrown
swimlane-color(#8b4513, #ffffff) //White text for better visibility
.swimlane-paleturquoise
swimlane-color(#afeeee, #4d4d4d) //Black text for better visibility
.swimlane-mistyrose
swimlane-color(#ffe4e1, #4d4d4d) //Black text for better visibility
.swimlane-indigo
swimlane-color(#4b0082, #ffffff) //White text for better visibility
+76 -52
View File
@@ -1,20 +1,20 @@
{
"accept": "اقبلboard",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "ربط __attachment__ الى __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "علق على __comment__ : __card__",
"act-createBoard": "احدث __board__",
"act-createCard": "اضاف __card__ الى __list__",
"act-createCustomField": "created custom field __customField__",
"act-createList": "اضاف __list__ الى __board__",
"accept": "قبول",
"act-activity-notify": "اشعارات النشاط",
"act-addAttachment": "ربط __المرفق__ الى __بطاقة__",
"act-addSubtask": "تمة اضافة فرع المهمة __ قائمة التدقيق __ الى __ بطاقة",
"act-addChecklist": "تمة اضافة قائمة التدقيق __ قائمة التدقيق __ الى __ بطاقة",
"act-addChecklistItem": "تمة اضافة عنصر قائمة التدقيق __الى قائمة التدقيق __ قائمة التدقيق __ في __ بطاقة",
"act-addComment": "علق على __بطاقة__ : __تعليق__",
"act-createBoard": "احدث __لوحة__",
"act-createCard": "تمة اضافة __بطاقة__ الى __قائمة__",
"act-createCustomField": "احدث حقل مخصص __ حقل مخصص__",
"act-createList": "اضاف __قائمة__ الى __لوحة__",
"act-addBoardMember": "اضاف __member__ الى __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-archivedBoard": "__ لوح __ انتقل إلى الأرشيف",
"act-archivedCard": "__ بطاقة __ انتقلت إلى الأرشيف",
"act-archivedList": "__ القائمة __ انتقلت إلى الأرشيف",
"act-archivedSwimlane": "__خط السباحة__انتقل إلى الأرشيف",
"act-importBoard": "إستورد __board__",
"act-importCard": "إستورد __card__",
"act-importList": "إستورد __list__",
@@ -23,16 +23,16 @@
"act-removeBoardMember": "أزال __member__ من __board__",
"act-restoredCard": "أعاد __card__ إلى __board__",
"act-unjoinMember": "أزال __member__ من __card__",
"act-withBoardTitle": "__board__",
"act-withBoardTitle": "__لوح__",
"act-withCardTitle": "[__board__] __card__",
"actions": "الإجراءات",
"activities": "الأنشطة",
"activity": "النشاط",
"activity-added": "تمت إضافة %s ل %s",
"activity-archived": "%s moved to Archive",
"activity-archived": "%s انتقل الى الارشيف",
"activity-attached": "إرفاق %s ل %s",
"activity-created": "أنشأ %s",
"activity-customfield-created": "created custom field %s",
"activity-customfield-created": "%s احدت حقل مخصص",
"activity-excluded": "استبعاد %s عن %s",
"activity-imported": "imported %s into %s from %s",
"activity-imported-board": "imported %s from %s",
@@ -42,15 +42,15 @@
"activity-removed": "حذف %s إلى %s",
"activity-sent": "إرسال %s إلى %s",
"activity-unjoined": "غادر %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-subtask-added": "تم اضافة مهمة فرعية الى %s",
"activity-checked-item": "تحقق %s في قائمة التحقق %s من %s",
"activity-unchecked-item": "ازالة تحقق %s من قائمة التحقق %s من %s",
"activity-checklist-added": "أضاف قائمة تحقق إلى %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"activity-checklist-removed": "ازالة قائمة التحقق من %s",
"activity-checklist-completed": "تم انجاز قائمة التحقق %s من %s",
"activity-checklist-uncompleted": "لم يتم انجاز قائمة التحقق %s من %s",
"activity-checklist-item-added": "تم اضافة عنصر قائمة التحقق الى '%s' في %s",
"activity-checklist-item-removed": "تم ازالة عنصر قائمة التحقق الى '%s' في %s",
"add": "أضف",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
@@ -79,18 +79,18 @@
"and-n-other-card_plural": "And __count__ other بطاقات",
"apply": "طبق",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archive": "نقل الى الارشيف",
"archive-all": "نقل الكل الى الارشيف",
"archive-board": "نقل اللوح الى الارشيف",
"archive-card": "نقل البطاقة الى الارشيف",
"archive-list": "نقل القائمة الى الارشيف",
"archive-swimlane": "نقل خط السباحة الى الارشيف",
"archive-selection": "نقل التحديد إلى الأرشيف",
"archiveBoardPopup-title": "نقل الوح إلى الأرشيف",
"archived-items": "أرشيف",
"archived-boards": "Boards in Archive",
"archived-boards": "الالواح في الأرشيف",
"restore-board": "استعادة اللوحة",
"no-archived-boards": "No Boards in Archive.",
"no-archived-boards": "لا توجد لوحات في الأرشيف.",
"archives": "أرشيف",
"assign-member": "تعيين عضو",
"attached": "أُرفق)",
@@ -112,23 +112,23 @@
"boardChangeWatchPopup-title": "تغيير المتابعة",
"boardMenuPopup-title": "قائمة اللوحة",
"boards": "لوحات",
"board-view": "Board View",
"board-view-cal": "Calendar",
"board-view-swimlanes": "Swimlanes",
"board-view": "عرض اللوحات",
"board-view-cal": "التقويم",
"board-view-swimlanes": "خطوط السباحة",
"board-view-lists": "القائمات",
"bucket-example": "مثل « todo list » على سبيل المثال",
"cancel": "إلغاء",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-archived": "البطاقة منقولة الى الارشيف",
"board-archived": "اللوحات منقولة الى الارشيف",
"card-comments-title": "%s تعليقات لهذه البطاقة",
"card-delete-notice": "هذا حذف أبديّ . سوف تفقد كل الإجراءات المنوطة بهذه البطاقة",
"card-delete-pop": "سيتم إزالة جميع الإجراءات من تبعات النشاط، وأنك لن تكون قادرا على إعادة فتح البطاقة. لا يوجد التراجع.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "يمكنك نقل بطاقة إلى الأرشيف لإزالتها من اللوحة والمحافظة على النشاط.",
"card-due": "مستحق",
"card-due-on": "مستحق في",
"card-spent": "Spent Time",
"card-spent": "امضى وقتا",
"card-edit-attachments": "تعديل المرفقات",
"card-edit-custom-fields": "Edit custom fields",
"card-edit-custom-fields": "تعديل الحقل المعدل",
"card-edit-labels": "تعديل العلامات",
"card-edit-members": "تعديل الأعضاء",
"card-labels-title": "تعديل علامات البطاقة.",
@@ -136,8 +136,8 @@
"card-start": "بداية",
"card-start-on": "يبدأ في",
"cardAttachmentsPopup-title": "إرفاق من",
"cardCustomField-datePopup-title": "Change date",
"cardCustomFieldsPopup-title": "Edit custom fields",
"cardCustomField-datePopup-title": "تغير التاريخ",
"cardCustomFieldsPopup-title": "تعديل الحقل المعدل",
"cardDeletePopup-title": "حذف البطاقة ?",
"cardDetailsActionsPopup-title": "إجراءات على البطاقة",
"cardLabelsPopup-title": "علامات",
@@ -145,9 +145,9 @@
"cardMorePopup-title": "المزيد",
"cards": "بطاقات",
"cards-count": "بطاقات",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-linkedCard": "Linked Card",
"casSignIn": "تسجيل الدخول مع CAS",
"cardType-card": "بطاقة",
"cardType-linkedCard": "البطاقة المرتبطة",
"cardType-linkedBoard": "Linked Board",
"change": "Change",
"change-avatar": "تعديل الصورة الشخصية",
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "تعليق",
"comment-placeholder": "أكتب تعليق",
"comment-only": "التعليق فقط",
@@ -187,7 +203,7 @@
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?",
"copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة",
"linkCardPopup-title": "Link Card",
"linkCardPopup-title": "ربط البطاقة",
"searchCardPopup-title": "Search Card",
"copyCardPopup-title": "نسخ البطاقة",
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
@@ -319,15 +335,17 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "نقل بطاقات هذه القائمة",
"list-select-cards": "تحديد بطاقات هذه القائمة",
"set-color-list": "Set Color",
"listActionPopup-title": "قائمة الإجراءات",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"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 move a list to Archive to remove it from the board and preserve the activity.",
"lists": "القائمات",
"swimlanes": "Swimlanes",
"swimlanes": "خطوط السباحة",
"log-out": "تسجيل الخروج",
"log-in": "تسجيل الدخول",
"loginPopup-title": "تسجيل الدخول",
@@ -480,6 +498,7 @@
"OS_Totalmem": "الذاكرة الكلية لنظام التشغيل",
"OS_Type": "نوع نظام التشغيل",
"OS_Uptime": "مدة تشغيل نظام التشغيل",
"days": "days",
"hours": "الساعات",
"minutes": "الدقائق",
"seconds": "الثواني",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -570,7 +593,7 @@
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-archive": "نقل الى الارشيف",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "أضف",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+98 -74
View File
@@ -11,10 +11,10 @@
"act-createCustomField": "създаде собствено поле __customField__",
"act-createList": "добави __list__ към __board__",
"act-addBoardMember": "добави __member__ към __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-archivedBoard": "__board__ е преместен в Архива",
"act-archivedCard": "__card__ е преместена в Архива",
"act-archivedList": "__list__ е преместен в Архива",
"act-archivedSwimlane": "__swimlane__ е преместен в Архива",
"act-importBoard": "импортира __board__",
"act-importCard": "импортира __card__",
"act-importList": "импортира __list__",
@@ -23,13 +23,13 @@
"act-removeBoardMember": "премахна __member__ от __board__",
"act-restoredCard": "възстанови __card__ в __board__",
"act-unjoinMember": "премахна __member__ от __card__",
"act-withBoardTitle": "__board__",
"act-withBoardTitle": "__board__ ",
"act-withCardTitle": "[__board__] __card__",
"actions": "Действия",
"activities": "Действия",
"activity": "Дейности",
"activity-added": "добави %s към %s",
"activity-archived": "%s moved to Archive",
"activity-archived": "%s е преместена в Архива",
"activity-attached": "прикачи %s към %s",
"activity-created": "създаде %s",
"activity-customfield-created": "създаде собствено поле %s",
@@ -48,14 +48,14 @@
"activity-checklist-added": "добави списък със задачи към %s",
"activity-checklist-removed": "премахна списък със задачи от %s",
"activity-checklist-completed": "завърши списък със задачи %s на %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-uncompleted": "\"отзавърши\" чеклистта %s в %s",
"activity-checklist-item-added": "добави точка към '%s' в/във %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"activity-checklist-item-removed": "премахна точка от '%s' в %s",
"add": "Добави",
"activity-checked-item-card": "checked %s in checklist %s",
"activity-unchecked-item-card": "unchecked %s in checklist %s",
"activity-checklist-completed-card": "completed the checklist %s",
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"activity-checked-item-card": "отбеляза %s в чеклист %s",
"activity-unchecked-item-card": "размаркира %s в чеклист %s",
"activity-checklist-completed-card": "завърши чеклиста %s",
"activity-checklist-uncompleted-card": "\"отзавърши\" чеклистта %s",
"add-attachment": "Добави прикачен файл",
"add-board": "Добави Табло",
"add-card": "Добави карта",
@@ -79,18 +79,18 @@
"and-n-other-card_plural": "И __count__ други карти",
"apply": "Приложи",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archive": "Премести в Архива",
"archive-all": "Премести всички в Архива",
"archive-board": "Премести Таблото в Архива",
"archive-card": "Премести Картата в Архива",
"archive-list": "Премести Списъка в Архива",
"archive-swimlane": "Премести Коридора в Архива",
"archive-selection": "Премести избраното в Архива",
"archiveBoardPopup-title": "Да преместя ли Таблото в Архива?",
"archived-items": "Архив",
"archived-boards": "Boards in Archive",
"archived-boards": "Табла в Архива",
"restore-board": "Възстанови Таблото",
"no-archived-boards": "No Boards in Archive.",
"no-archived-boards": "Няма Табла в Архива.",
"archives": "Архив",
"assign-member": "Възложи на член от екипа",
"attached": "прикачен",
@@ -118,12 +118,12 @@
"board-view-lists": "Списъци",
"bucket-example": "Like “Bucket List” for example",
"cancel": "Cancel",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-archived": "Тази карта е преместена в Архива.",
"board-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 move a card to Archive to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "Можете да преместите картата в Архива, за да я премахнете от Таблото и така да запазите активността в него.",
"card-due": "Готова за",
"card-due-on": "Готова за",
"card-spent": "Изработено време",
@@ -166,17 +166,33 @@
"clipboard": "Клипборда или с драг & дроп",
"close": "Затвори",
"close-board": "Затвори Таблото",
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"close-board-pop": "Ще можете да възстановите Таблото като натиснете на бутона \"Архив\" в началото на хедъра.",
"color-black": "черно",
"color-blue": "синьо",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "зелено",
"color-indigo": "indigo",
"color-lime": "лайм",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "оранжево",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "розово",
"color-plum": "plum",
"color-purple": "пурпурно",
"color-red": "червено",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "светло синьо",
"color-slateblue": "slateblue",
"color-white": "бяло",
"color-yellow": "жълто",
"unset-color": "Unset",
"comment": "Коментирай",
"comment-placeholder": "Напиши коментар",
"comment-only": "Само коментар",
@@ -315,17 +331,19 @@
"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": "Move all cards in this list to Archive",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-archive-cards": "Премести всички карти от този списък в Архива",
"list-archive-cards-pop": "Това ще премахне всички карти от този Списък от Таблото. За да видите картите в Архива и да ги върнете натиснете на \"Меню\" > \"Архив\".",
"list-move-cards": "Премести всички карти в този списък",
"list-select-cards": "Избери всички карти в този списък",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Импорт на карта от Trello",
"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 move a list to Archive to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "Можете да преместите списъка в Архива, за да го премахнете от Таблото и така да запазите активността в него.",
"lists": "Списъци",
"swimlanes": "Коридори",
"log-out": "Изход",
@@ -345,9 +363,9 @@
"muted-info": "You will never be notified of any changes in this board",
"my-boards": "Моите табла",
"name": "Име",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-archived-cards": "Няма карти в Архива.",
"no-archived-lists": "Няма списъци в Архива.",
"no-archived-swimlanes": "Няма коридори в Архива.",
"no-results": "No results",
"normal": "Normal",
"normal-desc": "Can view and edit cards. Can't change settings.",
@@ -427,7 +445,7 @@
"uploaded-avatar": "Качихте аватар",
"username": "Потребителско име",
"view-it": "View it",
"warn-list-archived": "warning: this card is in an list at Archive",
"warn-list-archived": "внимание: тази карта е в списък в Архива",
"watch": "Наблюдавай",
"watching": "Наблюдава",
"watching-info": "You will be notified of any change in this board",
@@ -446,7 +464,7 @@
"disable-self-registration": "Disable Self-Registration",
"invite": "Покани",
"invite-people": "Покани хора",
"to-boards": "To board(s)",
"to-boards": "в табло/а",
"email-addresses": "Имейл адреси",
"smtp-host-description": "Адресът на SMTP сървъра, който обслужва Вашите имейли.",
"smtp-port-description": "Портът, който Вашият SMTP сървър използва за изходящи имейли.",
@@ -480,6 +498,7 @@
"OS_Totalmem": "ОС Общо памет",
"OS_Type": "Тип ОС",
"OS_Uptime": "OS Ъптайм",
"days": "дни",
"hours": "часа",
"minutes": "минути",
"seconds": "секунди",
@@ -500,15 +519,19 @@
"card-end-on": "Завършена на",
"editCardReceivedDatePopup-title": "Промени датата на получаване",
"editCardEndDatePopup-title": "Промени датата на завършване",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Разпределена от",
"requested-by": "Поискан от",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
"delete-board": "Delete Board",
"boardDeletePopup-title": "Изтриване на Таблото?",
"delete-board": "Изтрий таблото",
"default-subtasks-board": "Подзадачи за табло __board__",
"default": "по подразбиране",
"queue": "Queue",
"queue": "Опашка",
"subtask-settings": "Настройки на Подзадачите",
"boardSubtaskSettingsPopup-title": "Настройки за Подзадачите за това Табло",
"show-subtasks-field": "Картата може да има подзадачи",
@@ -523,40 +546,40 @@
"parent-card": "Карта-източник",
"source-board": "Source board",
"no-parent": "Не показвай източника",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-added-label": "добави етикет '%s' към %s",
"activity-removed-label": "премахна етикет '%s' от %s",
"activity-delete-attach": "изтри прикачен файл от %s",
"activity-added-label-card": "добави етикет '%s'",
"activity-removed-label-card": "премахна етикет '%s'",
"activity-delete-attach-card": "изтри прикачения файл",
"r-rule": "Правило",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-add-trigger": "Добави спусък",
"r-add-action": "Добави действие",
"r-board-rules": "Правила за таблото",
"r-add-rule": "Добави правилото",
"r-view-rule": "Виж правилото",
"r-delete-rule": "Изтрий правилото",
"r-new-rule-name": "Заглавие за новото правило",
"r-no-rules": "Няма правила",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "the board",
"r-list": "list",
"r-when-a-card": "Когато карта",
"r-is": "е",
"r-is-moved": "преместена",
"r-added-to": "добавена в",
"r-removed-from": "премахната от",
"r-the-board": "таблото",
"r-list": "списък",
"set-filter": "Set Filter",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-a-card": "a card",
"r-archived": "Преместено в Архива",
"r-unarchived": "Възстановено от Архива",
"r-a-card": "карта",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-name": "име",
"r-when-a-attach": "When an attachment",
"r-when-a-checklist": "When a checklist is",
"r-when-the-checklist": "When the checklist",
@@ -566,18 +589,19 @@
"r-when-the-item": "When the checklist item",
"r-checked": "Checked",
"r-unchecked": "Unchecked",
"r-move-card-to": "Move card to",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-move-card-to": "Премести картата в",
"r-top-of": "началото на",
"r-bottom-of": "края на",
"r-its-list": "списъка й",
"r-archive": "Премести в Архива",
"r-unarchive": "Възстанови от Архива",
"r-card": "карта",
"r-add": "Добави",
"r-remove": "Remove",
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
@@ -598,8 +622,8 @@
"r-d-send-email-to": "to",
"r-d-send-email-subject": "subject",
"r-d-send-email-message": "message",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-archive": "Премести картата в Архива",
"r-d-unarchive": "Възстанови картата от Архива",
"r-d-add-label": "Add label",
"r-d-remove-label": "Remove label",
"r-create-card": "Create new card",
@@ -613,14 +637,14 @@
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-check-of-list": "of checklist",
"r-d-add-checklist": "Add checklist",
"r-d-remove-checklist": "Remove checklist",
"r-d-add-checklist": "Добави чеклист",
"r-d-remove-checklist": "Премахни чеклист",
"r-by": "by",
"r-add-checklist": "Add checklist",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-add-checklist": "Добави чеклист",
"r-with-items": "с точки",
"r-items-list": "точка1,точка2,точка3",
"r-add-swimlane": "Добави коридор",
"r-swimlane-name": "име на коридора",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "When a card is moved to another list",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "du",
"color-blue": "glas",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "gwer",
"color-indigo": "indigo",
"color-lime": "melen sitroñs",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orañjez",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "roz",
"color-plum": "plum",
"color-purple": "mouk",
"color-red": "ruz",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "pers",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "melen",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Muioc’h",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+89 -65
View File
@@ -1,38 +1,38 @@
{
"accept": "Accepta",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "adjuntat __attachment__ a __card__",
"act-activity-notify": "Notificació d'activitat",
"act-addAttachment": "afegit__adjunt__ a la __fitxa__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "afegida la checklist _checklist__ a __card__",
"act-addChecklistItem": "afegit __checklistItem__ a la checklist __checklist__ on __card__",
"act-addComment": "comentat a __card__: __comment__",
"act-createBoard": "creat __board__",
"act-createBoard": "nou __tauler__",
"act-createCard": "afegit/da __card__ a __list__",
"act-createCustomField": "created custom field __customField__",
"act-createList": "afegit/da __list__ a __board__",
"act-addBoardMember": "afegit/da __member__ a __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-createList": "llista __afegida__ al __tauler__",
"act-addBoardMember": "usuari __afegit__ al __tauler__",
"act-archivedBoard": "__tauler__ mogut al Arxiu",
"act-archivedCard": "__fitxa__ moguda al Arxiu",
"act-archivedList": "__llista__ mogud al Arxiu",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-importBoard": "__board__ importat",
"act-importBoard": "tauler __importat__",
"act-importCard": "__card__ importat",
"act-importList": "__list__ importat",
"act-joinMember": "afegit/da __member__ a __card__",
"act-moveCard": "mou __card__ de __oldList__ a __list__",
"act-removeBoardMember": "elimina __member__ de __board__",
"act-restoredCard": "recupera __card__ a __board__",
"act-removeBoardMember": "elimina __usuari__ del __tauler__",
"act-restoredCard": "fitxa __restaurada__ al __tauler__",
"act-unjoinMember": "elimina __member__ de __card__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"act-withBoardTitle": "__tauler__",
"act-withCardTitle": "[__tauler__] __fitxa__",
"actions": "Accions",
"activities": "Activitats",
"activity": "Activitat",
"activity-added": "ha afegit %s a %s",
"activity-archived": "%s moved to Archive",
"activity-archived": "%s mogut al Arxiu",
"activity-attached": "ha adjuntat %s a %s",
"activity-created": "ha creat %s",
"activity-customfield-created": "created custom field %s",
"activity-customfield-created": "camp personalitzat creat %s",
"activity-excluded": "ha exclòs %s de %s",
"activity-imported": "importat %s dins %s des de %s",
"activity-imported-board": "importat %s des de %s",
@@ -58,11 +58,11 @@
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"add-attachment": "Afegeix adjunt",
"add-board": "Afegeix Tauler",
"add-card": "Afegeix fitxa",
"add-card": "Afegeix Fitxa",
"add-swimlane": "Afegix Carril de Natació",
"add-subtask": "Add Subtask",
"add-subtask": "Afegir Subtasca",
"add-checklist": "Afegeix checklist",
"add-checklist-item": "Afegeix un ítem",
"add-checklist-item": "Afegeix un ítem al checklist",
"add-cover": "Afegeix coberta",
"add-label": "Afegeix etiqueta",
"add-list": "Afegeix llista",
@@ -70,27 +70,27 @@
"added": "Afegit",
"addMemberPopup-title": "Membres",
"admin": "Administrador",
"admin-desc": "Pots veure i editar fitxes, eliminar membres, i canviar la configuració del tauler",
"admin-announcement": "Bàndol",
"admin-announcement-active": "Activar bàndol del Sistema",
"admin-announcement-title": "Bàndol de l'administració",
"admin-desc": "Pots veure i editar fitxes, eliminar usuaris, i canviar la configuració del tauler.",
"admin-announcement": "Alertes",
"admin-announcement-active": "Activar alertes del Sistema",
"admin-announcement-title": "Alertes d'administració",
"all-boards": "Tots els taulers",
"and-n-other-card": "And __count__ other card",
"and-n-other-card_plural": "And __count__ other cards",
"apply": "Aplica",
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive": "Moure al arxiu",
"archive-all": "Moure tot al arxiu",
"archive-board": "Moure Tauler al Arxiu",
"archive-card": "Moure Fitxa al Arxiu",
"archive-list": "Moure Llista al Arxiu",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archive-selection": "Moure selecció al Arxiu",
"archiveBoardPopup-title": "Moure el Tauler al Arxiu?",
"archived-items": "Desa",
"archived-boards": "Boards in Archive",
"archived-boards": "Taulers al Arxiu",
"restore-board": "Restaura Tauler",
"no-archived-boards": "No Boards in Archive.",
"no-archived-boards": "No hi han Taulers al Arxiu.",
"archives": "Desa",
"assign-member": "Assignar membre",
"attached": "adjuntat",
@@ -98,28 +98,28 @@
"attachment-delete-pop": "L'esborrat d'un arxiu adjunt és permanent. No es pot desfer.",
"attachmentDeletePopup-title": "Esborrar adjunt?",
"attachments": "Adjunts",
"auto-watch": "Automàticament segueix el taulers quan són creats",
"auto-watch": "Segueix automàticament el taulers quan són creats",
"avatar-too-big": "L'avatar es massa gran (70KM max)",
"back": "Enrere",
"board-change-color": "Canvia el color",
"board-nb-stars": "%s estrelles",
"board-not-found": "No s'ha trobat el tauler",
"board-private-info": "Aquest tauler serà <strong> privat </ strong>.",
"board-public-info": "Aquest tauler serà <strong> públic </ strong>.",
"boardChangeColorPopup-title": "Canvia fons",
"board-private-info": "Aquest tauler serà <strong> privat.",
"board-public-info": "Aquest tauler serà <strong> públic.",
"boardChangeColorPopup-title": "Canvia fons del tauler",
"boardChangeTitlePopup-title": "Canvia el nom tauler",
"boardChangeVisibilityPopup-title": "Canvia visibilitat",
"boardChangeWatchPopup-title": "Canvia seguiment",
"boardMenuPopup-title": "Menú del tauler",
"boards": "Taulers",
"board-view": "Visió del tauler",
"board-view-cal": "Calendar",
"board-view-cal": "Calendari",
"board-view-swimlanes": "Carrils de Natació",
"board-view-lists": "Llistes",
"bucket-example": "Igual que “Bucket List”, per exemple",
"cancel": "Cancel·la",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-archived": "Aquesta fitxa ha estat moguda al Arxiu.",
"board-archived": "Aquest tauler s'ha mogut al arxiu",
"card-comments-title": "Aquesta fitxa té %s comentaris.",
"card-delete-notice": "L'esborrat és permanent. Perdreu totes les accions associades a aquesta fitxa.",
"card-delete-pop": "Totes les accions s'eliminaran de l'activitat i no podreu tornar a obrir la fitxa. No es pot desfer.",
@@ -128,7 +128,7 @@
"card-due-on": "Finalitza a",
"card-spent": "Temps Dedicat",
"card-edit-attachments": "Edita arxius adjunts",
"card-edit-custom-fields": "Edit custom fields",
"card-edit-custom-fields": "Editar camps personalitzats",
"card-edit-labels": "Edita etiquetes",
"card-edit-members": "Edita membres",
"card-labels-title": "Canvia les etiquetes de la fitxa",
@@ -136,8 +136,8 @@
"card-start": "Comença",
"card-start-on": "Comença a",
"cardAttachmentsPopup-title": "Adjunta des de",
"cardCustomField-datePopup-title": "Change date",
"cardCustomFieldsPopup-title": "Edit custom fields",
"cardCustomField-datePopup-title": "Canviar data",
"cardCustomFieldsPopup-title": "Editar camps personalitzats",
"cardDeletePopup-title": "Esborrar fitxa?",
"cardDetailsActionsPopup-title": "Accions de fitxes",
"cardLabelsPopup-title": "Etiquetes",
@@ -146,7 +146,7 @@
"cards": "Fitxes",
"cards-count": "Fitxes",
"casSignIn": "Sign In with CAS",
"cardType-card": "Card",
"cardType-card": "Fitxa",
"cardType-linkedCard": "Linked Card",
"cardType-linkedBoard": "Linked Board",
"change": "Canvia",
@@ -159,7 +159,7 @@
"changePasswordPopup-title": "Canvia la contrasenya",
"changePermissionsPopup-title": "Canvia permisos",
"changeSettingsPopup-title": "Canvia configuració",
"subtasks": "Subtasks",
"subtasks": "Subtasca",
"checklists": "Checklists",
"click-to-star": "Fes clic per destacar aquest tauler.",
"click-to-unstar": "Fes clic per deixar de destacar aquest tauler.",
@@ -169,26 +169,42 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "negre",
"color-blue": "blau",
"color-crimson": "carmesí",
"color-darkgreen": "verd fosc",
"color-gold": "daurat",
"color-gray": "gris",
"color-green": "verd",
"color-indigo": "índigo",
"color-lime": "llima",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "marina",
"color-orange": "taronja",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "rosa",
"color-plum": "pruna",
"color-purple": "púrpura",
"color-red": "vermell",
"color-saddlebrown": "saddlebrown",
"color-silver": "plata",
"color-sky": "cel",
"color-slateblue": "slateblue",
"color-white": "blanc",
"color-yellow": "groc",
"unset-color": "Unset",
"comment": "Comentari",
"comment-placeholder": "Escriu un comentari",
"comment-only": "Només comentaris",
"comment-only-desc": "Només pots fer comentaris a les fitxes",
"no-comments": "No comments",
"no-comments": "Sense comentaris",
"no-comments-desc": "Can not see comments and activities.",
"computer": "Ordinador",
"confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?",
"confirm-subtask-delete-dialog": "Esteu segur que voleu eliminar la subtasca?",
"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",
"linkCardPopup-title": "Link Card",
"searchCardPopup-title": "Search Card",
"searchCardPopup-title": "Buscar Fitxa",
"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",
@@ -197,20 +213,20 @@
"createBoardPopup-title": "Crea tauler",
"chooseBoardSourcePopup-title": "Importa Tauler",
"createLabelPopup-title": "Crea etiqueta",
"createCustomField": "Create Field",
"createCustomFieldPopup-title": "Create Field",
"createCustomField": "Crear camp",
"createCustomFieldPopup-title": "Crear camp",
"current": "Actual",
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
"custom-field-checkbox": "Checkbox",
"custom-field-date": "Data",
"custom-field-dropdown": "Dropdown List",
"custom-field-dropdown-none": "(none)",
"custom-field-dropdown-options": "List Options",
"custom-field-dropdown-options": "Llista d'opcions",
"custom-field-dropdown-options-placeholder": "Press enter to add more options",
"custom-field-dropdown-unknown": "(unknown)",
"custom-field-number": "Number",
"custom-field-text": "Text",
"custom-fields": "Custom Fields",
"custom-fields": "Camps Personalitzats",
"date": "Data",
"decline": "Declina",
"default-avatar": "Avatar per defecte",
@@ -230,7 +246,7 @@
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Canvia data d'inici",
"editCardDueDatePopup-title": "Canvia data de finalització",
"editCustomFieldPopup-title": "Edit Field",
"editCustomFieldPopup-title": "Modificar camp",
"editCardSpentTimePopup-title": "Canvia temps dedicat",
"editLabelPopup-title": "Canvia etiqueta",
"editNotificationPopup-title": "Edita la notificació",
@@ -271,7 +287,7 @@
"filter-on": "Filtra per",
"filter-on-desc": "Estau filtrant fitxes en aquest tauler. Feu clic aquí per editar el filtre.",
"filter-to-selection": "Filtra selecció",
"advanced-filter-label": "Advanced Filter",
"advanced-filter-label": "Filtre avançat",
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
"fullname": "Nom complet",
"header-logo-title": "Torna a la teva pàgina de taulers",
@@ -279,7 +295,7 @@
"headerBarCreateBoardPopup-title": "Crea tauler",
"home": "Inici",
"import": "importa",
"link": "Link",
"link": "Enllaç",
"import-board": "Importa tauler",
"import-board-c": "Importa tauler",
"import-board-title-trello": "Importa tauler des de Trello",
@@ -296,7 +312,7 @@
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-show-user-mapping": "Revisa l'assignació de membres",
"import-user-select": "Pick your existing user you want to use as this member",
"importMapMembersAddPopup-title": "Select member",
"importMapMembersAddPopup-title": "Selecciona un usuari",
"info": "Versió",
"initials": "Inicials",
"invalid-date": "Data invàlida",
@@ -315,12 +331,14 @@
"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": "Move all cards in this list to Archive",
"list-archive-cards": "Moure totes les fitxes en aquesta llista al Arxiu",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Mou totes les fitxes d'aquesta llista",
"list-select-cards": "Selecciona totes les fitxes d'aquesta llista",
"set-color-list": "Set Color",
"listActionPopup-title": "Accions de la llista",
"swimlaneActionPopup-title": "Accions de Carril de Natació",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "importa una fitxa de Trello",
"listMorePopup-title": "Més",
"link-list": "Enllaça a aquesta llista",
@@ -345,8 +363,8 @@
"muted-info": "No seràs notificat dels canvis en aquest tauler",
"my-boards": "Els meus taulers",
"name": "Nom",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-cards": "No hi ha fitxes a l'arxiu.",
"no-archived-lists": "No hi ha llistes al arxiu.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-results": "Sense resultats",
"normal": "Normal",
@@ -383,7 +401,7 @@
"restore": "Restaura",
"save": "Desa",
"search": "Cerca",
"rules": "Rules",
"rules": "Regles",
"search-cards": "Cerca títols de fitxa i descripcions en aquest tauler",
"search-example": "Text que cercar?",
"select-color": "Selecciona color",
@@ -418,7 +436,7 @@
"title": "Títol",
"tracking": "En seguiment",
"tracking-info": "Seràs notificat per cada canvi a aquelles fitxes de les que n'eres creador o membre",
"type": "Type",
"type": "Tipus",
"unassign-member": "Desassignar membre",
"unsaved-description": "Tens una descripció sense desar.",
"unwatch": "Suprimeix observació",
@@ -453,7 +471,7 @@
"smtp-tls-description": "Activa suport TLS pel servidor SMTP",
"smtp-host": "Servidor SMTP",
"smtp-port": "Port SMTP",
"smtp-username": "Nom d'Usuari",
"smtp-username": "Nom d'usuari",
"smtp-password": "Contrasenya",
"smtp-tls": "Suport TLS",
"send-from": "De",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Memòria total",
"OS_Type": "Tipus de SO",
"OS_Uptime": "Temps d'activitat",
"days": "days",
"hours": "hores",
"minutes": "minuts",
"seconds": "segons",
@@ -500,8 +519,12 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assignat Per",
"requested-by": "Demanat Per",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
"delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.",
"boardDeletePopup-title": "Delete Board?",
@@ -532,12 +555,12 @@
"r-rule": "Rule",
"r-add-trigger": "Add trigger",
"r-add-action": "Add action",
"r-board-rules": "Board rules",
"r-board-rules": "Regles del tauler",
"r-add-rule": "Add rule",
"r-view-rule": "View rule",
"r-delete-rule": "Delete rule",
"r-new-rule-name": "New rule title",
"r-no-rules": "No rules",
"r-no-rules": "No hi han regles",
"r-when-a-card": "When a card",
"r-is": "is",
"r-is-moved": "is moved",
@@ -570,7 +593,7 @@
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "its list",
"r-archive": "Move to Archive",
"r-archive": "Moure al arxiu",
"r-unarchive": "Restore from Archive",
"r-card": "card",
"r-add": "Afegeix",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+118 -94
View File
@@ -2,7 +2,7 @@
"accept": "Přijmout",
"act-activity-notify": "Notifikace aktivit",
"act-addAttachment": "přiložen __attachment__ do __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addSubtask": "přidán podúkol __checklist__ do __card__",
"act-addChecklist": "přidán checklist __checklist__ do __card__",
"act-addChecklistItem": "přidán __checklistItem__ do checklistu __checklist__ v __card__",
"act-addComment": "komentář k __card__: __comment__",
@@ -11,10 +11,10 @@
"act-createCustomField": "vytvořeno vlastní pole __customField__",
"act-createList": "přidání __list__ do __board__",
"act-addBoardMember": "přidání __member__ do __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-archivedBoard": "__board__ byl přesunut do archivu",
"act-archivedCard": "__card__ byla přesunuta do archivu",
"act-archivedList": "__list__ byl přesunut do archivu",
"act-archivedSwimlane": "__swimlane__ bylo přesunuto do archivu",
"act-importBoard": "import __board__",
"act-importCard": "import __card__",
"act-importList": "import __list__",
@@ -29,7 +29,7 @@
"activities": "Aktivity",
"activity": "Aktivita",
"activity-added": "%s přidáno k %s",
"activity-archived": "%s moved to Archive",
"activity-archived": "%s bylo přesunuto do archivu",
"activity-attached": "přiloženo %s k %s",
"activity-created": "%s vytvořeno",
"activity-customfield-created": "vytvořeno vlastní pole %s",
@@ -42,12 +42,12 @@
"activity-removed": "odstraněn %s z %s",
"activity-sent": "%s posláno na %s",
"activity-unjoined": "odpojen %s",
"activity-subtask-added": "added subtask to %s",
"activity-subtask-added": "podúkol přidán do %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "přidán checklist do %s",
"activity-checklist-removed": "odstraněn checklist z %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-completed": "dokončen checklist %s z %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-checklist-item-added": "přidána položka checklist do '%s' v %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
@@ -79,18 +79,18 @@
"and-n-other-card_plural": "A __count__ dalších karet",
"apply": "Použít",
"app-is-offline": "Načítá se, prosím čekejte. Obnovení stránky způsobí ztrátu dat. Pokud se načítání nedaří, zkontrolujte prosím server.",
"archive": "Move to Archive",
"archive-all": "Move All to Archive",
"archive-board": "Move Board to Archive",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
"archive-selection": "Move selection to Archive",
"archiveBoardPopup-title": "Move Board to Archive?",
"archive": "Přesunout do archivu",
"archive-all": "Přesunout vše do archivu",
"archive-board": "Přesunout tablo do archivu",
"archive-card": "Přesunout kartu do archivu",
"archive-list": "Přesunout seznam do archivu",
"archive-swimlane": "Přesunout swimlane do archivu",
"archive-selection": "Přesunout výběr do archivu",
"archiveBoardPopup-title": "Přesunout tablo do archivu?",
"archived-items": "Archiv",
"archived-boards": "Boards in Archive",
"archived-boards": "Tabla v archivu",
"restore-board": "Obnovit tablo",
"no-archived-boards": "No Boards in Archive.",
"no-archived-boards": "V archivu nejsou žádná tabla.",
"archives": "Archiv",
"assign-member": "Přiřadit člena",
"attached": "přiloženo",
@@ -118,12 +118,12 @@
"board-view-lists": "Sloupce",
"bucket-example": "Například \"O čem sním\"",
"cancel": "Zrušit",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"card-archived": "Karta byla přesunuta do archivu.",
"board-archived": "Toto tablo je přesunuto do archivu.",
"card-comments-title": "Tato karta má %s komentářů.",
"card-delete-notice": "Smazání je trvalé. Přijdete o všechny akce asociované s touto kartou.",
"card-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné kartu obnovit. Toto nelze vrátit zpět.",
"card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.",
"card-delete-suggest-archive": "Můžete přesunout kartu do archivu pro odstranění z tabla a zachovat aktivitu.",
"card-due": "Termín",
"card-due-on": "Do",
"card-spent": "Strávený čas",
@@ -145,7 +145,7 @@
"cardMorePopup-title": "Více",
"cards": "Karty",
"cards-count": "Karty",
"casSignIn": "Sign In with CAS",
"casSignIn": "Přihlásit pomocí CAS",
"cardType-card": "Karta",
"cardType-linkedCard": "Propojená karta",
"cardType-linkedBoard": "Propojené tablo",
@@ -159,7 +159,7 @@
"changePasswordPopup-title": "Změnit heslo",
"changePermissionsPopup-title": "Změnit oprávnění",
"changeSettingsPopup-title": "Změnit nastavení",
"subtasks": "Subtasks",
"subtasks": "Podúkol",
"checklists": "Checklisty",
"click-to-star": "Kliknutím přidat hvězdičku tomuto tablu.",
"click-to-unstar": "Kliknutím odebrat hvězdičku tomuto tablu.",
@@ -169,20 +169,36 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "černá",
"color-blue": "modrá",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "zelená",
"color-indigo": "indigo",
"color-lime": "světlezelená",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "oranžová",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "růžová",
"color-plum": "plum",
"color-purple": "fialová",
"color-red": "červená",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "nebeská",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "žlutá",
"unset-color": "Unset",
"comment": "Komentář",
"comment-placeholder": "Text komentáře",
"comment-only": "Pouze komentáře",
"comment-only-desc": "Může přidávat komentáře pouze do karet.",
"no-comments": "Žádné komentáře",
"no-comments-desc": "Can not see comments and activities.",
"no-comments-desc": "Nemůže vidět komentáře a aktivity",
"computer": "Počítač",
"confirm-subtask-delete-dialog": "Opravdu chcete smazat tento podúkol?",
"confirm-checklist-delete-dialog": "Opravdu chcete smazat tento checklist?",
@@ -284,13 +300,13 @@
"import-board-c": "Importovat tablo",
"import-board-title-trello": "Import board from Trello",
"import-board-title-wekan": "Importovat tablo z předchozího exportu",
"import-sandstorm-backup-warning": "Do not delete data you import from original exported board or Trello before checking does this grain close and open again, or do you get Board not found error, that means data loss.",
"import-sandstorm-backup-warning": "Nemažte data, která importujete z původního exportovaného tabla nebo Trello předtím, nežli zkontrolujete, jestli lze tuto část zavřít a znovu otevřít nebo jestli se Vám nezobrazuje chyba tabla, což znamená ztrátu dat.",
"import-sandstorm-warning": "Importované tablo spaže všechny existující data v tablu a nahradí je importovaným tablem.",
"from-trello": "Z Trella",
"from-wekan": "Z předchozího exportu",
"import-board-instruction-trello": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text",
"import-board-instruction-wekan": "Ve vašem tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-board-instruction-about-errors": "Někdy import funguje i přestože dostáváte chyby při importování tabla, které se zobrazí na stránce Všechna tabla.",
"import-json-placeholder": "Sem vlož validní JSON data",
"import-map-members": "Mapovat členy",
"import-members-map": "Toto importované tablo obsahuje několik osob. Prosím namapujte osoby z importu na místní uživatelské účty.",
@@ -315,17 +331,19 @@
"leave-board-pop": "Opravdu chcete opustit tablo __boardTitle__? Odstraníte se tím i ze všech karet v tomto tablu.",
"leaveBoardPopup-title": "Opustit tablo?",
"link-card": "Odkázat na tuto kartu",
"list-archive-cards": "Move all cards in this list to Archive",
"list-archive-cards": "Přesunout všechny karty v tomto seznamu do archivu.",
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Přesunout všechny karty v tomto sloupci",
"list-select-cards": "Vybrat všechny karty v tomto sloupci",
"set-color-list": "Set Color",
"listActionPopup-title": "Vypsat akce",
"swimlaneActionPopup-title": "Akce swimlane",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importovat Trello kartu",
"listMorePopup-title": "Více",
"link-list": "Odkaz na tento sloupec",
"list-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné sloupec obnovit. Toto nelze vrátit zpět.",
"list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.",
"list-delete-suggest-archive": "Seznam můžete přesunout do archivu, abyste jej odstranili z tabla a zachovali si svou aktivitu.",
"lists": "Sloupce",
"swimlanes": "Swimlanes",
"log-out": "Odhlásit",
@@ -345,9 +363,9 @@
"muted-info": "Nikdy nedostanete oznámení o změně v tomto tablu.",
"my-boards": "Moje tabla",
"name": "Jméno",
"no-archived-cards": "No cards in Archive.",
"no-archived-lists": "No lists in Archive.",
"no-archived-swimlanes": "No swimlanes in Archive.",
"no-archived-cards": "V archivu nejsou žádné karty.",
"no-archived-lists": "V archivu nejsou žádné seznamy.",
"no-archived-swimlanes": "V archivu nejsou žádné swimlanes.",
"no-results": "Žádné výsledky",
"normal": "Normální",
"normal-desc": "Může zobrazovat a upravovat karty. Nemůže měnit nastavení.",
@@ -427,7 +445,7 @@
"uploaded-avatar": "Avatar nahrán",
"username": "Uživatelské jméno",
"view-it": "Zobrazit",
"warn-list-archived": "warning: this card is in an list at Archive",
"warn-list-archived": "varování: tato karta je v seznamu v Archivu",
"watch": "Sledovat",
"watching": "Sledující",
"watching-info": "Bude vám oznámena každá změna v tomto tablu",
@@ -461,13 +479,13 @@
"invitation-code": "Kód pozvánky",
"email-invite-register-subject": "__inviter__ odeslal pozvánku",
"email-invite-register-text": "Ahoj __user__,\n\n__inviter__ tě přizval do kanban boardu ke spolupráci.\n\nNásleduj prosím odkaz níže:\n\n__url__\n\nKód Tvé pozvánky je: __icode__\n\nDěkujeme.",
"email-smtp-test-subject": "SMTP Test Email",
"email-smtp-test-subject": "E-mail testující SMTP",
"email-smtp-test-text": "Email byl úspěšně odeslán",
"error-invitation-code-not-exist": "Kód pozvánky neexistuje.",
"error-notAuthorized": "Nejste autorizován k prohlížení této stránky.",
"outgoing-webhooks": "Odchozí Webhooky",
"outgoingWebhooksPopup-title": "Odchozí Webhooky",
"boardCardTitlePopup-title": "Card Title Filter",
"boardCardTitlePopup-title": "Filtr názvů karet",
"new-outgoing-webhook": "Nové odchozí Webhooky",
"no-name": "(Neznámé)",
"Node_version": "Node verze",
@@ -480,12 +498,13 @@
"OS_Totalmem": "OS Celková paměť",
"OS_Type": "Typ OS",
"OS_Uptime": "OS Doba běhu systému",
"days": "days",
"hours": "hodin",
"minutes": "minut",
"seconds": "sekund",
"show-field-on-card": "Ukázat toto pole na kartě",
"automatically-field-on-card": "Auto create field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"automatically-field-on-card": "Automaticky vytvořit pole na všech kartách",
"showLabel-field-on-card": "Ukázat štítek pole na minikartě",
"yes": "Ano",
"no": "Ne",
"accounts": "Účty",
@@ -500,6 +519,10 @@
"card-end-on": "Končí v",
"editCardReceivedDatePopup-title": "Změnit datum přijetí",
"editCardEndDatePopup-title": "Změnit datum konce",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Přidělil(a)",
"requested-by": "Vyžádal(a)",
"board-delete-notice": "Smazání je trvalé. Přijdete o všechny sloupce, karty a akce spojené s tímto tablem.",
@@ -508,88 +531,89 @@
"delete-board": "Smazat tablo",
"default-subtasks-board": "Podúkoly pro tablo __board__",
"default": "Výchozí",
"queue": "Queue",
"queue": "Fronta",
"subtask-settings": "Nastavení podúkolů",
"boardSubtaskSettingsPopup-title": "Nastavení podúkolů tabla",
"show-subtasks-field": "Karty mohou mít podúkoly",
"deposit-subtasks-board": "Deposit subtasks to this board:",
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
"show-parent-in-minicard": "Show parent in minicard:",
"prefix-with-full-path": "Prefix with full path",
"prefix-with-parent": "Prefix with parent",
"subtext-with-full-path": "Subtext with full path",
"subtext-with-parent": "Subtext with parent",
"change-card-parent": "Change card's parent",
"parent-card": "Parent card",
"show-parent-in-minicard": "Ukázat předka na minikartě",
"prefix-with-full-path": "Prefix s celou cestou",
"prefix-with-parent": "Prefix s předkem",
"subtext-with-full-path": "Podtext s celou cestou",
"subtext-with-parent": "Podtext s předkem",
"change-card-parent": "Změnit rodiče karty",
"parent-card": "Rodičovská karta",
"source-board": "Zdrojové tablo",
"no-parent": "Don't show parent",
"no-parent": "Nezobrazovat rodiče",
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "deleted an attachment",
"activity-added-label-card": "přidán štítek '%s'",
"activity-removed-label-card": "odstraněn štítek '%s'",
"activity-delete-attach-card": "odstraněna příloha",
"r-rule": "Pravidlo",
"r-add-trigger": "Add trigger",
"r-add-trigger": "Přidat spoštěč",
"r-add-action": "Přidat akci",
"r-board-rules": "Pravidla Tabla",
"r-add-rule": "Přidat pravidlo",
"r-view-rule": "Zobrazit pravidlo",
"r-delete-rule": "Smazat pravidlo",
"r-new-rule-name": "New rule title",
"r-new-rule-name": "Nový název pravidla",
"r-no-rules": "Žádná pravidla",
"r-when-a-card": "When a card",
"r-when-a-card": "Pokud karta",
"r-is": "je",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-is-moved": "je přesunuto",
"r-added-to": "přidáno do",
"r-removed-from": "Odstraněno z",
"r-the-board": "the board",
"r-the-board": "tablo",
"r-list": "sloupce",
"set-filter": "Set Filter",
"set-filter": "Nastavit filtr",
"r-moved-to": "Přesunuto do",
"r-moved-from": "Přesunuto z",
"r-archived": "Moved to Archive",
"r-unarchived": "Restored from Archive",
"r-archived": "Přesunuto do archivu",
"r-unarchived": "Obnoveno z archivu",
"r-a-card": "karta",
"r-when-a-label-is": "When a label is",
"r-when-the-label-is": "When the label is",
"r-list-name": "list name",
"r-when-a-member": "When a member is",
"r-when-the-member": "When the member",
"r-name": "name",
"r-when-a-attach": "When an attachment",
"r-when-a-label-is": "Pokud nějaký štítek je",
"r-when-the-label-is": "Pokud tento štítek je",
"r-list-name": "název seznamu",
"r-when-a-member": "Pokud nějaký člen je",
"r-when-the-member": "Pokud tento člen je",
"r-name": "jméno",
"r-when-a-attach": "Pokud je nějaká příloha",
"r-when-a-checklist": "Když zaškrtávací seznam je",
"r-when-the-checklist": "Když zaškrtávací seznam",
"r-completed": "Dokončeno",
"r-made-incomplete": "Made incomplete",
"r-made-incomplete": "Vytvořeno nehotové",
"r-when-a-item": "Když položka zaškrtávacího seznamu je",
"r-when-the-item": "Když položka zaškrtávacího seznamu",
"r-checked": "Zaškrtnuto",
"r-unchecked": "Odškrtnuto",
"r-move-card-to": "Move card to",
"r-move-card-to": "Přesunout kartu do",
"r-top-of": "Top of",
"r-bottom-of": "Bottom of",
"r-its-list": "toho sloupce",
"r-archive": "Move to Archive",
"r-unarchive": "Restore from Archive",
"r-archive": "Přesunout do archivu",
"r-unarchive": "Obnovit z archivu",
"r-card": "karta",
"r-add": "Přidat",
"r-remove": "Odstranit",
"r-label": "label",
"r-label": "štítek",
"r-member": "člen",
"r-remove-all": "Remove all members from the card",
"r-remove-all": "Odstranit všechny členy z této karty",
"r-set-color": "Set color to",
"r-checklist": "zaškrtávací seznam",
"r-check-all": "Zaškrtnout vše",
"r-uncheck-all": "Odškrtnout vše",
"r-items-check": "položky zaškrtávacího seznamu",
"r-check": "Check",
"r-uncheck": "Uncheck",
"r-item": "item",
"r-check": "Označit",
"r-uncheck": "Odznačit",
"r-item": "Položka",
"r-of-checklist": "ze zaškrtávacího seznamu",
"r-send-email": "Send an email",
"r-send-email": "Odeslat e-mail",
"r-to": "komu",
"r-subject": "předmět",
"r-rule-details": "Rule details",
"r-rule-details": "Podrobnosti pravidla",
"r-d-move-to-top-gen": "Přesunout kartu na začátek toho sloupce",
"r-d-move-to-top-spec": "Přesunout kartu na začátek sloupce",
"r-d-move-to-bottom-gen": "Přesunout kartu na konec sloupce",
@@ -598,29 +622,29 @@
"r-d-send-email-to": "komu",
"r-d-send-email-subject": "předmět",
"r-d-send-email-message": "zpráva",
"r-d-archive": "Move card to Archive",
"r-d-unarchive": "Restore card from Archive",
"r-d-archive": "Přesunout kartu do archivu",
"r-d-unarchive": "Obnovit kartu z archivu",
"r-d-add-label": "Přidat štítek",
"r-d-remove-label": "Odstranit štítek",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-create-card": "Vytvořit novou kartu",
"r-in-list": "v seznamu",
"r-in-swimlane": "ve swimlane",
"r-d-add-member": "Přidat člena",
"r-d-remove-member": "Odstranit člena",
"r-d-remove-all-member": "Remove all member",
"r-d-check-all": "Check all items of a list",
"r-d-uncheck-all": "Uncheck all items of a list",
"r-d-check-one": "Check item",
"r-d-uncheck-one": "Uncheck item",
"r-d-remove-all-member": "Odstranit všechny členy",
"r-d-check-all": "Označit všechny položky na seznamu",
"r-d-uncheck-all": "Odznačit všechny položky na seznamu",
"r-d-check-one": "Označit položku",
"r-d-uncheck-one": "Odznačit položku",
"r-d-check-of-list": "ze zaškrtávacího seznamu",
"r-d-add-checklist": "Přidat zaškrtávací seznam",
"r-d-remove-checklist": "Odstranit zaškrtávací seznam",
"r-by": "by",
"r-add-checklist": "Přidat zaškrtávací seznam",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-with-items": "s položkami",
"r-items-list": "položka1,položka2,položka3",
"r-add-swimlane": "Přidat swimlane",
"r-swimlane-name": "Název swimlane",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-when-a-card-is-moved": "Když je karta přesunuta do jiného sloupce",
@@ -629,11 +653,11 @@
"cas": "CAS",
"authentication-method": "Metoda autentizace",
"authentication-type": "Typ autentizace",
"custom-product-name": "Custom Product Name",
"layout": "Layout",
"hide-logo": "Hide Logo",
"custom-product-name": "Vlastní název produktu",
"layout": "uspořádání",
"hide-logo": "Skrýt logo",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
"error-undefined": "Něco se pokazilo",
"error-ldap-login": "Během přihlašování nastala chyba"
}
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+54 -30
View File
@@ -44,16 +44,16 @@
"activity-unjoined": "hat %s verlassen",
"activity-subtask-added": "Teilaufgabe zu %s hinzugefügt",
"activity-checked-item": "markierte %s in Checkliste %svon %s",
"activity-unchecked-item": "demarkierte %s in Checkliste %s von %s",
"activity-unchecked-item": "hat %s in Checkliste %s von %s abgewählt",
"activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
"activity-checklist-removed": "entfernte eine Checkliste von %s",
"activity-checklist-completed": "vervollständigte die Checkliste %s von %s",
"activity-checklist-uncompleted": "unvervollständigte die Checkliste %s von %s",
"activity-checklist-item-added": "hat eine Checklistenposition zu '%s' in %s hinzugefügt",
"activity-checklist-item-removed": "entfernte eine Checklistenposition von '%s' in %s",
"activity-checklist-item-added": "hat ein Checklistenelement zu '%s' in %s hinzugefügt",
"activity-checklist-item-removed": "hat ein Checklistenelement von '%s' in %s entfernt",
"add": "Hinzufügen",
"activity-checked-item-card": "markiere %s in Checkliste %s",
"activity-unchecked-item-card": "demarkiere %s in Checkliste %s",
"activity-unchecked-item-card": "hat %s in Checkliste %s abgewählt",
"activity-checklist-completed-card": "vervollständigte die Checkliste %s",
"activity-checklist-uncompleted-card": "unvervollständigte die Checkliste %s",
"add-attachment": "Datei anhängen",
@@ -62,7 +62,7 @@
"add-swimlane": "Swimlane hinzufügen",
"add-subtask": "Teilaufgabe hinzufügen",
"add-checklist": "Checkliste hinzufügen",
"add-checklist-item": "Position zu einer Checkliste hinzufügen",
"add-checklist-item": "Element zu Checkliste hinzufügen",
"add-cover": "Cover hinzufügen",
"add-label": "Label hinzufügen",
"add-list": "Liste hinzufügen",
@@ -78,7 +78,7 @@
"and-n-other-card": "und eine andere Karte",
"and-n-other-card_plural": "und __count__ andere Karten",
"apply": "Übernehmen",
"app-is-offline": "Wekan lädt gerade, bitte warten Sie. Wenn Sie die Seite neu laden, gehen nicht übertragene Änderungen verloren. Sollte Wekan nicht geladen werden, überprüfen Sie bitte, ob der Server noch läuft.",
"app-is-offline": "Laden, bitte warten. Das Aktualisieren der Seite führt zu Datenverlust. Wenn das Laden nicht funktioniert, überprüfen Sie bitte, ob der Server nicht angehalten wurde.",
"archive": "Ins Archiv verschieben",
"archive-all": "Alles ins Archiv verschieben",
"archive-board": "Board ins Archiv verschieben",
@@ -169,14 +169,30 @@
"close-board-pop": "Sie können das Board wiederherstellen, indem Sie die Schaltfläche \"Archiv\" in der Kopfzeile der Startseite anklicken.",
"color-black": "schwarz",
"color-blue": "blau",
"color-crimson": "Karminrot",
"color-darkgreen": "Dunkelgrün",
"color-gold": "Gold",
"color-gray": "Grau",
"color-green": "grün",
"color-indigo": "Indigo",
"color-lime": "hellgrün",
"color-magenta": "Magentarot",
"color-mistyrose": "Altrosa",
"color-navy": "Marineblau",
"color-orange": "orange",
"color-paleturquoise": "Blasses Türkis",
"color-peachpuff": "Pfirsich",
"color-pink": "pink",
"color-plum": "Pflaume",
"color-purple": "lila",
"color-red": "rot",
"color-saddlebrown": "Sattelbraun",
"color-silver": "Silber",
"color-sky": "himmelblau",
"color-slateblue": "Schieferblau",
"color-white": "Weiß",
"color-yellow": "gelb",
"unset-color": "Nicht festgelegt",
"comment": "Kommentar",
"comment-placeholder": "Kommentar schreiben",
"comment-only": "Nur Kommentare",
@@ -284,18 +300,18 @@
"import-board-c": "Board importieren",
"import-board-title-trello": "Board von Trello importieren",
"import-board-title-wekan": "Board aus vorherigem Export importieren",
"import-sandstorm-backup-warning": "Bitte keine Daten aus dem Original-Wekan oder Trello Board nach dem Import löschen, bitte prüfe vorher ob die alles funktioniert, andernfalls es kommt zum Fehler \"Board nicht gefunden\", dies meint Datenverlust.",
"import-sandstorm-backup-warning": "Löschen Sie keine Daten, die Sie aus einem ursprünglich exportierten oder Trelloboard importieren, bevor Sie geprüft haben, ob alles funktioniert. Andernfalls kann es zu Datenverlust kommen, falls es zu einem \"Board nicht gefunden\"-Fehler kommt.",
"import-sandstorm-warning": "Das importierte Board wird alle bereits existierenden Daten löschen und mit den importierten Daten überschreiben.",
"from-trello": "Von Trello",
"from-wekan": "Aus vorherigem Export",
"import-board-instruction-trello": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text",
"import-board-instruction-wekan": "Gehen Sie in Ihrem Wekan Board auf 'Menü', anschließend auf 'Board exportieren'. Kopieren Sie anschließend den Text aus der heruntergeladenen Datei.",
"import-board-instruction-wekan": "Gehen Sie in Ihrem Board auf 'Menü', danach auf 'Board exportieren' und kopieren Sie den Text aus der heruntergeladenen Datei.",
"import-board-instruction-about-errors": "Treten beim importieren eines Board Fehler auf, so kann der Import dennoch erfolgreich abgeschlossen sein und das Board ist auf der Seite \"Alle Boards\" zusehen.",
"import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein",
"import-map-members": "Mitglieder zuordnen",
"import-members-map": "Das importierte Board hat Mitglieder. Bitte ordnen jene, die importiert werden sollen, vorhandenen Wekan-Nutzern zu",
"import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen sie die Mitglieder, die Sie importieren wollen, Ihren Benutzern zu.",
"import-show-user-mapping": "Mitgliederzuordnung überprüfen",
"import-user-select": "Wählen Sie den Wekan-Nutzer aus, der dieses Mitglied sein soll",
"import-user-select": "Wählen Sie den bestehenden Benutzer aus, den Sie für dieses Mitglied verwenden wollen.",
"importMapMembersAddPopup-title": "Mitglied auswählen",
"info": "Version",
"initials": "Initialen",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "Alle Karten dieser Liste werden vom Board entfernt. Um Karten im Papierkorb anzuzeigen und wiederherzustellen, klicken Sie auf \"Menü\" > \"Archiv\".",
"list-move-cards": "Alle Karten in dieser Liste verschieben",
"list-select-cards": "Alle Karten in dieser Liste auswählen",
"set-color-list": "Lege Farbe fest",
"listActionPopup-title": "Listenaktionen",
"swimlaneActionPopup-title": "Swimlaneaktionen",
"swimlaneAddPopup-title": "Swimlane unterhalb einfügen",
"listImportCardPopup-title": "Eine Trello-Karte importieren",
"listMorePopup-title": "Mehr",
"link-list": "Link zu dieser Liste",
@@ -460,14 +478,14 @@
"send-smtp-test": "Test-E-Mail an sich selbst schicken",
"invitation-code": "Einladungscode",
"email-invite-register-subject": "__inviter__ hat Ihnen eine Einladung geschickt",
"email-invite-register-text": "Hallo __user__,\n\n__inviter__ hat Sie für Ihre Zusammenarbeit zu Wekan eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n__url__\n\nIhr Einladungscode lautet: __icode__\n\nDanke.",
"email-smtp-test-subject": "SMTP Test E-Mail",
"email-invite-register-text": "Sehr geehrte(r) __user__,\n\n__inviter__ hat Sie zur Mitarbeit an einem Kanbanboard eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n__url__\n\nIhr Einladungscode lautet: __icode__\n\nDanke.",
"email-smtp-test-subject": "SMTP Test-E-Mail",
"email-smtp-test-text": "Sie haben erfolgreich eine E-Mail versandt",
"error-invitation-code-not-exist": "Ungültiger Einladungscode",
"error-notAuthorized": "Sie sind nicht berechtigt diese Seite zu sehen.",
"outgoing-webhooks": "Ausgehende Webhooks",
"outgoingWebhooksPopup-title": "Ausgehende Webhooks",
"boardCardTitlePopup-title": "Kartentitel-Filter",
"boardCardTitlePopup-title": "Kartentitelfilter",
"new-outgoing-webhook": "Neuer ausgehender Webhook",
"no-name": "(Unbekannt)",
"Node_version": "Node-Version",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Gesamter Arbeitsspeicher",
"OS_Type": "Typ des Betriebssystems",
"OS_Uptime": "Laufzeit des Systems",
"days": "Tage",
"hours": "Stunden",
"minutes": "Minuten",
"seconds": "Sekunden",
@@ -500,6 +519,10 @@
"card-end-on": "Endet am",
"editCardReceivedDatePopup-title": "Empfangsdatum ändern",
"editCardEndDatePopup-title": "Enddatum ändern",
"setCardColorPopup-title": "Farbe festlegen",
"setCardActionsColorPopup-title": "Farbe wählen",
"setSwimlaneColorPopup-title": "Farbe wählen",
"setListColorPopup-title": "Farbe wählen",
"assigned-by": "Zugewiesen von",
"requested-by": "Angefordert von",
"board-delete-notice": "Löschen kann nicht rückgängig gemacht werden. Sie werden alle Listen, Karten und Aktionen, die mit diesem Board verbunden sind, verlieren.",
@@ -540,8 +563,8 @@
"r-no-rules": "Keine Regeln",
"r-when-a-card": "Wenn eine Karte",
"r-is": "ist",
"r-is-moved": "wird verschoben",
"r-added-to": "hinzugefügt zu",
"r-is-moved": "verschoben wird",
"r-added-to": "hinzugefügt wird zu",
"r-removed-from": "Entfernt von",
"r-the-board": "das Board",
"r-list": "Liste",
@@ -553,7 +576,7 @@
"r-a-card": "eine Karte",
"r-when-a-label-is": "Wenn ein Label ist",
"r-when-the-label-is": " Wenn das Label ist",
"r-list-name": "Listennamen",
"r-list-name": "Listenname",
"r-when-a-member": "Wenn ein Mitglied ist",
"r-when-the-member": "Wenn das Mitglied",
"r-name": "Name",
@@ -562,10 +585,10 @@
"r-when-the-checklist": "Wenn die Checkliste",
"r-completed": "Abgeschlossen",
"r-made-incomplete": "Unvollständig gemacht",
"r-when-a-item": "Wenn eine Checklistenposition ist",
"r-when-the-item": "Wenn die Checklistenposition",
"r-when-a-item": "Wenn ein Checklistenelement ist",
"r-when-the-item": "Wenn das Checklistenelement",
"r-checked": "Markiert",
"r-unchecked": "Demarkiert",
"r-unchecked": "Abgewählt",
"r-move-card-to": "Verschiebe Karte nach",
"r-top-of": "Anfang von",
"r-bottom-of": "Ende von",
@@ -578,12 +601,13 @@
"r-label": "Label",
"r-member": "Mitglied",
"r-remove-all": "Entferne alle Mitglieder von der Karte",
"r-set-color": "Farbe festlegen auf",
"r-checklist": "Checkliste",
"r-check-all": "Alle markieren",
"r-uncheck-all": "Alle demarkieren",
"r-uncheck-all": "Alle abwählen",
"r-items-check": "Elemente der Checkliste",
"r-check": "Markieren",
"r-uncheck": "Demarkieren",
"r-uncheck": "Abwählen",
"r-item": "Element",
"r-of-checklist": "der Checkliste",
"r-send-email": "Eine E-Mail senden",
@@ -608,21 +632,21 @@
"r-d-add-member": "Mitglied hinzufügen",
"r-d-remove-member": "Mitglied entfernen",
"r-d-remove-all-member": "Entferne alle Mitglieder",
"r-d-check-all": "Alle Element der Liste markieren",
"r-d-uncheck-all": "Alle Element der Liste demarkieren",
"r-d-check-one": "Element markieren",
"r-d-uncheck-one": "Element demarkieren",
"r-d-check-all": "Alle Elemente der Liste markieren",
"r-d-uncheck-all": "Alle Element der Liste abwählen",
"r-d-check-one": "Element auswählen",
"r-d-uncheck-one": "Element abwählen",
"r-d-check-of-list": "der Checkliste",
"r-d-add-checklist": "Checkliste hinzufügen",
"r-d-remove-checklist": "Checkliste entfernen",
"r-by": "durch",
"r-add-checklist": "Checkliste hinzufügen",
"r-with-items": "mit Items",
"r-items-list": "item1,item2,item3",
"r-with-items": "mit Elementen",
"r-items-list": "Element1,Element2,Element3",
"r-add-swimlane": "Füge Swimlane hinzu",
"r-swimlane-name": "Swimlane Name",
"r-board-note": "Hinweis: Ein leeres Feld, um jeden möglichen Wert zu finden.",
"r-checklist-note": "Hinweis: Die Elemente der Checkliste müssen als durch Kommas getrennte Werte geschrieben werden.",
"r-swimlane-name": "Swimlanename",
"r-board-note": "Hinweis: Lassen Sie ein Feld leer, um alle möglichen Werte zu finden.",
"r-checklist-note": "Hinweis: Die Elemente der Checkliste müssen als kommagetrennte Werte geschrieben werden.",
"r-when-a-card-is-moved": "Wenn eine Karte in eine andere Liste verschoben wird",
"ldap": "LDAP",
"oauth2": "OAuth2",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "μαύρο",
"color-blue": "μπλε",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "πράσινο",
"color-indigo": "indigo",
"color-lime": "λάιμ",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "πορτοκαλί",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "ροζ",
"color-plum": "plum",
"color-purple": "μωβ",
"color-red": "κόκκινο",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "ουρανός",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "κίτρινο",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Περισσότερα",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "ώρες",
"minutes": "λεπτά",
"seconds": "δευτερόλεπτα",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -580,6 +603,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "nigra",
"color-blue": "blua",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "verda",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "oranĝa",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "ruĝa",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "flava",
"unset-color": "Unset",
"comment": "Komento",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Movu ĉiujn kartojn en tiu listo.",
"list-select-cards": "Elektu ĉiujn kartojn en tiu listo.",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Pli",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "negro",
"color-blue": "azul",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "verde",
"color-indigo": "indigo",
"color-lime": "lima",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "naranja",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "rosa",
"color-plum": "plum",
"color-purple": "púrpura",
"color-red": "rojo",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "cielo",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "amarillo",
"unset-color": "Unset",
"comment": "Comentario",
"comment-placeholder": "Comentar",
"comment-only": "Comentar solamente",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Mueve todas las tarjetas en esta lista",
"list-select-cards": "Selecciona todas las tarjetas en esta lista",
"set-color-list": "Set Color",
"listActionPopup-title": "Listar Acciones",
"swimlaneActionPopup-title": "Acciones de la Calle",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importar una tarjeta Trello",
"listMorePopup-title": "Mas",
"link-list": "Enlace a esta lista",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Memoria Total del SO",
"OS_Type": "Tipo de SO",
"OS_Uptime": "Tiempo encendido del SO",
"days": "days",
"hours": "horas",
"minutes": "minutos",
"seconds": "segundos",
@@ -500,6 +519,10 @@
"card-end-on": "Termina en",
"editCardReceivedDatePopup-title": "Cambiar fecha de recepción",
"editCardEndDatePopup-title": "Cambiar fecha de término",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+27 -3
View File
@@ -169,14 +169,30 @@
"close-board-pop": "Podrás restaurar el tablero haciendo clic en el botón \"Archivo\" del encabezado de la pantalla inicial.",
"color-black": "negra",
"color-blue": "azul",
"color-crimson": "carmesí",
"color-darkgreen": "verde oscuro",
"color-gold": "oro",
"color-gray": "gris",
"color-green": "verde",
"color-indigo": "añil",
"color-lime": "lima",
"color-magenta": "magenta",
"color-mistyrose": "rosa claro",
"color-navy": "azul marino",
"color-orange": "naranja",
"color-paleturquoise": "turquesa",
"color-peachpuff": "melocotón",
"color-pink": "rosa",
"color-plum": "púrpura",
"color-purple": "violeta",
"color-red": "roja",
"color-saddlebrown": "marrón",
"color-silver": "plata",
"color-sky": "celeste",
"color-slateblue": "azul",
"color-white": "blanco",
"color-yellow": "amarilla",
"unset-color": "Desmarcar",
"comment": "Comentar",
"comment-placeholder": "Escribir comentario",
"comment-only": "Sólo comentarios",
@@ -290,7 +306,7 @@
"from-wekan": "Desde exportación previa",
"import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
"import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
"import-board-instruction-about-errors": "Si obtiene errores cuando importe el tablero, a veces la importación funciona igualmente, y el tablero se encuentra en la página de Todos los Tableros.",
"import-board-instruction-about-errors": "Aunque obtengas errores cuando importes el tablero, a veces la importación funciona igualmente, y el tablero se encontrará en la página de tableros.",
"import-json-placeholder": "Pega tus datos JSON válidos aquí",
"import-map-members": "Mapa de miembros",
"import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "Esto eliminará del tablero todas las tarjetas en esta lista. Para ver las tarjetas en el Archivo y recuperarlas al tablero haga click en \"Menu\" > \"Archivo\"",
"list-move-cards": "Mover todas las tarjetas de esta lista",
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
"set-color-list": "Cambiar el color",
"listActionPopup-title": "Acciones de la lista",
"swimlaneActionPopup-title": "Acciones del carril de flujo",
"swimlaneAddPopup-title": "Añadir un carril de flujo debajo",
"listImportCardPopup-title": "Importar una tarjeta de Trello",
"listMorePopup-title": "Más",
"link-list": "Enlazar a esta lista",
@@ -386,9 +404,9 @@
"rules": "Reglas",
"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",
"select-color": "Seleccionar el 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 trabajo en proceso",
"setWipLimitPopup-title": "Fija el límite del trabajo en proceso",
"shortcut-assign-self": "Asignarte a ti mismo a la tarjeta actual",
"shortcut-autocomplete-emoji": "Autocompletar emoji",
"shortcut-autocomplete-members": "Autocompletar miembros",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Memoria Total del sistema",
"OS_Type": "Tipo de sistema",
"OS_Uptime": "Tiempo activo del sistema",
"days": "días",
"hours": "horas",
"minutes": "minutos",
"seconds": "segundos",
@@ -500,6 +519,10 @@
"card-end-on": "Finalizado el",
"editCardReceivedDatePopup-title": "Cambiar la fecha de recepción",
"editCardEndDatePopup-title": "Cambiar la fecha de finalización",
"setCardColorPopup-title": "Cambiar el color",
"setCardActionsColorPopup-title": "Elegir un color",
"setSwimlaneColorPopup-title": "Elegir un color",
"setListColorPopup-title": "Elegir un color",
"assigned-by": "Asignado por",
"requested-by": "Solicitado por",
"board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
@@ -578,6 +601,7 @@
"r-label": "etiqueta",
"r-member": "miembro",
"r-remove-all": "Eliminar todos los miembros de la tarjeta",
"r-set-color": "Cambiar el color a",
"r-checklist": "lista de verificación",
"r-check-all": "Marcar todo",
"r-uncheck-all": "Desmarcar todo",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "beltza",
"color-blue": "urdina",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "berdea",
"color-indigo": "indigo",
"color-lime": "lima",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "laranja",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "larrosa",
"color-plum": "plum",
"color-purple": "purpura",
"color-red": "gorria",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "zerua",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "horia",
"unset-color": "Unset",
"comment": "Iruzkina",
"comment-placeholder": "Idatzi iruzkin bat",
"comment-only": "Iruzkinak besterik ez",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Lekuz aldatu zerrendako txartel guztiak",
"list-select-cards": "Aukeratu zerrenda honetako txartel guztiak",
"set-color-list": "Set Color",
"listActionPopup-title": "Zerrendaren ekintzak",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Inportatu Trello txartel bat",
"listMorePopup-title": "Gehiago",
"link-list": "Lotura zerrenda honetara",
@@ -480,6 +498,7 @@
"OS_Totalmem": "SE memoria guztira",
"OS_Type": "SE mota",
"OS_Uptime": "SE denbora abiatuta",
"days": "days",
"hours": "ordu",
"minutes": "minutu",
"seconds": "segundo",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "شما می توانید با کلیک کردن بر روی دکمه «بایگانی» از صفحه هدر، صفحه را بازگردانید.",
"color-black": "مشکی",
"color-blue": "آبی",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "سبز",
"color-indigo": "indigo",
"color-lime": "لیمویی",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "نارنجی",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "صورتی",
"color-plum": "plum",
"color-purple": "بنفش",
"color-red": "قرمز",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "آبی آسمانی",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "زرد",
"unset-color": "Unset",
"comment": "نظر",
"comment-placeholder": "درج نظر",
"comment-only": "فقط نظر",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "این کارتباعث حذف تمامی کارت های این لیست از برد می شود . برای مشاهده کارت ها در آرشیو و برگرداندن آنها به برد بر بروی \"Menu\">\"Archive\" کلیک نمایید",
"list-move-cards": "انتقال تمام کارت های این لیست",
"list-select-cards": "انتخاب تمام کارت های این لیست",
"set-color-list": "Set Color",
"listActionPopup-title": "لیست اقدامات",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "وارد کردن کارت Trello",
"listMorePopup-title": "بیشتر",
"link-list": "پیوند به این فهرست",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "ساعت",
"minutes": "دقیقه",
"seconds": "ثانیه",
@@ -500,6 +519,10 @@
"card-end-on": "پایان در",
"editCardReceivedDatePopup-title": "تغییر تاریخ رسید",
"editCardEndDatePopup-title": "تغییر تاریخ پایان",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "محول شده توسط",
"requested-by": "تقاضا شده توسط",
"board-delete-notice": "حذف دائمی است شما تمام لیست ها، کارت ها و اقدامات مرتبط با این برد را از دست خواهید داد.",
@@ -578,6 +601,7 @@
"r-label": "برچسب",
"r-member": "عضو",
"r-remove-all": "حذف همه کاربران از کارت",
"r-set-color": "Set color to",
"r-checklist": "چک لیست",
"r-check-all": "انتخاب همه",
"r-uncheck-all": "لغو انتخاب همه",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "Voit palauttaa taulun klikkaamalla “Arkisto” painiketta taululistan yläpalkista.",
"color-black": "musta",
"color-blue": "sininen",
"color-crimson": "karmiininpunainen",
"color-darkgreen": "tummanvihreä",
"color-gold": "kulta",
"color-gray": "harmaa",
"color-green": "vihreä",
"color-indigo": "syvän sininen",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "vaaleanpunainen ruusu",
"color-navy": "laivastonsininen",
"color-orange": "oranssi",
"color-paleturquoise": "vaalean turkoosi",
"color-peachpuff": "persikanpunainen",
"color-pink": "vaaleanpunainen",
"color-plum": "luumunvärinen",
"color-purple": "violetti",
"color-red": "punainen",
"color-saddlebrown": "satulanruskea",
"color-silver": "hopea",
"color-sky": "taivas",
"color-slateblue": "liuskekivi sininen",
"color-white": "valkoinen",
"color-yellow": "keltainen",
"unset-color": "Peru väri",
"comment": "Kommentti",
"comment-placeholder": "Kirjoita kommentti",
"comment-only": "Vain kommentointi",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "Tämä poistaa kaikki tämän listan kortit taululta. Nähdäksesi Arkistossa olevat kortit ja tuodaksesi ne takaisin taululle, klikkaa “Valikko” > “Arkisto”.",
"list-move-cards": "Siirrä kaikki kortit tässä listassa",
"list-select-cards": "Valitse kaikki kortit tässä listassa",
"set-color-list": "Aseta väri",
"listActionPopup-title": "Listaa toimet",
"swimlaneActionPopup-title": "Swimlane toimet",
"swimlaneAddPopup-title": "Lisää Swimlane alle",
"listImportCardPopup-title": "Tuo Trello kortti",
"listMorePopup-title": "Lisää",
"link-list": "Linkki tähän listaan",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Käyttöjärjestelmän muistin kokonaismäärä",
"OS_Type": "Käyttöjärjestelmän tyyppi",
"OS_Uptime": "Käyttöjärjestelmä ollut käynnissä",
"days": "päivää",
"hours": "tuntia",
"minutes": "minuuttia",
"seconds": "sekuntia",
@@ -500,6 +519,10 @@
"card-end-on": "Loppuu",
"editCardReceivedDatePopup-title": "Vaihda vastaanottamispäivää",
"editCardEndDatePopup-title": "Vaihda loppumispäivää",
"setCardColorPopup-title": "Aseta väri",
"setCardActionsColorPopup-title": "Valitse väri",
"setSwimlaneColorPopup-title": "Valitse väri",
"setListColorPopup-title": "Valitse väri",
"assigned-by": "Tehtävänantaja",
"requested-by": "Pyytäjä",
"board-delete-notice": "Poistaminen on lopullista. Menetät kaikki listat, kortit ja toimet tällä taululla.",
@@ -578,6 +601,7 @@
"r-label": "tunniste",
"r-member": "jäsen",
"r-remove-all": "Poista kaikki jäsenet kortilta",
"r-set-color": "Aseta väriksi",
"r-checklist": "tarkistuslista",
"r-check-all": "Ruksaa kaikki",
"r-uncheck-all": "Poista ruksi kaikista",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "Vous pouvez restaurer le tableau en cliquant sur le bouton « Archives » depuis le menu en entête.",
"color-black": "noir",
"color-blue": "bleu",
"color-crimson": "rouge cramoisi",
"color-darkgreen": "vert foncé",
"color-gold": "or",
"color-gray": "gris",
"color-green": "vert",
"color-indigo": "indigo",
"color-lime": "citron vert",
"color-magenta": "magenta",
"color-mistyrose": "rose brumeux",
"color-navy": "bleu marin",
"color-orange": "orange",
"color-paleturquoise": "azurin",
"color-peachpuff": "beige pêche",
"color-pink": "rose",
"color-plum": "prune",
"color-purple": "violet",
"color-red": "rouge",
"color-saddlebrown": "brun cuir",
"color-silver": "argent",
"color-sky": "ciel",
"color-slateblue": "bleu ardoise",
"color-white": "blanc",
"color-yellow": "jaune",
"unset-color": "Enlever",
"comment": "Commenter",
"comment-placeholder": "Écrire un commentaire",
"comment-only": "Commentaire uniquement",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "Cela supprimera du tableau toutes les cartes de cette liste. Pour voir les cartes archivées et les renvoyer vers le tableau, cliquez sur « Menu » puis « Archives ».",
"list-move-cards": "Déplacer toutes les cartes de cette liste",
"list-select-cards": "Sélectionner toutes les cartes de cette liste",
"set-color-list": "Set Color",
"listActionPopup-title": "Actions sur la liste",
"swimlaneActionPopup-title": "Actions du couloir",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importer une carte Trello",
"listMorePopup-title": "Plus",
"link-list": "Lien vers cette liste",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Mémoire totale",
"OS_Type": "Type d'OS",
"OS_Uptime": "OS Durée de fonctionnement",
"days": "jours",
"hours": "heures",
"minutes": "minutes",
"seconds": "secondes",
@@ -500,6 +519,10 @@
"card-end-on": "Se termine le",
"editCardReceivedDatePopup-title": "Modifier la date de réception",
"editCardEndDatePopup-title": "Modifier la date de fin",
"setCardColorPopup-title": "Définir la couleur",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigné par",
"requested-by": "Demandé par",
"board-delete-notice": "La suppression est définitive. Vous perdrez toutes les listes, cartes et actions associées à ce tableau.",
@@ -578,6 +601,7 @@
"r-label": "étiquette",
"r-member": "membre",
"r-remove-all": "Supprimer tous les membres de la carte",
"r-set-color": "Définir la couleur à",
"r-checklist": "checklist",
"r-check-all": "Tout cocher",
"r-uncheck-all": "Tout décocher",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "negro",
"color-blue": "azul",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "verde",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "laranxa",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "rosa",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "vermello",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "celeste",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "amarelo",
"unset-color": "Unset",
"comment": "Comentario",
"comment-placeholder": "Escribir un comentario",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Máis",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+61 -37
View File
@@ -35,13 +35,13 @@
"activity-customfield-created": "נוצר שדה בהתאמה אישית %s",
"activity-excluded": "%s לא נכלל ב%s",
"activity-imported": "%s ייובא מ%s אל %s",
"activity-imported-board": "%s ייובא מ%s",
"activity-imported-board": "%s יובא מ%s",
"activity-joined": "הצטרפות אל %s",
"activity-moved": "%s עבר מ%s ל%s",
"activity-on": "ב%s",
"activity-removed": "%s הוסר מ%s",
"activity-sent": "%s נשלח ל%s",
"activity-unjoined": "בטל צירוף %s",
"activity-unjoined": "בוטל צירוף אל %s",
"activity-subtask-added": "נוספה תת־משימה אל %s",
"activity-checked-item": "%s סומן ברשימת המשימות %s מתוך %s",
"activity-unchecked-item": "בוטל הסימון של %s ברשימת המשימות %s מתוך %s",
@@ -78,7 +78,7 @@
"and-n-other-card": "וכרטיס נוסף",
"and-n-other-card_plural": "ו־__count__ כרטיסים נוספים",
"apply": "החלה",
"app-is-offline": "טוען, אנא המתן. טעינה מחדש של הדף תוביל לאבדן מידע. אם הטעינה לוקחת יותר מדי זמן, אנא בדוק אם השרת מקוון.",
"app-is-offline": "בטעינה, נא להמתין. רענון הדף תוביל לאבדן מידע. אם הטעינה אורכת זמן רב מדי, מוטב לבדוק אם השרת מקוון.",
"archive": "העברה לארכיון",
"archive-all": "אחסן הכל בארכיון",
"archive-board": "העברת הלוח לארכיון",
@@ -86,7 +86,7 @@
"archive-list": "העברת הרשימה לארכיון",
"archive-swimlane": "שמור נתיב זרימה לארכיון",
"archive-selection": "העברת הבחירה לארכיון",
"archiveBoardPopup-title": "האם להעביר לוח זה לארכיון?",
"archiveBoardPopup-title": "להעביר לוח זה לארכיון?",
"archived-items": "להעביר לארכיון",
"archived-boards": "לוחות שנשמרו בארכיון",
"restore-board": "שחזור לוח",
@@ -159,7 +159,7 @@
"changePasswordPopup-title": "החלפת ססמה",
"changePermissionsPopup-title": "שינוי הרשאות",
"changeSettingsPopup-title": "שינוי הגדרות",
"subtasks": "תתי משימות",
"subtasks": "תת משימות",
"checklists": "רשימות",
"click-to-star": "יש ללחוץ להוספת הלוח למועדפים.",
"click-to-unstar": "יש ללחוץ להסרת הלוח מהמועדפים.",
@@ -169,14 +169,30 @@
"close-board-pop": "ניתן לשחזר את הלוח בלחיצה על כפתור „ארכיונים“ מהכותרת העליונה.",
"color-black": "שחור",
"color-blue": "כחול",
"color-crimson": "שני",
"color-darkgreen": "ירוק כהה",
"color-gold": "זהב",
"color-gray": "אפור",
"color-green": "ירוק",
"color-indigo": "אינדיגו",
"color-lime": "ליים",
"color-magenta": "ארגמן",
"color-mistyrose": "ורד",
"color-navy": "כחול כהה",
"color-orange": "כתום",
"color-paleturquoise": "טורקיז חיוור",
"color-peachpuff": "נשיפת אפרסק",
"color-pink": "ורוד",
"color-plum": "שזיף",
"color-purple": "סגול",
"color-red": "אדום",
"color-saddlebrown": "חום אוכף",
"color-silver": "כסף",
"color-sky": "תכלת",
"color-slateblue": "צפחה כחולה",
"color-white": "לבן",
"color-yellow": "צהוב",
"unset-color": "בטל הגדרה",
"comment": "לפרסם",
"comment-placeholder": "כתיבת הערה",
"comment-only": "תגובה בלבד",
@@ -195,7 +211,7 @@
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"כותרת כרטיס ראשון\", \"description\":\"תיאור כרטיס ראשון\"}, {\"title\":\"כותרת כרטיס שני\",\"description\":\"תיאור כרטיס שני\"},{\"title\":\"כותרת כרטיס אחרון\",\"description\":\"תיאור כרטיס אחרון\"} ]",
"create": "יצירה",
"createBoardPopup-title": "יצירת לוח",
"chooseBoardSourcePopup-title": "ייבוא לוח",
"chooseBoardSourcePopup-title": "יבוא לוח",
"createLabelPopup-title": "יצירת תווית",
"createCustomField": "יצירת שדה",
"createCustomFieldPopup-title": "יצירת שדה",
@@ -290,14 +306,14 @@
"from-wekan": "מייצוא קודם",
"import-board-instruction-trello": "בלוח הטרלו שלך, עליך ללחוץ על ‚תפריט‘, ואז על ‚עוד‘, ‚הדפסה וייצוא‘, ‚יצוא JSON‘ ולהעתיק את הטקסט שנוצר.",
"import-board-instruction-wekan": "בלוח שלך עליך לגשת אל ‚תפריט’, לאחר מכן ‚ייצוא לוח’ ואז להעתיק את הטקסט מהקובץ שהתקבל.",
"import-board-instruction-about-errors": "גם אם התקבלו שגיאות בעת ייבוא לוח, ייתכן שהייבוא עבד. כדי לבדוק זאת, יש להיכנס ל„כל הלוחות”.",
"import-board-instruction-about-errors": "גם אם התקבלו שגיאות בעת יבוא לוח, ייתכן שהייבוא עבד. כדי לבדוק זאת, יש להיכנס ל„כל הלוחות”.",
"import-json-placeholder": "יש להדביק את נתוני ה־JSON התקינים לכאן",
"import-map-members": "מיפוי חברים",
"import-members-map": "הלוחות המיובאים שלך מכילים חברים. בבקשה מפה את החברים שתרצה לייבא כמשתמשים",
"import-members-map": "הלוחות המיובאים שלך מכילים חברים. נא למפות את החברים שברצונך לייבא למשתמשים שלך",
"import-show-user-mapping": "סקירת מיפוי חברים",
"import-user-select": "נא לבחור את המשתמש ב־Wekan בו ברצונך להשתמש עבור חבר זה",
"importMapMembersAddPopup-title": "בחר משתמש",
"info": "גרסא",
"import-user-select": "נא לבחור את המשתמש ב־Wekan אותו ברצונך למפות אל חבר זה",
"importMapMembersAddPopup-title": "בחירת משתמש",
"info": "גרסה",
"initials": "ראשי תיבות",
"invalid-date": "תאריך שגוי",
"invalid-time": "זמן שגוי",
@@ -316,11 +332,13 @@
"leaveBoardPopup-title": "לעזוב לוח ?",
"link-card": "קישור לכרטיס זה",
"list-archive-cards": "העברת כל הכרטיסים שברשימה זו לארכיון",
"list-archive-cards-pop": "כל הכרטיסים מרשימה זו יוסרו מהלוח. לצפייה בכרטיסים השמורים בארכיון ולהחזירם ללוח, לחצו \"תפריט\" > \"פריטים בארכיון\".",
"list-archive-cards-pop": "כל הכרטיסים מרשימה זו יוסרו מהלוח. לצפייה בכרטיסים השמורים בארכיון ולהחזירם ללוח, ניתן ללחוץ על „תפריט” > „פריטים בארכיון”.",
"list-move-cards": "העברת כל הכרטיסים שברשימה זו",
"list-select-cards": "בחירת כל הכרטיסים שברשימה זו",
"set-color-list": "Set Color",
"listActionPopup-title": "פעולות רשימה",
"swimlaneActionPopup-title": "פעולות על מסלול",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "יבוא כרטיס מ־Trello",
"listMorePopup-title": "עוד",
"link-list": "קישור לרשימה זו",
@@ -347,7 +365,7 @@
"name": "שם",
"no-archived-cards": "אין כרטיסים בארכיון",
"no-archived-lists": "אין רשימות בארכיון",
"no-archived-swimlanes": "לא שמורים נתיבי זרימה בארכיון",
"no-archived-swimlanes": "לא שמורים מסלולים בארכיון",
"no-results": "אין תוצאות",
"normal": "רגיל",
"normal-desc": "הרשאה לצפות ולערוך כרטיסים. לא ניתן לשנות הגדרות.",
@@ -413,7 +431,7 @@
"overtime-hours": "שעות נוספות",
"overtime": "שעות נוספות",
"has-overtime-cards": "יש כרטיסי שעות נוספות",
"has-spenttime-cards": "ניצל את כרטיסי הזמן שהושקע",
"has-spenttime-cards": "יש כרטיסי זמן שהושקע",
"time": "זמן",
"title": "כותרת",
"tracking": "מעקב",
@@ -461,13 +479,13 @@
"invitation-code": "קוד הזמנה",
"email-invite-register-subject": "נשלחה אליך הזמנה מאת __inviter__",
"email-invite-register-text": " __user__, יקר/ה\n\n__inviter__ מזמין/ה אתכם לשיתוף פעולה בלוח הקנבן.\n\nאנא לחצו על הקישור הבא:\n__url__\n\nקוד ההזמנה הוא: __icode__\n\nתודה.",
"email-smtp-test-subject": "דוא\"ל בדיקת SMTP",
"email-smtp-test-subject": "דוא״ל לבדיקת SMTP",
"email-smtp-test-text": "שלחת הודעת דוא״ל בהצלחה",
"error-invitation-code-not-exist": "קוד ההזמנה אינו קיים",
"error-notAuthorized": "אין לך הרשאה לצפות בעמוד זה.",
"outgoing-webhooks": "קרסי רשת יוצאים",
"outgoingWebhooksPopup-title": "קרסי רשת יוצאים",
"boardCardTitlePopup-title": "Card Title Filter",
"boardCardTitlePopup-title": "מסנן כותרת כרטיס",
"new-outgoing-webhook": "קרסי רשת יוצאים חדשים",
"no-name": "(לא ידוע)",
"Node_version": "גרסת Node",
@@ -477,19 +495,20 @@
"OS_Loadavg": "עומס ממוצע ",
"OS_Platform": "מערכת הפעלה",
"OS_Release": "גרסת מערכת הפעלה",
"OS_Totalmem": "סך הכל זיכרון (RAM)",
"OS_Totalmem": "סך כל הזיכרון (RAM)",
"OS_Type": "סוג מערכת ההפעלה",
"OS_Uptime": "זמן שעבר מאז האתחול האחרון",
"days": "ימים",
"hours": "שעות",
"minutes": "דקות",
"seconds": "שניות",
"show-field-on-card": "הצגת שדה זה בכרטיס",
"automatically-field-on-card": "הוספת שדה לכל הכרטיסים",
"showLabel-field-on-card": "הצג תווית של השדה במיני כרטיס",
"showLabel-field-on-card": "הצגת תווית של השדה בכרטיס מוקטן",
"yes": "כן",
"no": "לא",
"accounts": "חשבונות",
"accounts-allowEmailChange": "אפשר שינוי דוא\"ל",
"accounts-allowEmailChange": "לאפשר שינוי דוא״ל",
"accounts-allowUserNameChange": "לאפשר שינוי שם משתמש",
"createdAt": "נוצר ב",
"verified": "עבר אימות",
@@ -500,6 +519,10 @@
"card-end-on": "מועד הסיום",
"editCardReceivedDatePopup-title": "החלפת מועד הקבלה",
"editCardEndDatePopup-title": "החלפת מועד הסיום",
"setCardColorPopup-title": "הגדרת צבע",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "הוקצה על ידי",
"requested-by": "התבקש על ידי",
"board-delete-notice": "מחיקה היא לצמיתות. כל הרשימות, הכרטיבים והפעולות שקשורים בלוח הזה ילכו לאיבוד.",
@@ -507,7 +530,7 @@
"boardDeletePopup-title": "למחוק את הלוח?",
"delete-board": "מחיקת לוח",
"default-subtasks-board": "תת־משימות עבור הלוח __board__",
"default": "ברירת מחדל",
"default": "בררת מחדל",
"queue": "תור",
"subtask-settings": "הגדרות תתי משימות",
"boardSubtaskSettingsPopup-title": "הגדרות תת־משימות בלוח",
@@ -538,14 +561,14 @@
"r-delete-rule": "מחיקת כל",
"r-new-rule-name": "שמו של הכלל החדש",
"r-no-rules": "אין כללים",
"r-when-a-card": "When a card",
"r-when-a-card": "כאשר כרטיס",
"r-is": "הוא",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-is-moved": "מועבר",
"r-added-to": "נוסף אל",
"r-removed-from": "מוסר מ־",
"r-the-board": "הלוח",
"r-list": "רשימה",
"set-filter": "Set Filter",
"set-filter": "הגדרת מסנן",
"r-moved-to": "מועבר אל",
"r-moved-from": "מועבר מ־",
"r-archived": "הועבר לארכיון",
@@ -553,7 +576,7 @@
"r-a-card": "כרטיס",
"r-when-a-label-is": "כאשר תווית",
"r-when-the-label-is": "כאשר התווית היא",
"r-list-name": "list name",
"r-list-name": "שם הרשימה",
"r-when-a-member": "כאשר חבר הוא",
"r-when-the-member": "כאשר חבר",
"r-name": "שם",
@@ -578,6 +601,7 @@
"r-label": "תווית",
"r-member": "חבר",
"r-remove-all": "הסרת כל החברים מהכרטיס",
"r-set-color": "הגדרת צבע לכדי",
"r-checklist": "רשימת משימות",
"r-check-all": "לסמן הכול",
"r-uncheck-all": "לבטל את הסימון",
@@ -602,9 +626,9 @@
"r-d-unarchive": "החזרת כרטיס מהארכיון",
"r-d-add-label": "הוספת תווית",
"r-d-remove-label": "הסרת תווית",
"r-create-card": "Create new card",
"r-in-list": "in list",
"r-in-swimlane": "in swimlane",
"r-create-card": "יצירת כרטיס חדש",
"r-in-list": "ברשימה",
"r-in-swimlane": "במסלול",
"r-d-add-member": "הוספת חבר",
"r-d-remove-member": "הסרת חבר",
"r-d-remove-all-member": "הסרת כל החברים",
@@ -615,14 +639,14 @@
"r-d-check-of-list": "של רשימת משימות",
"r-d-add-checklist": "הוספת רשימת משימות",
"r-d-remove-checklist": "הסרת רשימת משימות",
"r-by": "by",
"r-by": "על ידי",
"r-add-checklist": "הוספת רשימת משימות",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-with-items": "עם פריטים",
"r-items-list": "פריט1,פריט2,פריט3",
"r-add-swimlane": "הוספת מסלול",
"r-swimlane-name": "שם המסלול",
"r-board-note": "לתשומת לבך: ניתן להשאיר את השדה ריק כדי ללכוד כל ערך אפשרי.",
"r-checklist-note": "לתשומת לבך: את פריטי רשימת הביצוע יש לכתוב בתצורת רשימה של ערכים המופרדים בפסיקים.",
"r-when-a-card-is-moved": "כאשר כרטיס מועבר לרשימה אחרת",
"ldap": "LDAP",
"oauth2": "OAuth2",
@@ -632,8 +656,8 @@
"custom-product-name": "שם מותאם אישית למוצר",
"layout": "פריסה",
"hide-logo": "הסתרת לוגו",
"add-custom-html-after-body-start": "הוספת קוד HTML מותאם אישית בתחילת ה <body>.",
"add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית בסוף ה</body>.",
"add-custom-html-after-body-start": "הוספת קוד HTML מותאם אישית לאחר ה־<body> הפותח.",
"add-custom-html-before-body-end": "הוספת קוד HTML מותאם אישית לפני ה־</body> הסוגר.",
"error-undefined": "מהו השתבש",
"error-ldap-login": "אירעה שגיאה בעת ניסיון הכניסה"
}
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "काला",
"color-blue": "नीला",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "हरा",
"color-indigo": "indigo",
"color-lime": "हल्का हरा",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "नारंगी",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "गुलाबी",
"color-plum": "plum",
"color-purple": "बैंगनी",
"color-red": "लाल",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "आकाशिया नीला",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "पीला",
"unset-color": "Unset",
"comment": "टिप्पणी",
"comment-placeholder": "टिप्पणी लिखें",
"comment-only": "केवल टिप्पणी करें",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "स्थानांतरित संपूर्ण कार्ड अंदर में यह list",
"list-select-cards": "Select संपूर्ण कार्ड अंदर में यह list",
"set-color-list": "Set Color",
"listActionPopup-title": "सूची Actions",
"swimlaneActionPopup-title": "तैरन Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import एक Trello कार्ड",
"listMorePopup-title": "More",
"link-list": "Link तक यह list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose संपूर्ण lists, कार्ड और actions associated साथ में यह बोर्ड.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "हटाएँ संपूर्ण सदस्य से the कार्ड",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "fekete",
"color-blue": "kék",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "zöld",
"color-indigo": "indigo",
"color-lime": "citrus",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "narancssárga",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "rózsaszín",
"color-plum": "plum",
"color-purple": "lila",
"color-red": "piros",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "égszínkék",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "sárga",
"unset-color": "Unset",
"comment": "Megjegyzés",
"comment-placeholder": "Megjegyzés írása",
"comment-only": "Csak megjegyzés",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "A listán lévő összes kártya áthelyezése",
"list-select-cards": "A listán lévő összes kártya kiválasztása",
"set-color-list": "Set Color",
"listActionPopup-title": "Műveletek felsorolása",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Trello kártya importálása",
"listMorePopup-title": "Több",
"link-list": "Összekapcsolás ezzel a listával",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Operációs rendszer összes memóriája",
"OS_Type": "Operációs rendszer típusa",
"OS_Uptime": "Operációs rendszer üzemideje",
"days": "days",
"hours": "óra",
"minutes": "perc",
"seconds": "másodperc",
@@ -500,6 +519,10 @@
"card-end-on": "Befejeződik ekkor",
"editCardReceivedDatePopup-title": "Érkezési dátum megváltoztatása",
"editCardEndDatePopup-title": "Befejezési dátum megváltoztatása",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "hitam",
"color-blue": "biru",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "hijau",
"color-indigo": "indigo",
"color-lime": "hijau muda",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "jingga",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "merah muda",
"color-plum": "plum",
"color-purple": "ungu",
"color-red": "merah",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "biru muda",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "kuning",
"unset-color": "Unset",
"comment": "Komentar",
"comment-placeholder": "Write Comment",
"comment-only": "Hanya komentar",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Pindah semua kartu ke daftar ini",
"list-select-cards": "Pilih semua kartu di daftar ini",
"set-color-list": "Set Color",
"listActionPopup-title": "Daftar Tindakan",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Impor dari Kartu Trello",
"listMorePopup-title": "Lainnya",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "elekere",
"minutes": "nkeji",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "nero",
"color-blue": "blu",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "verde",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "arancione",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "rosa",
"color-plum": "plum",
"color-purple": "viola",
"color-red": "rosso",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "azzurro",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "giallo",
"unset-color": "Unset",
"comment": "Commento",
"comment-placeholder": "Scrivi Commento",
"comment-only": "Solo commenti",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Sposta tutte le schede in questa lista",
"list-select-cards": "Selezione tutte le schede in questa lista",
"set-color-list": "Set Color",
"listActionPopup-title": "Azioni disponibili",
"swimlaneActionPopup-title": "Azioni corsia",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importa una scheda di Trello",
"listMorePopup-title": "Altro",
"link-list": "Link a questa lista",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Memoria totale del sistema operativo ",
"OS_Type": "Tipo di sistema operativo ",
"OS_Uptime": "Tempo di attività del sistema operativo. ",
"days": "days",
"hours": "ore",
"minutes": "minuti",
"seconds": "secondi",
@@ -500,6 +519,10 @@
"card-end-on": "Termina il",
"editCardReceivedDatePopup-title": "Cambia data ricezione",
"editCardEndDatePopup-title": "Cambia data finale",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assegnato da",
"requested-by": "Richiesto da",
"board-delete-notice": "L'eliminazione è permanente. Tutte le azioni, liste e schede associate a questa bacheca andranno perse.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "黒",
"color-blue": "青",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "緑",
"color-indigo": "indigo",
"color-lime": "ライム",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "オレンジ",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "ピンク",
"color-plum": "plum",
"color-purple": "紫",
"color-red": "赤",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "空",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "黄",
"unset-color": "Unset",
"comment": "コメント",
"comment-placeholder": "コメントを書く",
"comment-only": "コメントのみ",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "リストの全カードを移動する",
"list-select-cards": "リストの全カードを選択",
"set-color-list": "Set Color",
"listActionPopup-title": "操作一覧",
"swimlaneActionPopup-title": "スイムレーン操作",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Trelloのカードをインポート",
"listMorePopup-title": "さらに見る",
"link-list": "このリストへのリンク",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OSトータルメモリ",
"OS_Type": "OS種類",
"OS_Uptime": "OSアップタイム",
"days": "days",
"hours": "時",
"minutes": "分",
"seconds": "秒",
@@ -500,6 +519,10 @@
"card-end-on": "終了日",
"editCardReceivedDatePopup-title": "受付日の変更",
"editCardEndDatePopup-title": "終了日の変更",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "შავი",
"color-blue": "ლურჯი",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "მწვანე",
"color-indigo": "indigo",
"color-lime": "ღია ყვითელი",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "ნარინჯისფერი",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "ვარდისფერი",
"color-plum": "plum",
"color-purple": "იასამნისფერი",
"color-red": "წითელი ",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "ცისფერი",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "ყვითელი",
"unset-color": "Unset",
"comment": "კომენტარი",
"comment-placeholder": "დაწერეთ კომენტარი",
"comment-only": "მხოლოდ კომენტარები",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "გადაიტანე ყველა ბარათი ამ სიაში",
"list-select-cards": "მონიშნე ყველა ბარათი ამ სიაში",
"set-color-list": "Set Color",
"listActionPopup-title": "მოქმედებების სია",
"swimlaneActionPopup-title": "ბილიკის მოქმედებები",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Trello ბარათის იმპორტი",
"listMorePopup-title": "მეტი",
"link-list": "დააკავშირეთ ამ ჩამონათვალთან",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS მთლიანი მეხსიერება",
"OS_Type": "OS ტიპი",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "საათები",
"minutes": "წუთები",
"seconds": "წამები",
@@ -500,6 +519,10 @@
"card-end-on": "დასრულდება : ",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "შეცვალეთ საბოლოო თარიღი",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "უფლებამოსილების გამცემი ",
"requested-by": "მომთხოვნი",
"board-delete-notice": "წაშლის შემთხვევაში თქვენ დაკარგავთ ამ დაფასთან ასოცირებულ ყველა მონაცემს მათ შორის : ჩამონათვალს, ბარათებს და მოქმედებებს. ",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "블랙",
"color-blue": "블루",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "그린",
"color-indigo": "indigo",
"color-lime": "라임",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "오렌지",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "핑크",
"color-plum": "plum",
"color-purple": "퍼플",
"color-red": "레드",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "스카이",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "옐로우",
"unset-color": "Unset",
"comment": "댓글",
"comment-placeholder": "댓글 입력",
"comment-only": "댓글만 입력 가능",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "목록에 있는 모든 카드를 이동",
"list-select-cards": "목록에 있는 모든 카드를 선택",
"set-color-list": "Set Color",
"listActionPopup-title": "동작 목록",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Trello 카드 가져 오기",
"listMorePopup-title": "더보기",
"link-list": "이 리스트에 링크",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Mer",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "zwart",
"color-blue": "blauw",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "groen",
"color-indigo": "indigo",
"color-lime": "Felgroen",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "Oranje",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "Roze",
"color-plum": "plum",
"color-purple": "Paars",
"color-red": "Rood",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "Lucht",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "Geel",
"unset-color": "Unset",
"comment": "Reageer",
"comment-placeholder": "Schrijf reactie",
"comment-only": "Alleen reageren",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Verplaats alle kaarten in deze lijst",
"list-select-cards": "Selecteer alle kaarten in deze lijst",
"set-color-list": "Set Color",
"listActionPopup-title": "Lijst acties",
"swimlaneActionPopup-title": "Swimlane handelingen",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importeer een Trello kaart",
"listMorePopup-title": "Meer",
"link-list": "Link naar deze lijst",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Totaal Geheugen",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "uren",
"minutes": "minuten",
"seconds": "seconden",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "Będziesz w stanie przywrócić tablicę poprzez kliknięcie przycisku \"Archiwizuj\" w nagłówku strony domowej.",
"color-black": "czarny",
"color-blue": "niebieski",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "zielony",
"color-indigo": "indigo",
"color-lime": "limonkowy",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "pomarańczowy",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "różowy",
"color-plum": "plum",
"color-purple": "fioletowy",
"color-red": "czerwony",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "błękitny",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "żółty",
"unset-color": "Unset",
"comment": "Komentarz",
"comment-placeholder": "Dodaj komentarz",
"comment-only": "Tylko komentowanie",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "To usunie wszystkie karty z tej listy z tej tablicy. Aby przejrzeć karty w Archiwum i przywrócić na tablicę, kliknij \"Menu\" > \"Archiwizuj\".",
"list-move-cards": "Przenieś wszystkie karty z tej listy",
"list-select-cards": "Zaznacz wszystkie karty z tej listy",
"set-color-list": "Set Color",
"listActionPopup-title": "Lista akcji",
"swimlaneActionPopup-title": "Opcje diagramu czynności",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Zaimportuj kartę z Trello",
"listMorePopup-title": "Więcej",
"link-list": "Podepnij do tej listy",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Dostępna pamięć RAM",
"OS_Type": "Typ systemu",
"OS_Uptime": "Czas działania systemu",
"days": "days",
"hours": "godzin",
"minutes": "minut",
"seconds": "sekund",
@@ -500,6 +519,10 @@
"card-end-on": "Kończy się",
"editCardReceivedDatePopup-title": "Zmień datę odebrania",
"editCardEndDatePopup-title": "Zmień datę ukończenia",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Przypisane przez",
"requested-by": "Zlecone przez",
"board-delete-notice": "Usuwanie jest permanentne. Stracisz wszystkie listy, kart oraz czynności przypisane do tej tablicy.",
@@ -578,6 +601,7 @@
"r-label": "etykieta",
"r-member": "członek",
"r-remove-all": "Usuń wszystkich członków tej karty",
"r-set-color": "Set color to",
"r-checklist": "lista zadań",
"r-check-all": "Zaznacz wszystkie",
"r-uncheck-all": "Odznacz wszystkie",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "Você será capaz de restaurar o quadro clicando no botão “Arquivo-morto” a partir do cabeçalho do Início.",
"color-black": "preto",
"color-blue": "azul",
"color-crimson": "carmesim",
"color-darkgreen": "verde escuro",
"color-gold": "dourado",
"color-gray": "cinza",
"color-green": "verde",
"color-indigo": "azul",
"color-lime": "verde limão",
"color-magenta": "magenta",
"color-mistyrose": "rosa claro",
"color-navy": "azul marinho",
"color-orange": "laranja",
"color-paleturquoise": "azul ciano",
"color-peachpuff": "pêssego",
"color-pink": "cor-de-rosa",
"color-plum": "ameixa",
"color-purple": "roxo",
"color-red": "vermelho",
"color-saddlebrown": "marrom",
"color-silver": "prateado",
"color-sky": "azul-celeste",
"color-slateblue": "azul ardósia",
"color-white": "branco",
"color-yellow": "amarelo",
"unset-color": "Unset",
"comment": "Comentário",
"comment-placeholder": "Escrever Comentário",
"comment-only": "Somente comentários",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "Isto removerá todos os cartões desta lista para o quadro. Para visualizar cartões arquivados e trazê-los de volta para o quadro, clique em “Menu” > “Arquivo-morto”.",
"list-move-cards": "Mover todos os cartões desta lista",
"list-select-cards": "Selecionar todos os cartões nesta lista",
"set-color-list": "Set Color",
"listActionPopup-title": "Listar Ações",
"swimlaneActionPopup-title": "Ações de Raia",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importe um cartão do Trello",
"listMorePopup-title": "Mais",
"link-list": "Vincular a esta lista",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Memória Total do SO",
"OS_Type": "Tipo do SO",
"OS_Uptime": "Disponibilidade do SO",
"days": "dias",
"hours": "horas",
"minutes": "minutos",
"seconds": "segundos",
@@ -500,6 +519,10 @@
"card-end-on": "Termina em",
"editCardReceivedDatePopup-title": "Modificar data de recebimento",
"editCardEndDatePopup-title": "Mudar data de fim",
"setCardColorPopup-title": "Definir cor",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Atribuído por",
"requested-by": "Solicitado por",
"board-delete-notice": "Excluir é permanente. Você perderá todas as listas, cartões e ações associados nesse quadro.",
@@ -578,6 +601,7 @@
"r-label": "etiqueta",
"r-member": "membro",
"r-remove-all": "Remover todos os membros do cartão",
"r-set-color": "Definir cor para",
"r-checklist": "lista de verificação",
"r-check-all": "Marcar todos",
"r-uncheck-all": "Desmarcar todos",
+70 -46
View File
@@ -1,54 +1,54 @@
{
"accept": "Aceitar",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "attached __attachment__ to __card__",
"act-addSubtask": "added subtask __checklist__ to __card__",
"act-addChecklist": "added checklist __checklist__ to __card__",
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
"act-addComment": "commented on __card__: __comment__",
"act-createBoard": "created __board__",
"act-createCard": "added __card__ to __list__",
"act-createCustomField": "created custom field __customField__",
"act-createList": "added __list__ to __board__",
"act-addBoardMember": "added __member__ to __board__",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"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-activity-notify": "Notificação de Actividade",
"act-addAttachment": "anexado __attachment__ ao __card__",
"act-addSubtask": "adicionou sub-tarefa __checklist__ ao __card__",
"act-addChecklist": "adicionou checklist __checklist__ ao __card__",
"act-addChecklistItem": "adicionou __checklistItem__ à checklist __checklist__ no __card__",
"act-addComment": "comentou em __card__: __comment__",
"act-createBoard": "criou __board__",
"act-createCard": "adicionou __card__ à __list__",
"act-createCustomField": "criou o campo customizado __customField__",
"act-createList": "adicionou __list__ a __board__",
"act-addBoardMember": "adicionou __member__ a __board__",
"act-archivedBoard": "__board__ arquivado",
"act-archivedCard": "__card__ arquivado",
"act-archivedList": "__list__ arquivada",
"act-archivedSwimlane": "__swimlane__ arquivada",
"act-importBoard": "__board__ importado",
"act-importCard": "__card__ importado",
"act-importList": "__list__ importada",
"act-joinMember": "__member__ adicionado ao __card__",
"act-moveCard": "__card__ movido de __oldList__ para __list__",
"act-removeBoardMember": "__member__ removido de __board__",
"act-restoredCard": "__card__ restaurado para __board__",
"act-unjoinMember": "__member__ removido de __card__",
"act-withBoardTitle": "__board__",
"act-withCardTitle": "[__board__] __card__",
"actions": "Actions",
"activities": "Activities",
"activity": "Activity",
"activity-added": "added %s to %s",
"activity-archived": "%s moved to Archive",
"activity-attached": "attached %s to %s",
"actions": "Ações",
"activities": "Atividade",
"activity": "Atividade",
"activity-added": "adicionado %s a %s",
"activity-archived": "%s arquivado",
"activity-attached": "anexado %s a %s",
"activity-created": "Criado %s",
"activity-customfield-created": "created custom field %s",
"activity-excluded": "excluded %s from %s",
"activity-imported": "imported %s into %s from %s",
"activity-imported-board": "imported %s from %s",
"activity-joined": "joined %s",
"activity-moved": "moved %s from %s to %s",
"activity-on": "on %s",
"activity-removed": "removed %s from %s",
"activity-sent": "sent %s to %s",
"activity-unjoined": "unjoined %s",
"activity-subtask-added": "added subtask to %s",
"activity-checked-item": "checked %s in checklist %s of %s",
"activity-unchecked-item": "unchecked %s in checklist %s of %s",
"activity-checklist-added": "added checklist to %s",
"activity-checklist-removed": "removed a checklist from %s",
"activity-checklist-completed": "completed the checklist %s of %s",
"activity-checklist-uncompleted": "uncompleted the checklist %s of %s",
"activity-customfield-created": "criado campo customizado %s",
"activity-excluded": "excuído %s de %s",
"activity-imported": "importado %s para %s de %s",
"activity-imported-board": "importado %s de %s",
"activity-joined": "entrou em %s",
"activity-moved": "movido %s de %s para %s",
"activity-on": "em %s",
"activity-removed": "removido %s de %s",
"activity-sent": "enviado %s para %s",
"activity-unjoined": "saiu de %s",
"activity-subtask-added": "adicionada subtarefa a %s",
"activity-checked-item": "marcado %s na checklist %s de %s",
"activity-unchecked-item": "desmarcado %s na checklist %s de %s",
"activity-checklist-added": "checklist adicionada a %s",
"activity-checklist-removed": "checklist removida de %s",
"activity-checklist-completed": "checklist %s de %s foi completada",
"activity-checklist-uncompleted": "checklist %s de %s foi marcada como não completada",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-removed": "removed a checklist item from '%s' in %s",
"add": "Adicionar",
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comentário",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "Mais",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+40 -16
View File
@@ -169,14 +169,30 @@
"close-board-pop": "Вы сможете восстановить доску, нажав \"Архив\" в заголовке домашней страницы.",
"color-black": "черный",
"color-blue": "синий",
"color-crimson": "малиновый",
"color-darkgreen": "темно-зеленый",
"color-gold": "золотой",
"color-gray": "серый",
"color-green": "зеленый",
"color-indigo": "индиго",
"color-lime": "лимоновый",
"color-magenta": "маджента",
"color-mistyrose": "тускло-розовый",
"color-navy": "темно-синий",
"color-orange": "оранжевый",
"color-paleturquoise": "бледно-бирюзовый",
"color-peachpuff": "персиковый",
"color-pink": "розовый",
"color-plum": "сливовый",
"color-purple": "фиолетовый",
"color-red": "красный",
"color-saddlebrown": "кожано-коричневый",
"color-silver": "серебристый",
"color-sky": "голубой",
"color-slateblue": "серо-голубой",
"color-white": "белый",
"color-yellow": "желтый",
"unset-color": "Убрать",
"comment": "Добавить комментарий",
"comment-placeholder": "Написать комментарий",
"comment-only": "Только комментирование",
@@ -192,7 +208,7 @@
"copyCardPopup-title": "Копировать карточку",
"copyChecklistToManyCardsPopup-title": "Копировать шаблон контрольного списка в несколько карточек",
"copyChecklistToManyCardsPopup-instructions": "Названия и описания целевых карт в формате JSON",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Заголовок первой карточки\", \"description\":\"Описание первой карточки\"}, {\"title\":\"Заголовок второй карточки\",\"description\":\"Описание второй карточки\"},{\"title\":\"Заголовок последней карточки\",\"description\":\"Описание последней карточки\"} ]",
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Название первой карточки\", \"description\":\"Описание первой карточки\"}, {\"title\":\"Название второй карточки\",\"description\":\"Описание второй карточки\"},{\"title\":\"Название последней карточки\",\"description\":\"Описание последней карточки\"} ]",
"create": "Создать",
"createBoardPopup-title": "Создать доску",
"chooseBoardSourcePopup-title": "Импортировать доску",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "Это действие удалит все карточки из этого списка с доски. Чтобы просмотреть карточки в Архиве и вернуть их на доску, нажмите “Меню” > “Архив”.",
"list-move-cards": "Переместить все карточки в этом списке",
"list-select-cards": "Выбрать все карточки в этом списке",
"set-color-list": "Задать цвет",
"listActionPopup-title": "Список действий",
"swimlaneActionPopup-title": "Действия с дорожкой",
"swimlaneAddPopup-title": "Добавить дорожку ниже",
"listImportCardPopup-title": "Импортировать Trello карточку",
"listMorePopup-title": "Поделиться",
"link-list": "Ссылка на список",
@@ -467,7 +485,7 @@
"error-notAuthorized": "У вас нет доступа на просмотр этой страницы.",
"outgoing-webhooks": "Исходящие Веб-хуки",
"outgoingWebhooksPopup-title": "Исходящие Веб-хуки",
"boardCardTitlePopup-title": "Card Title Filter",
"boardCardTitlePopup-title": "Фильтр названий карточек",
"new-outgoing-webhook": "Новый исходящий Веб-хук",
"no-name": "(Неизвестный)",
"Node_version": "Версия NodeJS",
@@ -480,6 +498,7 @@
"OS_Totalmem": "Общая память",
"OS_Type": "Тип ОС",
"OS_Uptime": "Время работы",
"days": "дней",
"hours": "часы",
"minutes": "минуты",
"seconds": "секунды",
@@ -500,6 +519,10 @@
"card-end-on": "Завершится до",
"editCardReceivedDatePopup-title": "Изменить дату получения",
"editCardEndDatePopup-title": "Изменить дату завершения",
"setCardColorPopup-title": "Задать цвет",
"setCardActionsColorPopup-title": "Выберите цвет",
"setSwimlaneColorPopup-title": "Выберите цвет",
"setListColorPopup-title": "Выберите цвет",
"assigned-by": "Поручил",
"requested-by": "Запросил",
"board-delete-notice": "Удаление является постоянным. Вы потеряете все списки, карты и действия, связанные с этой доской.",
@@ -538,14 +561,14 @@
"r-delete-rule": "Удалить правило",
"r-new-rule-name": "Имя нового правила",
"r-no-rules": "Нет правил",
"r-when-a-card": "When a card",
"r-when-a-card": "Когда карточка",
"r-is": " ",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-is-moved": "перемещается",
"r-added-to": "добавляется в",
"r-removed-from": "Покидает",
"r-the-board": "доску",
"r-list": "список",
"set-filter": "Set Filter",
"set-filter": "Установить фильтр",
"r-moved-to": "Перемещается в",
"r-moved-from": "Покидает",
"r-archived": "Перемещена в архив",
@@ -553,7 +576,7 @@
"r-a-card": "карточку",
"r-when-a-label-is": "Когда метка",
"r-when-the-label-is": "Когда метка",
"r-list-name": "list name",
"r-list-name": "имя",
"r-when-a-member": "Когда участник",
"r-when-the-member": "Когда участник",
"r-name": "имя",
@@ -578,6 +601,7 @@
"r-label": "метку",
"r-member": "участника",
"r-remove-all": "Удалить всех участников из карточки",
"r-set-color": "Сменить цвет на",
"r-checklist": "контрольный список",
"r-check-all": "Отметить все",
"r-uncheck-all": "Снять все",
@@ -602,9 +626,9 @@
"r-d-unarchive": "Восстановить карточку из Архива",
"r-d-add-label": "Добавить метку",
"r-d-remove-label": "Удалить метку",
"r-create-card": "Create new card",
"r-create-card": "Создать новую карточку",
"r-in-list": "в списке",
"r-in-swimlane": "in swimlane",
"r-in-swimlane": "в дорожке",
"r-d-add-member": "Добавить участника",
"r-d-remove-member": "Удалить участника",
"r-d-remove-all-member": "Удалить всех участников",
@@ -615,14 +639,14 @@
"r-d-check-of-list": "контрольного списка",
"r-d-add-checklist": "Добавить контрольный список",
"r-d-remove-checklist": "Удалить контрольный список",
"r-by": "by",
"r-by": "пользователем",
"r-add-checklist": "Добавить контрольный список",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-with-items": "с пунктами",
"r-items-list": "пункт1,пункт2,пункт3",
"r-add-swimlane": "Добавить дорожку",
"r-swimlane-name": "имя",
"r-board-note": "Примечание: пустое поле соответствует любым возможным значениям.",
"r-checklist-note": "Примечание: пункты контрольных списков при перечислении разделяются запятыми.",
"r-when-a-card-is-moved": "Когда карточка перемещена в другой список",
"ldap": "LDAP",
"oauth2": "OAuth2",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+29 -5
View File
@@ -1,7 +1,7 @@
{
"accept": "Acceptera",
"act-activity-notify": "Activity Notification",
"act-addAttachment": "bifogade __attachment__ to __card__",
"act-activity-notify": "Aktivitetsnotifikation",
"act-addAttachment": "bifogade __attachment__ till __card__",
"act-addSubtask": "lade till deluppgift __checklist__ till __card__",
"act-addChecklist": "lade till checklist __checklist__ till __card__",
"act-addChecklistItem": "lade till __checklistItem__ till checklistan __checklist__ on __card__",
@@ -10,7 +10,7 @@
"act-createCard": "lade till __card__ to __list__",
"act-createCustomField": "skapa anpassat fält __customField__",
"act-createList": "lade till __list__ to __board__",
"act-addBoardMember": "lade till __member__ to __board__",
"act-addBoardMember": "lade till __member__ till __board__",
"act-archivedBoard": "__board__ flyttades till Arkiv",
"act-archivedCard": "__card__ flyttades till Arkiv",
"act-archivedList": "__list__ flyttades till Arkiv",
@@ -81,7 +81,7 @@
"app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.",
"archive": "Flytta till Arkiv",
"archive-all": "Flytta alla till Arkiv",
"archive-board": "Move Board to Archive",
"archive-board": "Flytta Anslagstavla till Arkiv",
"archive-card": "Move Card to Archive",
"archive-list": "Move List to Archive",
"archive-swimlane": "Move Swimlane to Archive",
@@ -119,7 +119,7 @@
"bucket-example": "Gilla \"att-göra-innan-jag-dör-lista\" till exempel",
"cancel": "Avbryt",
"card-archived": "This card is moved to Archive.",
"board-archived": "This board is moved to Archive.",
"board-archived": "Den här anslagstavlan är flyttad till Arkiv.",
"card-comments-title": "Detta kort har %s kommentar.",
"card-delete-notice": "Ta bort är permanent. Du kommer att förlora alla åtgärder i samband med detta kort.",
"card-delete-pop": "Alla åtgärder kommer att tas bort från aktivitetsflöde och du kommer inte att kunna öppna kortet igen. Det går inte att ångra.",
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "svart",
"color-blue": "blå",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "grön",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "rosa",
"color-plum": "plum",
"color-purple": "lila",
"color-red": "röd",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "himmel",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "gul",
"unset-color": "Unset",
"comment": "Kommentera",
"comment-placeholder": "Skriv kommentar",
"comment-only": "Kommentera endast",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Flytta alla kort i denna lista",
"list-select-cards": "Välj alla kort i denna lista",
"set-color-list": "Set Color",
"listActionPopup-title": "Liståtgärder",
"swimlaneActionPopup-title": "Simbana-åtgärder",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Importera ett Trello kort",
"listMorePopup-title": "Mera",
"link-list": "Länk till den här listan",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS totalt minne",
"OS_Type": "OS Typ",
"OS_Uptime": "OS drifttid",
"days": "days",
"hours": "timmar",
"minutes": "minuter",
"seconds": "sekunder",
@@ -500,6 +519,10 @@
"card-end-on": "Slutar den",
"editCardReceivedDatePopup-title": "Ändra mottagningsdatum",
"editCardEndDatePopup-title": "Ändra slutdatum",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Tilldelad av",
"requested-by": "Efterfrågad av",
"board-delete-notice": "Borttagningen är permanent. Du kommer förlora alla listor, kort och händelser kopplade till den här anslagstavlan.",
@@ -578,6 +601,7 @@
"r-label": "etikett",
"r-member": "medlem",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklista",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "Nyeusi",
"color-blue": "Samawati",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "Kijani",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Changia",
"comment-placeholder": "Andika changio",
"comment-only": "Changia pekee",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "ดำ",
"color-blue": "น้ำเงิน",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "เขียว",
"color-indigo": "indigo",
"color-lime": "เหลืองมะนาว",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "ส้ม",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "ชมพู",
"color-plum": "plum",
"color-purple": "ม่วง",
"color-red": "แดง",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "ฟ้า",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "เหลือง",
"unset-color": "Unset",
"comment": "คอมเม็นต์",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "ย้ายการ์ดทั้งหมดในรายการนี้",
"list-select-cards": "เลือกการ์ดทั้งหมดในรายการนี้",
"set-color-list": "Set Color",
"listActionPopup-title": "รายการการดำเนิน",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "นำเข้าการ์ด Trello",
"listMorePopup-title": "เพิ่มเติม",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+32 -8
View File
@@ -11,10 +11,10 @@
"act-createCustomField": "__customField__ adlı özel alan yaratıldı",
"act-createList": "__list__ listesini __board__ panosuna ekledi",
"act-addBoardMember": "__member__ kullanıcısını __board__ panosuna ekledi",
"act-archivedBoard": "__board__ moved to Archive",
"act-archivedCard": "__card__ moved to Archive",
"act-archivedList": "__list__ moved to Archive",
"act-archivedSwimlane": "__swimlane__ moved to Archive",
"act-archivedBoard": "__board__ arşive taşındı",
"act-archivedCard": "__card__ Arşive taşındı",
"act-archivedList": "__list__ Arşive taşındı",
"act-archivedSwimlane": "__swimlane__ Arşive taşındı",
"act-importBoard": "__board__ panosunu içe aktardı",
"act-importCard": "__card__ kartını içe aktardı",
"act-importList": "__list__ listesini içe aktardı",
@@ -169,14 +169,30 @@
"close-board-pop": "\n92/5000\nAna başlıktaki “Arşiv” düğmesine tıklayarak tahtayı geri yükleyebilirsiniz.",
"color-black": "siyah",
"color-blue": "mavi",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "yeşil",
"color-indigo": "indigo",
"color-lime": "misket limonu",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "turuncu",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pembe",
"color-plum": "plum",
"color-purple": "mor",
"color-red": "kırmızı",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "açık mavi",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "sarı",
"unset-color": "Unset",
"comment": "Yorum",
"comment-placeholder": "Yorum Yaz",
"comment-only": "Sadece yorum",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Listedeki tüm kartları taşı",
"list-select-cards": "Listedeki tüm kartları seç",
"set-color-list": "Set Color",
"listActionPopup-title": "Liste İşlemleri",
"swimlaneActionPopup-title": "Kulvar İşlemleri",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Bir Trello kartını içeri aktar",
"listMorePopup-title": "Daha",
"link-list": "Listeye doğrudan bağlantı",
@@ -480,6 +498,7 @@
"OS_Totalmem": "İşletim Sistemi Toplam Belleği",
"OS_Type": "İşletim Sistemi Tipi",
"OS_Uptime": "İşletim Sistemi Toplam Açık Kalınan Süre",
"days": "günler",
"hours": "saat",
"minutes": "dakika",
"seconds": "saniye",
@@ -500,6 +519,10 @@
"card-end-on": "Bitiş zamanı",
"editCardReceivedDatePopup-title": "Giriş tarihini değiştir",
"editCardEndDatePopup-title": "Bitiş tarihini değiştir",
"setCardColorPopup-title": "renk ayarla",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Atamayı yapan",
"requested-by": "Talep Eden",
"board-delete-notice": "Silme kalıcıdır. Bu kartla ilişkili tüm listeleri, kartları ve işlemleri kaybedeceksiniz.",
@@ -526,7 +549,7 @@
"activity-added-label": "added label '%s' to %s",
"activity-removed-label": "removed label '%s' from %s",
"activity-delete-attach": "deleted an attachment from %s",
"activity-added-label-card": "added label '%s'",
"activity-added-label-card": "etiket eklendi '%s'",
"activity-removed-label-card": "removed label '%s'",
"activity-delete-attach-card": "Ek silindi",
"r-rule": "Kural",
@@ -538,14 +561,14 @@
"r-delete-rule": "Kuralı sil",
"r-new-rule-name": "Yeni kural başlığı",
"r-no-rules": "Kural yok",
"r-when-a-card": "When a card",
"r-when-a-card": "Kart eklendiğinde",
"r-is": "is",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-removed-from": "Removed from",
"r-the-board": "pano",
"r-list": "liste",
"set-filter": "Set Filter",
"set-filter": "Filtrele",
"r-moved-to": "Moved to",
"r-moved-from": "Moved from",
"r-archived": "Arşive taşındı",
@@ -575,9 +598,10 @@
"r-card": "Kart",
"r-add": "Ekle",
"r-remove": "Kaldır",
"r-label": "label",
"r-label": "etiket",
"r-member": "üye",
"r-remove-all": "Tüm üyeleri karttan çıkarın",
"r-set-color": "Set color to",
"r-checklist": "Kontrol Listesi",
"r-check-all": "Tümünü işaretle",
"r-uncheck-all": "Tüm işaretleri kaldır",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "чорний",
"color-blue": "синій",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "зелений",
"color-indigo": "indigo",
"color-lime": "лайм",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "помаранчевий",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "рожевий",
"color-plum": "plum",
"color-purple": "фіолетовий",
"color-red": "червоний",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "жовтий",
"unset-color": "Unset",
"comment": "Коментар",
"comment-placeholder": "Написати коментар",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "black",
"color-blue": "blue",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "green",
"color-indigo": "indigo",
"color-lime": "lime",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "orange",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "pink",
"color-plum": "plum",
"color-purple": "purple",
"color-red": "red",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "sky",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "yellow",
"unset-color": "Unset",
"comment": "Comment",
"comment-placeholder": "Write Comment",
"comment-only": "Comment only",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "Move all cards in this list",
"list-select-cards": "Select all cards in this list",
"set-color-list": "Set Color",
"listActionPopup-title": "List Actions",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "Import a Trello card",
"listMorePopup-title": "More",
"link-list": "Link to this list",
@@ -480,6 +498,7 @@
"OS_Totalmem": "OS Total Memory",
"OS_Type": "OS Type",
"OS_Uptime": "OS Uptime",
"days": "days",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+42 -18
View File
@@ -2,7 +2,7 @@
"accept": "接受",
"act-activity-notify": "活动通知",
"act-addAttachment": "添加附件 __attachment__ 至卡片 __card__",
"act-addSubtask": "添加清单 __checklist__ 到__card__",
"act-addSubtask": "添加子任务 __checklist__ 到__card__",
"act-addChecklist": "添加清单 __checklist__ 到 __card__",
"act-addChecklistItem": "向 __card__ 中的清单 __checklist__ 添加 __checklistItem__",
"act-addComment": "在 __card__ 发布评论: __comment__",
@@ -169,14 +169,30 @@
"close-board-pop": "您可以通过主页头部的“归档”按钮,来恢复看板。",
"color-black": "黑色",
"color-blue": "蓝色",
"color-crimson": "深红",
"color-darkgreen": "墨绿",
"color-gold": "金",
"color-gray": "灰",
"color-green": "绿色",
"color-indigo": "靛蓝",
"color-lime": "绿黄",
"color-magenta": "洋红",
"color-mistyrose": "玫瑰红",
"color-navy": "藏青",
"color-orange": "橙色",
"color-paleturquoise": "宝石绿",
"color-peachpuff": "桃红",
"color-pink": "粉红",
"color-plum": "紫红",
"color-purple": "紫色",
"color-red": "红色",
"color-saddlebrown": "棕褐",
"color-silver": "银",
"color-sky": "天蓝",
"color-slateblue": "石板蓝",
"color-white": "白",
"color-yellow": "黄色",
"unset-color": "复原",
"comment": "评论",
"comment-placeholder": "添加评论",
"comment-only": "仅能评论",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "将移动看板中列表的所有卡片,查看或回复归档中的卡片,点击“菜单”->“归档”",
"list-move-cards": "移动列表中的所有卡片",
"list-select-cards": "选择列表中的所有卡片",
"set-color-list": "设置颜色",
"listActionPopup-title": "列表操作",
"swimlaneActionPopup-title": "泳道图操作",
"swimlaneAddPopup-title": "在下面添加一个泳道",
"listImportCardPopup-title": "导入 Trello 卡片",
"listMorePopup-title": "更多",
"link-list": "关联到这个列表",
@@ -467,7 +485,7 @@
"error-notAuthorized": "您无权查看此页面。",
"outgoing-webhooks": "外部Web挂钩",
"outgoingWebhooksPopup-title": "外部Web挂钩",
"boardCardTitlePopup-title": "Card Title Filter",
"boardCardTitlePopup-title": "卡片标题过滤",
"new-outgoing-webhook": "新建外部Web挂钩",
"no-name": "(未知)",
"Node_version": "Node.js版本",
@@ -480,6 +498,7 @@
"OS_Totalmem": "系统全部内存",
"OS_Type": "系统类型",
"OS_Uptime": "系统运行时间",
"days": "天",
"hours": "小时",
"minutes": "分钟",
"seconds": "秒",
@@ -500,6 +519,10 @@
"card-end-on": "终止于",
"editCardReceivedDatePopup-title": "修改接收日期",
"editCardEndDatePopup-title": "修改终止日期",
"setCardColorPopup-title": "设置颜色",
"setCardActionsColorPopup-title": "选择一种颜色",
"setSwimlaneColorPopup-title": "选择一种颜色",
"setListColorPopup-title": "选择一种颜色",
"assigned-by": "分配人",
"requested-by": "需求人",
"board-delete-notice": "删除时永久操作,将会丢失此看板上的所有列表、卡片和动作。",
@@ -538,14 +561,14 @@
"r-delete-rule": "删除规则",
"r-new-rule-name": "新建规则标题",
"r-no-rules": "暂无规则",
"r-when-a-card": "When a card",
"r-when-a-card": "当一张卡片",
"r-is": "是",
"r-is-moved": "is moved",
"r-added-to": "added to",
"r-is-moved": "已经移动",
"r-added-to": "添加到",
"r-removed-from": "已移除",
"r-the-board": "该看板",
"r-list": "列表",
"set-filter": "Set Filter",
"set-filter": "设置过滤器",
"r-moved-to": "移至",
"r-moved-from": "已移动",
"r-archived": "已移动到归档",
@@ -553,7 +576,7 @@
"r-a-card": "一个卡片",
"r-when-a-label-is": "当一个标签是",
"r-when-the-label-is": "当该标签是",
"r-list-name": "list name",
"r-list-name": "列表名称",
"r-when-a-member": "当一个成员是",
"r-when-the-member": "当该成员",
"r-name": "名称",
@@ -578,6 +601,7 @@
"r-label": "标签",
"r-member": "成员",
"r-remove-all": "从卡片移除所有成员",
"r-set-color": "设置颜色",
"r-checklist": "清单",
"r-check-all": "勾选所有",
"r-uncheck-all": "取消勾选所有",
@@ -602,9 +626,9 @@
"r-d-unarchive": "从归档中恢复卡片",
"r-d-add-label": "添加标签",
"r-d-remove-label": "移除标签",
"r-create-card": "Create new card",
"r-create-card": "创建新卡片",
"r-in-list": "在列表中",
"r-in-swimlane": "in swimlane",
"r-in-swimlane": "在泳道中",
"r-d-add-member": "添加成员",
"r-d-remove-member": "移除成员",
"r-d-remove-all-member": "移除所有成员",
@@ -615,14 +639,14 @@
"r-d-check-of-list": "清单的",
"r-d-add-checklist": "添加待办清单",
"r-d-remove-checklist": "移动待办清单",
"r-by": "by",
"r-by": "在",
"r-add-checklist": "添加待办清单",
"r-with-items": "with items",
"r-items-list": "item1,item2,item3",
"r-add-swimlane": "Add swimlane",
"r-swimlane-name": "swimlane name",
"r-board-note": "Note: leave a field empty to match every possible value.",
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
"r-with-items": "与项目",
"r-items-list": "项目1,项目2,项目3",
"r-add-swimlane": "添加泳道",
"r-swimlane-name": "泳道名",
"r-board-note": "注意:保留一个空字段去匹配所有可能的值。",
"r-checklist-note": "注意:清单中的项目必须用都好分割。",
"r-when-a-card-is-moved": "当移动卡片到另一个列表时",
"ldap": "LDAP",
"oauth2": "OAuth2",
@@ -634,6 +658,6 @@
"hide-logo": "隐藏LOGO",
"add-custom-html-after-body-start": "添加定制的HTML在开始<body>之前",
"add-custom-html-before-body-end": "添加定制的HTML在结束</body>之后",
"error-undefined": "Something went wrong",
"error-ldap-login": "An error occurred while trying to login"
"error-undefined": "出了点问题",
"error-ldap-login": "尝试登陆时出错"
}
+24
View File
@@ -169,14 +169,30 @@
"close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.",
"color-black": "黑色",
"color-blue": "藍色",
"color-crimson": "crimson",
"color-darkgreen": "darkgreen",
"color-gold": "gold",
"color-gray": "gray",
"color-green": "綠色",
"color-indigo": "indigo",
"color-lime": "綠黃",
"color-magenta": "magenta",
"color-mistyrose": "mistyrose",
"color-navy": "navy",
"color-orange": "橙色",
"color-paleturquoise": "paleturquoise",
"color-peachpuff": "peachpuff",
"color-pink": "粉紅",
"color-plum": "plum",
"color-purple": "紫色",
"color-red": "紅色",
"color-saddlebrown": "saddlebrown",
"color-silver": "silver",
"color-sky": "天藍",
"color-slateblue": "slateblue",
"color-white": "white",
"color-yellow": "黃色",
"unset-color": "Unset",
"comment": "留言",
"comment-placeholder": "新增評論",
"comment-only": "只可以發表評論",
@@ -319,8 +335,10 @@
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
"list-move-cards": "移動清單中的所有卡片",
"list-select-cards": "選擇清單中的所有卡片",
"set-color-list": "Set Color",
"listActionPopup-title": "清單操作",
"swimlaneActionPopup-title": "Swimlane Actions",
"swimlaneAddPopup-title": "Add a Swimlane below",
"listImportCardPopup-title": "匯入 Trello 卡片",
"listMorePopup-title": "更多",
"link-list": "連結到這個清單",
@@ -480,6 +498,7 @@
"OS_Totalmem": "系統總記憶體",
"OS_Type": "系統類型",
"OS_Uptime": "系統運行時間",
"days": "days",
"hours": "小時",
"minutes": "分鐘",
"seconds": "秒",
@@ -500,6 +519,10 @@
"card-end-on": "Ends on",
"editCardReceivedDatePopup-title": "Change received date",
"editCardEndDatePopup-title": "Change end date",
"setCardColorPopup-title": "Set color",
"setCardActionsColorPopup-title": "Choose a color",
"setSwimlaneColorPopup-title": "Choose a color",
"setListColorPopup-title": "Choose a color",
"assigned-by": "Assigned By",
"requested-by": "Requested By",
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
@@ -578,6 +601,7 @@
"r-label": "label",
"r-member": "member",
"r-remove-all": "Remove all members from the card",
"r-set-color": "Set color to",
"r-checklist": "checklist",
"r-check-all": "Check all",
"r-uncheck-all": "Uncheck all",
+210 -34
View File
@@ -1,10 +1,19 @@
Boards = new Mongo.Collection('boards');
/**
* This is a Board.
*/
Boards.attachSchema(new SimpleSchema({
title: {
/**
* The title of the board
*/
type: String,
},
slug: {
/**
* The title slugified.
*/
type: String,
autoValue() { // eslint-disable-line consistent-return
// XXX We need to improve slug management. Only the id should be necessary
@@ -24,6 +33,9 @@ Boards.attachSchema(new SimpleSchema({
},
},
archived: {
/**
* Is the board archived?
*/
type: Boolean,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert && !this.isSet) {
@@ -32,6 +44,9 @@ Boards.attachSchema(new SimpleSchema({
},
},
createdAt: {
/**
* Creation time of the board
*/
type: Date,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert) {
@@ -43,6 +58,9 @@ Boards.attachSchema(new SimpleSchema({
},
// XXX Inconsistent field naming
modifiedAt: {
/**
* Last modification time of the board
*/
type: Date,
optional: true,
autoValue() { // eslint-disable-line consistent-return
@@ -55,6 +73,9 @@ Boards.attachSchema(new SimpleSchema({
},
// De-normalized number of users that have starred this board
stars: {
/**
* How many stars the board has
*/
type: Number,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert) {
@@ -64,6 +85,9 @@ Boards.attachSchema(new SimpleSchema({
},
// De-normalized label system
'labels': {
/**
* List of labels attached to a board
*/
type: [Object],
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert && !this.isSet) {
@@ -78,6 +102,9 @@ Boards.attachSchema(new SimpleSchema({
},
},
'labels.$._id': {
/**
* Unique id of a label
*/
// We don't specify that this field must be unique in the board because that
// will cause performance penalties and is not necessary since this field is
// always set on the server.
@@ -86,10 +113,22 @@ Boards.attachSchema(new SimpleSchema({
type: String,
},
'labels.$.name': {
/**
* Name of a label
*/
type: String,
optional: true,
},
'labels.$.color': {
/**
* color of a label.
*
* Can be amongst `green`, `yellow`, `orange`, `red`, `purple`,
* `blue`, `sky`, `lime`, `pink`, `black`,
* `silver`, `peachpuff`, `crimson`, `plum`, `darkgreen`,
* `slateblue`, `magenta`, `gold`, `navy`, `gray`,
* `saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`
*/
type: String,
allowedValues: [
'green', 'yellow', 'orange', 'red', 'purple',
@@ -103,6 +142,9 @@ Boards.attachSchema(new SimpleSchema({
// documents like de-normalized meta-data (the date the member joined the
// board, the number of contributions, etc.).
'members': {
/**
* List of members of a board
*/
type: [Object],
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert && !this.isSet) {
@@ -117,27 +159,48 @@ Boards.attachSchema(new SimpleSchema({
},
},
'members.$.userId': {
/**
* The uniq ID of the member
*/
type: String,
},
'members.$.isAdmin': {
/**
* Is the member an admin of the board?
*/
type: Boolean,
},
'members.$.isActive': {
/**
* Is the member active?
*/
type: Boolean,
},
'members.$.isNoComments': {
/**
* Is the member not allowed to make comments
*/
type: Boolean,
optional: true,
},
'members.$.isCommentOnly': {
/**
* Is the member only allowed to comment on the board
*/
type: Boolean,
optional: true,
},
permission: {
/**
* visibility of the board
*/
type: String,
allowedValues: ['public', 'private'],
},
color: {
/**
* The color of the board.
*/
type: String,
allowedValues: [
'belize',
@@ -154,24 +217,45 @@ Boards.attachSchema(new SimpleSchema({
},
},
description: {
/**
* The description of the board
*/
type: String,
optional: true,
},
subtasksDefaultBoardId: {
/**
* The default board ID assigned to subtasks.
*/
type: String,
optional: true,
defaultValue: null,
},
subtasksDefaultListId: {
/**
* The default List ID assigned to subtasks.
*/
type: String,
optional: true,
defaultValue: null,
},
allowsSubtasks: {
/**
* Does the board allows subtasks?
*/
type: Boolean,
defaultValue: true,
},
presentParentTask: {
/**
* Controls how to present the parent task:
*
* - `prefix-with-full-path`: add a prefix with the full path
* - `prefix-with-parent`: add a prefisx with the parent name
* - `subtext-with-full-path`: add a subtext with the full path
* - `subtext-with-parent`: add a subtext with the parent name
* - `no-parent`: does not show the parent at all
*/
type: String,
allowedValues: [
'prefix-with-full-path',
@@ -184,23 +268,38 @@ Boards.attachSchema(new SimpleSchema({
defaultValue: 'no-parent',
},
startAt: {
/**
* Starting date of the board.
*/
type: Date,
optional: true,
},
dueAt: {
/**
* Due date of the board.
*/
type: Date,
optional: true,
},
endAt: {
/**
* End date of the board.
*/
type: Date,
optional: true,
},
spentTime: {
/**
* Time spent in the board.
*/
type: Number,
decimal: true,
optional: true,
},
isOvertime: {
/**
* Is the board overtimed?
*/
type: Boolean,
defaultValue: false,
optional: true,
@@ -248,10 +347,37 @@ Boards.helpers({
return Lists.find({ boardId: this._id, archived: false }, { sort: { sort: 1 } });
},
nullSortLists() {
return Lists.find({
boardId: this._id,
archived: false,
sort: { $eq: null },
});
},
swimlanes() {
return Swimlanes.find({ boardId: this._id, archived: false }, { sort: { sort: 1 } });
},
nextSwimlane(swimlane) {
return Swimlanes.findOne({
boardId: this._id,
archived: false,
sort: { $gte: swimlane.sort },
_id: { $ne: swimlane._id },
}, {
sort: { sort: 1 },
});
},
nullSortSwimlanes() {
return Swimlanes.find({
boardId: this._id,
archived: false,
sort: { $eq: null },
});
},
hasOvertimeCards(){
const card = Cards.findOne({isOvertime: true, boardId: this._id, archived: false} );
return card !== undefined;
@@ -278,10 +404,6 @@ Boards.helpers({
return Users.find({ _id: { $in: _.pluck(this.members, 'userId') } });
},
getMember(id) {
return _.findWhere(this.members, { userId: id });
},
getLabel(name, color) {
return _.findWhere(this.labels, { name, color });
},
@@ -778,6 +900,14 @@ if (Meteor.isServer) {
//BOARDS REST API
if (Meteor.isServer) {
/**
* @operation get_boards_from_user
* @summary Get all boards attached to a user
*
* @param {string} userId the ID of the user to retrieve the data
* @return_type [{_id: string,
title: string}]
*/
JsonRoutes.add('GET', '/api/users/:userId/boards', function (req, res) {
try {
Authentication.checkLoggedIn(req.userId);
@@ -808,6 +938,13 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_public_boards
* @summary Get all public boards
*
* @return_type [{_id: string,
title: string}]
*/
JsonRoutes.add('GET', '/api/boards', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -829,6 +966,13 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_board
* @summary Get the board with that particular ID
*
* @param {string} boardId the ID of the board to retrieve the data
* @return_type Boards
*/
JsonRoutes.add('GET', '/api/boards/:boardId', function (req, res) {
try {
const id = req.params.boardId;
@@ -847,34 +991,31 @@ if (Meteor.isServer) {
}
});
JsonRoutes.add('PUT', '/api/boards/:boardId/members', function (req, res) {
Authentication.checkUserId(req.userId);
try {
const boardId = req.params.boardId;
const board = Boards.findOne({ _id: boardId });
const userId = req.body.userId;
const user = Users.findOne({ _id: userId });
if (!board.getMember(userId)) {
user.addInvite(boardId);
board.addMember(userId);
JsonRoutes.sendResult(res, {
code: 200,
data: id,
});
} else {
JsonRoutes.sendResult(res, {
code: 200,
});
}
}
catch (error) {
JsonRoutes.sendResult(res, {
data: error,
});
}
});
/**
* @operation new_board
* @summary Create a board
*
* @description This allows to create a board.
*
* The color has to be chosen between `belize`, `nephritis`, `pomegranate`,
* `pumpkin`, `wisteria`, `midnight`:
*
* <img src="https://wekan.github.io/board-colors.png" width="40%" alt="Wekan logo" />
*
* @param {string} title the new title of the board
* @param {string} owner "ABCDE12345" <= User ID in Wekan.
* (Not username or email)
* @param {boolean} [isAdmin] is the owner an admin of the board (default true)
* @param {boolean} [isActive] is the board active (default true)
* @param {boolean} [isNoComments] disable comments (default false)
* @param {boolean} [isCommentOnly] only enable comments (default false)
* @param {string} [permission] "private" board <== Set to "public" if you
* want public Wekan board
* @param {string} [color] the color of the board
*
* @return_type {_id: string,
defaultSwimlaneId: string}
*/
JsonRoutes.add('POST', '/api/boards', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -912,6 +1053,12 @@ if (Meteor.isServer) {
}
});
/**
* @operation delete_board
* @summary Delete a board
*
* @param {string} boardId the ID of the board
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -932,6 +1079,19 @@ if (Meteor.isServer) {
}
});
/**
* @operation add_board_label
* @summary Add a label to a board
*
* @description If the board doesn't have the name/color label, this function
* adds the label to the board.
*
* @param {string} boardId the board
* @param {string} color the color of the new label
* @param {string} name the name of the new label
*
* @return_type string
*/
JsonRoutes.add('PUT', '/api/boards/:boardId/labels', function (req, res) {
Authentication.checkUserId(req.userId);
const id = req.params.boardId;
@@ -961,6 +1121,17 @@ if (Meteor.isServer) {
}
});
/**
* @operation set_board_member_permission
* @tag Users
* @summary Change the permission of a member of a board
*
* @param {string} boardId the ID of the board that we are changing
* @param {string} memberId the ID of the user to change permissions
* @param {boolean} isAdmin admin capability
* @param {boolean} isNoComments NoComments capability
* @param {boolean} isCommentOnly CommentsOnly capability
*/
JsonRoutes.add('POST', '/api/boards/:boardId/members/:memberId', function (req, res) {
try {
const boardId = req.params.boardId;
@@ -969,9 +1140,14 @@ if (Meteor.isServer) {
Authentication.checkBoardAccess(req.userId, boardId);
const board = Boards.findOne({ _id: boardId });
function isTrue(data){
return data.toLowerCase() === 'true';
try {
return data.toLowerCase() === 'true';
}
catch (error) {
return data;
}
}
board.setMemberPermission(memberId, isTrue(isAdmin), isTrue(isNoComments), isTrue(isCommentOnly), req.userId);
const query = board.setMemberPermission(memberId, isTrue(isAdmin), isTrue(isNoComments), isTrue(isCommentOnly), req.userId);
JsonRoutes.sendResult(res, {
code: 200,
+56
View File
@@ -1,19 +1,34 @@
CardComments = new Mongo.Collection('card_comments');
/**
* A comment on a card
*/
CardComments.attachSchema(new SimpleSchema({
boardId: {
/**
* the board ID
*/
type: String,
},
cardId: {
/**
* the card ID
*/
type: String,
},
// XXX Rename in `content`? `text` is a bit vague...
text: {
/**
* the text of the comment
*/
type: String,
},
// XXX We probably don't need this information here, since we already have it
// in the associated comment creation activity
createdAt: {
/**
* when was the comment created
*/
type: Date,
denyUpdate: false,
autoValue() { // eslint-disable-line consistent-return
@@ -26,6 +41,9 @@ CardComments.attachSchema(new SimpleSchema({
},
// XXX Should probably be called `authorId`
userId: {
/**
* the author ID of the comment
*/
type: String,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert && !this.isSet) {
@@ -87,6 +105,16 @@ if (Meteor.isServer) {
//CARD COMMENT REST API
if (Meteor.isServer) {
/**
* @operation get_all_comments
* @summary Get all comments attached to a card
*
* @param {string} boardId the board ID of the card
* @param {string} cardId the ID of the card
* @return_type [{_id: string,
* comment: string,
* authorId: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments', function (req, res) {
try {
Authentication.checkUserId( req.userId);
@@ -111,6 +139,15 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_comment
* @summary Get a comment on a card
*
* @param {string} boardId the board ID of the card
* @param {string} cardId the ID of the card
* @param {string} commentId the ID of the comment to retrieve
* @return_type CardComments
*/
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
@@ -130,6 +167,16 @@ if (Meteor.isServer) {
}
});
/**
* @operation new_comment
* @summary Add a comment on a card
*
* @param {string} boardId the board ID of the card
* @param {string} cardId the ID of the card
* @param {string} authorId the user who 'posted' the comment
* @param {string} text the content of the comment
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/comments', function (req, res) {
try {
Authentication.checkUserId( req.userId);
@@ -160,6 +207,15 @@ if (Meteor.isServer) {
}
});
/**
* @operation delete_comment
* @summary Delete a comment on a card
*
* @param {string} boardId the board ID of the card
* @param {string} cardId the ID of the card
* @param {string} commentId the ID of the comment to delete
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/comments/:commentId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
+220 -1
View File
@@ -5,11 +5,17 @@ Cards = new Mongo.Collection('cards');
// of comments just to display the number of them in the board view.
Cards.attachSchema(new SimpleSchema({
title: {
/**
* the title of the card
*/
type: String,
optional: true,
defaultValue: '',
},
archived: {
/**
* is the card archived
*/
type: Boolean,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert && !this.isSet) {
@@ -18,33 +24,62 @@ Cards.attachSchema(new SimpleSchema({
},
},
parentId: {
/**
* ID of the parent card
*/
type: String,
optional: true,
defaultValue: '',
},
listId: {
/**
* List ID where the card is
*/
type: String,
optional: true,
defaultValue: '',
},
swimlaneId: {
/**
* Swimlane ID where the card is
*/
type: String,
},
// The system could work without this `boardId` information (we could deduce
// the board identifier from the card), but it would make the system more
// difficult to manage and less efficient.
boardId: {
/**
* Board ID of the card
*/
type: String,
optional: true,
defaultValue: '',
},
coverId: {
/**
* Cover ID of the card
*/
type: String,
optional: true,
defaultValue: '',
},
color: {
type: String,
optional: true,
allowedValues: [
'white', 'green', 'yellow', 'orange', 'red', 'purple',
'blue', 'sky', 'lime', 'pink', 'black',
'silver', 'peachpuff', 'crimson', 'plum', 'darkgreen',
'slateblue', 'magenta', 'gold', 'navy', 'gray',
'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo',
],
},
createdAt: {
/**
* creation date
*/
type: Date,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert) {
@@ -55,6 +90,9 @@ Cards.attachSchema(new SimpleSchema({
},
},
customFields: {
/**
* list of custom fields
*/
type: [Object],
optional: true,
defaultValue: [],
@@ -62,11 +100,17 @@ Cards.attachSchema(new SimpleSchema({
'customFields.$': {
type: new SimpleSchema({
_id: {
/**
* the ID of the related custom field
*/
type: String,
optional: true,
defaultValue: '',
},
value: {
/**
* value attached to the custom field
*/
type: Match.OneOf(String, Number, Boolean, Date),
optional: true,
defaultValue: '',
@@ -74,59 +118,95 @@ Cards.attachSchema(new SimpleSchema({
}),
},
dateLastActivity: {
/**
* Date of last activity
*/
type: Date,
autoValue() {
return new Date();
},
},
description: {
/**
* description of the card
*/
type: String,
optional: true,
defaultValue: '',
},
requestedBy: {
/**
* who requested the card (ID of the user)
*/
type: String,
optional: true,
defaultValue: '',
},
assignedBy: {
/**
* who assigned the card (ID of the user)
*/
type: String,
optional: true,
defaultValue: '',
},
labelIds: {
/**
* list of labels ID the card has
*/
type: [String],
optional: true,
defaultValue: [],
},
members: {
/**
* list of members (user IDs)
*/
type: [String],
optional: true,
defaultValue: [],
},
receivedAt: {
/**
* Date the card was received
*/
type: Date,
optional: true,
},
startAt: {
/**
* Date the card was started to be worked on
*/
type: Date,
optional: true,
},
dueAt: {
/**
* Date the card is due
*/
type: Date,
optional: true,
},
endAt: {
/**
* Date the card ended
*/
type: Date,
optional: true,
},
spentTime: {
/**
* How much time has been spent on this
*/
type: Number,
decimal: true,
optional: true,
defaultValue: 0,
},
isOvertime: {
/**
* is the card over time?
*/
type: Boolean,
defaultValue: false,
optional: true,
@@ -134,6 +214,9 @@ Cards.attachSchema(new SimpleSchema({
// XXX Should probably be called `authorId`. Is it even needed since we have
// the `members` field?
userId: {
/**
* user ID of the author of the card
*/
type: String,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert && !this.isSet) {
@@ -142,21 +225,33 @@ Cards.attachSchema(new SimpleSchema({
},
},
sort: {
/**
* Sort value
*/
type: Number,
decimal: true,
defaultValue: '',
},
subtaskSort: {
/**
* subtask sort value
*/
type: Number,
decimal: true,
defaultValue: -1,
optional: true,
},
type: {
/**
* type of the card
*/
type: String,
defaultValue: '',
},
linkedId: {
/**
* ID of the linked card
*/
type: String,
optional: true,
defaultValue: '',
@@ -351,7 +446,12 @@ Cards.helpers({
definition,
};
});
},
colorClass() {
if (this.color)
return this.color;
return '';
},
absoluteUrl() {
@@ -933,6 +1033,17 @@ Cards.mutations({
}
},
setColor(newColor) {
if (newColor === 'white') {
newColor = null;
}
return {
$set: {
color: newColor,
},
};
},
assignMember(memberId) {
return {
$addToSet: {
@@ -1309,6 +1420,17 @@ if (Meteor.isServer) {
}
//SWIMLANES REST API
if (Meteor.isServer) {
/**
* @operation get_swimlane_cards
* @summary get all cards attached to a swimlane
*
* @param {string} boardId the board ID
* @param {string} swimlaneId the swimlane ID
* @return_type [{_id: string,
* title: string,
* description: string,
* listId: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes/:swimlaneId/cards', function(req, res) {
const paramBoardId = req.params.boardId;
const paramSwimlaneId = req.params.swimlaneId;
@@ -1332,6 +1454,16 @@ if (Meteor.isServer) {
}
//LISTS REST API
if (Meteor.isServer) {
/**
* @operation get_all_cards
* @summary Get all Cards attached to a List
*
* @param {string} boardId the board ID
* @param {string} listId the list ID
* @return_type [{_id: string,
* title: string,
* description: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function(req, res) {
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
@@ -1352,6 +1484,15 @@ if (Meteor.isServer) {
});
});
/**
* @operation get_card
* @summary Get a Card
*
* @param {string} boardId the board ID
* @param {string} listId the list ID of the card
* @param {string} cardId the card ID
* @return_type Cards
*/
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards/:cardId', function(req, res) {
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
@@ -1368,10 +1509,27 @@ if (Meteor.isServer) {
});
});
/**
* @operation new_card
* @summary Create a new Card
*
* @param {string} boardId the board ID of the new card
* @param {string} listId the list ID of the new card
* @param {string} authorID the user ID of the person owning the card
* @param {string} title the title of the new card
* @param {string} description the description of the new card
* @param {string} swimlaneId the swimlane ID of the new card
* @param {string} [members] the member IDs list of the new card
* @return_type {_id: string}
*/
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;
const currentCards = Cards.find({
listId: paramListId,
archived: false,
}, { sort: ['sort'] });
const check = Users.findOne({
_id: req.body.authorId,
});
@@ -1384,7 +1542,7 @@ if (Meteor.isServer) {
description: req.body.description,
userId: req.body.authorId,
swimlaneId: req.body.swimlaneId,
sort: 0,
sort: currentCards.count(),
members,
});
JsonRoutes.sendResult(res, {
@@ -1406,6 +1564,50 @@ if (Meteor.isServer) {
}
});
/*
* Note for the JSDoc:
* 'list' will be interpreted as the path parameter
* 'listID' will be interpreted as the body parameter
*/
/**
* @operation edit_card
* @summary Edit Fields in a Card
*
* @description Edit a card
*
* The color has to be chosen between `white`, `green`, `yellow`, `orange`,
* `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`,
* `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`,
* `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`,
* `indigo`:
*
* <img src="/card-colors.png" width="40%" alt="Wekan card colors" />
*
* Note: setting the color to white has the same effect than removing it.
*
* @param {string} boardId the board ID of the card
* @param {string} list the list ID of the card
* @param {string} cardId the ID of the card
* @param {string} [title] the new title of the card
* @param {string} [listId] the new list ID of the card (move operation)
* @param {string} [description] the new description of the card
* @param {string} [authorId] change the owner of the card
* @param {string} [labelIds] the new list of label IDs attached to the card
* @param {string} [swimlaneId] the new swimlane ID of the card
* @param {string} [members] the new list of member IDs attached to the card
* @param {string} [requestedBy] the new requestedBy field of the card
* @param {string} [assignedBy] the new assignedBy field of the card
* @param {string} [receivedAt] the new receivedAt field of the card
* @param {string} [assignBy] the new assignBy field of the card
* @param {string} [startAt] the new startAt field of the card
* @param {string} [dueAt] the new dueAt field of the card
* @param {string} [endAt] the new endAt field of the card
* @param {string} [spentTime] the new spentTime field of the card
* @param {boolean} [isOverTime] the new isOverTime field of the card
* @param {string} [customFields] the new customFields value of the card
* @param {string} [color] the new color of the card
* @return_type {_id: string}
*/
JsonRoutes.add('PUT', '/api/boards/:boardId/lists/:listId/cards/:cardId', function(req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
@@ -1459,6 +1661,11 @@ if (Meteor.isServer) {
},
});
}
if (req.body.hasOwnProperty('color')) {
const newColor = req.body.color;
Cards.direct.update({_id: paramCardId, listId: paramListId, boardId: paramBoardId, archived: false},
{$set: {color: newColor}});
}
if (req.body.hasOwnProperty('labelIds')) {
let newlabelIds = req.body.labelIds;
if (_.isString(newlabelIds)) {
@@ -1551,6 +1758,18 @@ if (Meteor.isServer) {
});
});
/**
* @operation delete_card
* @summary Delete a card from a board
*
* @description This operation **deletes** a card, and therefore the card
* is not put in the recycle bin.
*
* @param {string} boardId the board ID of the card
* @param {string} list the list ID of the card
* @param {string} cardId the ID of the card
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId/cards/:cardId', function(req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
+55
View File
@@ -1,21 +1,39 @@
ChecklistItems = new Mongo.Collection('checklistItems');
/**
* An item in a checklist
*/
ChecklistItems.attachSchema(new SimpleSchema({
title: {
/**
* the text of the item
*/
type: String,
},
sort: {
/**
* the sorting field of the item
*/
type: Number,
decimal: true,
},
isFinished: {
/**
* Is the item checked?
*/
type: Boolean,
defaultValue: false,
},
checklistId: {
/**
* the checklist ID the item is attached to
*/
type: String,
},
cardId: {
/**
* the card ID the item is attached to
*/
type: String,
},
}));
@@ -193,6 +211,17 @@ if (Meteor.isServer) {
}
if (Meteor.isServer) {
/**
* @operation get_checklist_item
* @tag Checklists
* @summary Get a checklist item
*
* @param {string} boardId the board ID
* @param {string} cardId the card ID
* @param {string} checklistId the checklist ID
* @param {string} itemId the ID of the item
* @return_type ChecklistItems
*/
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramItemId = req.params.itemId;
@@ -209,6 +238,19 @@ if (Meteor.isServer) {
}
});
/**
* @operation edit_checklist_item
* @tag Checklists
* @summary Edit a checklist item
*
* @param {string} boardId the board ID
* @param {string} cardId the card ID
* @param {string} checklistId the checklist ID
* @param {string} itemId the ID of the item
* @param {string} [isFinished] is the item checked?
* @param {string} [title] the new text of the item
* @return_type {_id: string}
*/
JsonRoutes.add('PUT', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
Authentication.checkUserId( req.userId);
@@ -229,6 +271,19 @@ if (Meteor.isServer) {
});
});
/**
* @operation delete_checklist_item
* @tag Checklists
* @summary Delete a checklist item
*
* @description Note: this operation can't be reverted.
*
* @param {string} boardId the board ID
* @param {string} cardId the card ID
* @param {string} checklistId the checklist ID
* @param {string} itemId the ID of the item to be removed
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramItemId = req.params.itemId;
+63
View File
@@ -1,18 +1,33 @@
Checklists = new Mongo.Collection('checklists');
/**
* A Checklist
*/
Checklists.attachSchema(new SimpleSchema({
cardId: {
/**
* The ID of the card the checklist is in
*/
type: String,
},
title: {
/**
* the title of the checklist
*/
type: String,
defaultValue: 'Checklist',
},
finishedAt: {
/**
* When was the checklist finished
*/
type: Date,
optional: true,
},
createdAt: {
/**
* Creation date of the checklist
*/
type: Date,
denyUpdate: false,
autoValue() { // eslint-disable-line consistent-return
@@ -24,6 +39,9 @@ Checklists.attachSchema(new SimpleSchema({
},
},
sort: {
/**
* sorting value of the checklist
*/
type: Number,
decimal: true,
},
@@ -128,6 +146,15 @@ if (Meteor.isServer) {
}
if (Meteor.isServer) {
/**
* @operation get_all_checklists
* @summary Get the list of checklists attached to a card
*
* @param {string} boardId the board ID
* @param {string} cardId the card ID
* @return_type [{_id: string,
* title: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
Authentication.checkUserId( req.userId);
const paramCardId = req.params.cardId;
@@ -149,6 +176,22 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_checklist
* @summary Get a checklist
*
* @param {string} boardId the board ID
* @param {string} cardId the card ID
* @param {string} checklistId the ID of the checklist
* @return_type {cardId: string,
* title: string,
* finishedAt: string,
* createdAt: string,
* sort: number,
* items: [{_id: string,
* title: string,
* isFinished: boolean}]}
*/
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramChecklistId = req.params.checklistId;
@@ -173,6 +216,15 @@ if (Meteor.isServer) {
}
});
/**
* @operation new_checklist
* @summary create a new checklist
*
* @param {string} boardId the board ID
* @param {string} cardId the card ID
* @param {string} title the title of the new checklist
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
Authentication.checkUserId( req.userId);
@@ -204,6 +256,17 @@ if (Meteor.isServer) {
}
});
/**
* @operation delete_checklist
* @summary Delete a checklist
*
* @description The checklist will be removed, not put in the recycle bin.
*
* @param {string} boardId the board ID
* @param {string} cardId the card ID
* @param {string} checklistId the ID of the checklist to remove
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramChecklistId = req.params.checklistId;
+73
View File
@@ -1,40 +1,73 @@
CustomFields = new Mongo.Collection('customFields');
/**
* A custom field on a card in the board
*/
CustomFields.attachSchema(new SimpleSchema({
boardId: {
/**
* the ID of the board
*/
type: String,
},
name: {
/**
* name of the custom field
*/
type: String,
},
type: {
/**
* type of the custom field
*/
type: String,
allowedValues: ['text', 'number', 'date', 'dropdown'],
},
settings: {
/**
* settings of the custom field
*/
type: Object,
},
'settings.dropdownItems': {
/**
* list of drop down items objects
*/
type: [Object],
optional: true,
},
'settings.dropdownItems.$': {
type: new SimpleSchema({
_id: {
/**
* ID of the drop down item
*/
type: String,
},
name: {
/**
* name of the drop down item
*/
type: String,
},
}),
},
showOnCard: {
/**
* should we show on the cards this custom field
*/
type: Boolean,
},
automaticallyOnCard: {
/**
* should the custom fields automatically be added on cards?
*/
type: Boolean,
},
showLabelOnMiniCard: {
/**
* should the label of the custom field be shown on minicards?
*/
type: Boolean,
},
}));
@@ -88,6 +121,15 @@ if (Meteor.isServer) {
//CUSTOM FIELD REST API
if (Meteor.isServer) {
/**
* @operation get_all_custom_fields
* @summary Get the list of Custom Fields attached to a board
*
* @param {string} boardID the ID of the board
* @return_type [{_id: string,
* name: string,
* type: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/custom-fields', function (req, res) {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
@@ -103,6 +145,14 @@ if (Meteor.isServer) {
});
});
/**
* @operation get_custom_field
* @summary Get a Custom Fields attached to a board
*
* @param {string} boardID the ID of the board
* @param {string} customFieldId the ID of the custom field
* @return_type CustomFields
*/
JsonRoutes.add('GET', '/api/boards/:boardId/custom-fields/:customFieldId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
@@ -113,6 +163,19 @@ if (Meteor.isServer) {
});
});
/**
* @operation new_custom_field
* @summary Create a Custom Field
*
* @param {string} boardID the ID of the board
* @param {string} name the name of the custom field
* @param {string} type the type of the custom field
* @param {string} settings the settings object of the custom field
* @param {boolean} showOnCard should we show the custom field on cards?
* @param {boolean} automaticallyOnCard should the custom fields automatically be added on cards?
* @param {boolean} showLabelOnMiniCard should the label of the custom field be shown on minicards?
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/custom-fields', function (req, res) {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
@@ -137,6 +200,16 @@ if (Meteor.isServer) {
});
});
/**
* @operation delete_custom_field
* @summary Delete a Custom Fields attached to a board
*
* @description The Custom Field can't be retrieved after this operation
*
* @param {string} boardID the ID of the board
* @param {string} customFieldId the ID of the custom field
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/custom-fields/:customFieldId', function (req, res) {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
+15 -6
View File
@@ -6,25 +6,34 @@ if (Meteor.isServer) {
// `ApiRoutes.path('boards/export', boardId)``
// on the client instead of copy/pasting the route path manually between the
// client and the server.
/*
* This route is used to export the board FROM THE APPLICATION.
* If user is already logged-in, pass loginToken as param "authToken":
* '/api/boards/:boardId/export?authToken=:token'
/**
* @operation export
* @tag Boards
*
* @summary This route is used to export the board.
*
* @description If user is already logged-in, pass loginToken as param
* "authToken": '/api/boards/:boardId/export?authToken=:token'
*
* See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/
* for detailed explanations
*
* @param {string} boardId the ID of the board we are exporting
* @param {string} authToken the loginToken
*/
JsonRoutes.add('get', '/api/boards/:boardId/export', function(req, res) {
const boardId = req.params.boardId;
let user = null;
// todo XXX for real API, first look for token in Authentication: header
// then fallback to parameter
const loginToken = req.query.authToken;
if (loginToken) {
const hashToken = Accounts._hashLoginToken(loginToken);
user = Meteor.users.findOne({
'services.resume.loginTokens.hashedToken': hashToken,
});
} else {
Authentication.checkUserId(req.userId);
user = Users.findOne({ _id: req.userId, isAdmin: true });
}
const exporter = new Exporter(boardId);
+92 -7
View File
@@ -1,33 +1,60 @@
Integrations = new Mongo.Collection('integrations');
/**
* Integration with third-party applications
*/
Integrations.attachSchema(new SimpleSchema({
enabled: {
/**
* is the integration enabled?
*/
type: Boolean,
defaultValue: true,
},
title: {
/**
* name of the integration
*/
type: String,
optional: true,
},
type: {
/**
* type of the integratation (Default to 'outgoing-webhooks')
*/
type: String,
defaultValue: 'outgoing-webhooks',
},
activities: {
/**
* activities the integration gets triggered (list)
*/
type: [String],
defaultValue: ['all'],
},
url: { // URL validation regex (https://mathiasbynens.be/demo/url-regex)
/**
* URL validation regex (https://mathiasbynens.be/demo/url-regex)
*/
type: String,
},
token: {
/**
* token of the integration
*/
type: String,
optional: true,
},
boardId: {
/**
* Board ID of the integration
*/
type: String,
},
createdAt: {
/**
* Creation date of the integration
*/
type: Date,
denyUpdate: false,
autoValue() { // eslint-disable-line consistent-return
@@ -39,6 +66,9 @@ Integrations.attachSchema(new SimpleSchema({
},
},
userId: {
/**
* user ID who created the interation
*/
type: String,
},
}));
@@ -58,7 +88,13 @@ Integrations.allow({
//INTEGRATIONS REST API
if (Meteor.isServer) {
// Get all integrations in board
/**
* @operation get_all_integrations
* @summary Get all integrations in board
*
* @param {string} boardId the board ID
* @return_type [Integrations]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/integrations', function(req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -78,7 +114,14 @@ if (Meteor.isServer) {
}
});
// Get a single integration in board
/**
* @operation get_integration
* @summary Get a single integration in board
*
* @param {string} boardId the board ID
* @param {string} intId the integration ID
* @return_type Integrations
*/
JsonRoutes.add('GET', '/api/boards/:boardId/integrations/:intId', function(req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -98,7 +141,14 @@ if (Meteor.isServer) {
}
});
// Create a new integration
/**
* @operation new_integration
* @summary Create a new integration
*
* @param {string} boardId the board ID
* @param {string} url the URL of the integration
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/integrations', function(req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -125,7 +175,19 @@ if (Meteor.isServer) {
}
});
// Edit integration data
/**
* @operation edit_integration
* @summary Edit integration data
*
* @param {string} boardId the board ID
* @param {string} intId the integration ID
* @param {string} [enabled] is the integration enabled?
* @param {string} [title] new name of the integration
* @param {string} [url] new URL of the integration
* @param {string} [token] new token of the integration
* @param {string} [activities] new list of activities of the integration
* @return_type {_id: string}
*/
JsonRoutes.add('PUT', '/api/boards/:boardId/integrations/:intId', function (req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -173,7 +235,15 @@ if (Meteor.isServer) {
}
});
// Delete subscribed activities
/**
* @operation delete_integration_activities
* @summary Delete subscribed activities
*
* @param {string} boardId the board ID
* @param {string} intId the integration ID
* @param {string} newActivities the activities to remove from the integration
* @return_type Integrations
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId/activities', function (req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -197,7 +267,15 @@ if (Meteor.isServer) {
}
});
// Add subscribed activities
/**
* @operation new_integration_activities
* @summary Add subscribed activities
*
* @param {string} boardId the board ID
* @param {string} intId the integration ID
* @param {string} newActivities the activities to add to the integration
* @return_type Integrations
*/
JsonRoutes.add('POST', '/api/boards/:boardId/integrations/:intId/activities', function (req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -221,7 +299,14 @@ if (Meteor.isServer) {
}
});
// Delete integration
/**
* @operation delete_integration
* @summary Delete integration
*
* @param {string} boardId the board ID
* @param {string} intId the integration ID
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/integrations/:intId', function (req, res) {
try {
const paramBoardId = req.params.boardId;
+102
View File
@@ -1,10 +1,19 @@
Lists = new Mongo.Collection('lists');
/**
* A list (column) in the Wekan board.
*/
Lists.attachSchema(new SimpleSchema({
title: {
/**
* the title of the list
*/
type: String,
},
archived: {
/**
* is the list archived
*/
type: Boolean,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert && !this.isSet) {
@@ -13,9 +22,15 @@ Lists.attachSchema(new SimpleSchema({
},
},
boardId: {
/**
* the board associated to this list
*/
type: String,
},
createdAt: {
/**
* creation date
*/
type: Date,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert) {
@@ -26,12 +41,18 @@ Lists.attachSchema(new SimpleSchema({
},
},
sort: {
/**
* is the list sorted
*/
type: Number,
decimal: true,
// XXX We should probably provide a default
optional: true,
},
updatedAt: {
/**
* last update of the list
*/
type: Date,
optional: true,
autoValue() { // eslint-disable-line consistent-return
@@ -43,22 +64,49 @@ Lists.attachSchema(new SimpleSchema({
},
},
wipLimit: {
/**
* WIP object, see below
*/
type: Object,
optional: true,
},
'wipLimit.value': {
/**
* value of the WIP
*/
type: Number,
decimal: false,
defaultValue: 1,
},
'wipLimit.enabled': {
/**
* is the WIP enabled
*/
type: Boolean,
defaultValue: false,
},
'wipLimit.soft': {
/**
* is the WIP a soft or hard requirement
*/
type: Boolean,
defaultValue: false,
},
color: {
/**
* the color of the list
*/
type: String,
optional: true,
// silver is the default, so it is left out
allowedValues: [
'white', 'green', 'yellow', 'orange', 'red', 'purple',
'blue', 'sky', 'lime', 'pink', 'black',
'peachpuff', 'crimson', 'plum', 'darkgreen',
'slateblue', 'magenta', 'gold', 'navy', 'gray',
'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo',
],
},
}));
Lists.allow({
@@ -115,6 +163,12 @@ Lists.helpers({
return list.wipLimit[option] ? list.wipLimit[option] : 0; // Necessary check to avoid exceptions for the case where the doc doesn't have the wipLimit field yet set
}
},
colorClass() {
if (this.color)
return this.color;
return '';
},
});
Lists.mutations({
@@ -141,6 +195,17 @@ Lists.mutations({
setWipLimit(limit) {
return { $set: { 'wipLimit.value': limit } };
},
setColor(newColor) {
if (newColor === 'silver') {
newColor = null;
}
return {
$set: {
color: newColor,
},
};
},
});
Meteor.methods({
@@ -212,6 +277,14 @@ if (Meteor.isServer) {
//LISTS REST API
if (Meteor.isServer) {
/**
* @operation get_all_lists
* @summary Get the list of Lists attached to a board
*
* @param {string} boardId the board ID
* @return_type [{_id: string,
* title: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/lists', function (req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -235,6 +308,14 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_list
* @summary Get a List attached to a board
*
* @param {string} boardId the board ID
* @param {string} listId the List ID
* @return_type Lists
*/
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId', function (req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -253,13 +334,23 @@ if (Meteor.isServer) {
}
});
/**
* @operation new_list
* @summary Add a List to a board
*
* @param {string} boardId the board ID
* @param {string} title the title of the List
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/lists', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
const board = Boards.findOne(paramBoardId);
const id = Lists.insert({
title: req.body.title,
boardId: paramBoardId,
sort: board.lists().count(),
});
JsonRoutes.sendResult(res, {
code: 200,
@@ -276,6 +367,17 @@ if (Meteor.isServer) {
}
});
/**
* @operation delete_list
* @summary Delete a List
*
* @description This **deletes** a list from a board.
* The list is not put in the recycle bin.
*
* @param {string} boardId the board ID
* @param {string} listId the ID of the list to remove
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/lists/:listId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
+93
View File
@@ -1,10 +1,19 @@
Swimlanes = new Mongo.Collection('swimlanes');
/**
* A swimlane is an line in the kaban board.
*/
Swimlanes.attachSchema(new SimpleSchema({
title: {
/**
* the title of the swimlane
*/
type: String,
},
archived: {
/**
* is the swimlane archived?
*/
type: Boolean,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert && !this.isSet) {
@@ -13,9 +22,15 @@ Swimlanes.attachSchema(new SimpleSchema({
},
},
boardId: {
/**
* the ID of the board the swimlane is attached to
*/
type: String,
},
createdAt: {
/**
* creation date of the swimlane
*/
type: Date,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert) {
@@ -26,12 +41,33 @@ Swimlanes.attachSchema(new SimpleSchema({
},
},
sort: {
/**
* the sort value of the swimlane
*/
type: Number,
decimal: true,
// XXX We should probably provide a default
optional: true,
},
color: {
/**
* the color of the swimlane
*/
type: String,
optional: true,
// silver is the default, so it is left out
allowedValues: [
'white', 'green', 'yellow', 'orange', 'red', 'purple',
'blue', 'sky', 'lime', 'pink', 'black',
'peachpuff', 'crimson', 'plum', 'darkgreen',
'slateblue', 'magenta', 'gold', 'navy', 'gray',
'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo',
],
},
updatedAt: {
/**
* when was the swimlane last edited
*/
type: Date,
optional: true,
autoValue() { // eslint-disable-line consistent-return
@@ -72,6 +108,12 @@ Swimlanes.helpers({
board() {
return Boards.findOne(this.boardId);
},
colorClass() {
if (this.color)
return this.color;
return '';
},
});
Swimlanes.mutations({
@@ -86,6 +128,17 @@ Swimlanes.mutations({
restore() {
return { $set: { archived: false } };
},
setColor(newColor) {
if (newColor === 'silver') {
newColor = null;
}
return {
$set: {
color: newColor,
},
};
},
});
Swimlanes.hookOptions.after.update = { fetchPrevious: false };
@@ -131,6 +184,15 @@ if (Meteor.isServer) {
//SWIMLANE REST API
if (Meteor.isServer) {
/**
* @operation get_all_swimlanes
*
* @summary Get the list of swimlanes attached to a board
*
* @param {string} boardId the ID of the board
* @return_type [{_id: string,
* title: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes', function (req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -154,6 +216,15 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_swimlane
*
* @summary Get a swimlane
*
* @param {string} boardId the ID of the board
* @param {string} swimlaneId the ID of the swimlane
* @return_type Swimlanes
*/
JsonRoutes.add('GET', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res) {
try {
const paramBoardId = req.params.boardId;
@@ -172,13 +243,24 @@ if (Meteor.isServer) {
}
});
/**
* @operation new_swimlane
*
* @summary Add a swimlane to a board
*
* @param {string} boardId the ID of the board
* @param {string} title the new title of the swimlane
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/swimlanes', function (req, res) {
try {
Authentication.checkUserId( req.userId);
const paramBoardId = req.params.boardId;
const board = Boards.findOne(paramBoardId);
const id = Swimlanes.insert({
title: req.body.title,
boardId: paramBoardId,
sort: board.swimlanes().count(),
});
JsonRoutes.sendResult(res, {
code: 200,
@@ -195,6 +277,17 @@ if (Meteor.isServer) {
}
});
/**
* @operation delete_swimlane
*
* @summary Delete a swimlane
*
* @description The swimlane will be deleted, not moved to the recycle bin
*
* @param {string} boardId the ID of the board
* @param {string} swimlaneId the ID of the swimlane
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/boards/:boardId/swimlanes/:swimlaneId', function (req, res) {
try {
Authentication.checkUserId( req.userId);
+172
View File
@@ -4,8 +4,14 @@ const isSandstorm = Meteor.settings && Meteor.settings.public &&
Meteor.settings.public.sandstorm;
Users = Meteor.users;
/**
* A User in wekan
*/
Users.attachSchema(new SimpleSchema({
username: {
/**
* the username of the user
*/
type: String,
optional: true,
autoValue() { // eslint-disable-line consistent-return
@@ -18,17 +24,29 @@ Users.attachSchema(new SimpleSchema({
},
},
emails: {
/**
* the list of emails attached to a user
*/
type: [Object],
optional: true,
},
'emails.$.address': {
/**
* The email address
*/
type: String,
regEx: SimpleSchema.RegEx.Email,
},
'emails.$.verified': {
/**
* Has the email been verified
*/
type: Boolean,
},
createdAt: {
/**
* creation date of the user
*/
type: Date,
autoValue() { // eslint-disable-line consistent-return
if (this.isInsert) {
@@ -39,6 +57,9 @@ Users.attachSchema(new SimpleSchema({
},
},
profile: {
/**
* profile settings
*/
type: Object,
optional: true,
autoValue() { // eslint-disable-line consistent-return
@@ -50,50 +71,86 @@ Users.attachSchema(new SimpleSchema({
},
},
'profile.avatarUrl': {
/**
* URL of the avatar of the user
*/
type: String,
optional: true,
},
'profile.emailBuffer': {
/**
* list of email buffers of the user
*/
type: [String],
optional: true,
},
'profile.fullname': {
/**
* full name of the user
*/
type: String,
optional: true,
},
'profile.hiddenSystemMessages': {
/**
* does the user wants to hide system messages?
*/
type: Boolean,
optional: true,
},
'profile.initials': {
/**
* initials of the user
*/
type: String,
optional: true,
},
'profile.invitedBoards': {
/**
* board IDs the user has been invited to
*/
type: [String],
optional: true,
},
'profile.language': {
/**
* language of the user
*/
type: String,
optional: true,
},
'profile.notifications': {
/**
* enabled notifications for the user
*/
type: [String],
optional: true,
},
'profile.showCardsCountAt': {
/**
* showCardCountAt field of the user
*/
type: Number,
optional: true,
},
'profile.starredBoards': {
/**
* list of starred board IDs
*/
type: [String],
optional: true,
},
'profile.icode': {
/**
* icode
*/
type: String,
optional: true,
},
'profile.boardView': {
/**
* boardView field of the user
*/
type: String,
optional: true,
allowedValues: [
@@ -103,27 +160,45 @@ Users.attachSchema(new SimpleSchema({
],
},
services: {
/**
* services field of the user
*/
type: Object,
optional: true,
blackbox: true,
},
heartbeat: {
/**
* last time the user has been seen
*/
type: Date,
optional: true,
},
isAdmin: {
/**
* is the user an admin of the board?
*/
type: Boolean,
optional: true,
},
createdThroughApi: {
/**
* was the user created through the API?
*/
type: Boolean,
optional: true,
},
loginDisabled: {
/**
* loginDisabled field of the user
*/
type: Boolean,
optional: true,
},
'authenticationMethod': {
/**
* authentication method of the user
*/
type: String,
optional: false,
defaultValue: 'password',
@@ -681,6 +756,12 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_current_user
*
* @summary returns the current user
* @return_type Users
*/
JsonRoutes.add('GET', '/api/user', function(req, res) {
try {
Authentication.checkLoggedIn(req.userId);
@@ -699,6 +780,15 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_all_users
*
* @summary return all the users
*
* @description Only the admin user (the first user) can call the REST API.
* @return_type [{ _id: string,
* username: string}]
*/
JsonRoutes.add('GET', '/api/users', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -717,6 +807,16 @@ if (Meteor.isServer) {
}
});
/**
* @operation get_user
*
* @summary get a given user
*
* @description Only the admin user (the first user) can call the REST API.
*
* @param {string} userId the user ID
* @return_type Users
*/
JsonRoutes.add('GET', '/api/users/:userId', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -734,6 +834,23 @@ if (Meteor.isServer) {
}
});
/**
* @operation edit_user
*
* @summary edit a given user
*
* @description Only the admin user (the first user) can call the REST API.
*
* Possible values for *action*:
* - `takeOwnership`: The admin takes the ownership of ALL boards of the user (archived and not archived) where the user is admin on.
* - `disableLogin`: Disable a user (the user is not allowed to login and his login tokens are purged)
* - `enableLogin`: Enable a user
*
* @param {string} userId the user ID
* @param {string} action the action
* @return_type {_id: string,
* title: string}
*/
JsonRoutes.add('PUT', '/api/users/:userId', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -777,6 +894,25 @@ if (Meteor.isServer) {
}
});
/**
* @operation add_board_member
* @tag Boards
*
* @summary Add New Board Member with Role
*
* @description Only the admin user (the first user) can call the REST API.
*
* **Note**: see [Boards.set_board_member_permission](#set_board_member_permission)
* to later change the permissions.
*
* @param {string} boardId the board ID
* @param {string} userId the user ID
* @param {boolean} isAdmin is the user an admin of the board
* @param {boolean} isNoComments disable comments
* @param {boolean} isCommentOnly only enable comments
* @return_type {_id: string,
* title: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/members/:userId/add', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -817,6 +953,20 @@ if (Meteor.isServer) {
}
});
/**
* @operation remove_board_member
* @tag Boards
*
* @summary Remove Member from Board
*
* @description Only the admin user (the first user) can call the REST API.
*
* @param {string} boardId the board ID
* @param {string} userId the user ID
* @param {string} action the action (needs to be `remove`)
* @return_type {_id: string,
* title: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/members/:userId/remove', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -852,6 +1002,18 @@ if (Meteor.isServer) {
}
});
/**
* @operation new_user
*
* @summary Create a new user
*
* @description Only the admin user (the first user) can call the REST API.
*
* @param {string} username the new username
* @param {string} email the email of the new user
* @param {string} password the password of the new user
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/users/', function (req, res) {
try {
Authentication.checkUserId(req.userId);
@@ -876,6 +1038,16 @@ if (Meteor.isServer) {
}
});
/**
* @operation delete_user
*
* @summary Delete a user
*
* @description Only the admin user (the first user) can call the REST API.
*
* @param {string} userId the ID of the user to delete
* @return_type {_id: string}
*/
JsonRoutes.add('DELETE', '/api/users/:userId', function (req, res) {
try {
Authentication.checkUserId(req.userId);
+27
View File
@@ -0,0 +1,27 @@
# OpenAPI tools and doc generation
## Open API generation
This folder contains a script (`generate_openapi.py`) that extracts
the REST API of Wekan and exports it under the OpenAPI 2.0 specification
(Swagger 2.0).
### dependencies
- python3
- [esprima-python](https://github.com/Kronuz/esprima-python)
### calling the tool
python3 generate_openapi.py --release v1.65 > ../public/wekan_api.yml
## Generating docs
Now that we have the OpenAPI, it's easy enough to convert the YAML file into some nice Markdown with
[shins](https://github.com/Mermade/shins) and [api2html](https://github.com/tobilg/api2html),
or even [ReDoc](https://github.com/Rebilly/ReDoc):
api2html -c ../public/wekan-logo-header.png -o api.html ../public/wekan_api.yml
or
redoc-cli serve ../public/wekan_api.yml
+915
View File
@@ -0,0 +1,915 @@
#!/bin/env python3
import argparse
import esprima
import json
import os
import re
import sys
def get_req_body_elems(obj, elems):
if obj.type == 'FunctionExpression':
get_req_body_elems(obj.body, elems)
elif obj.type == 'BlockStatement':
for s in obj.body:
get_req_body_elems(s, elems)
elif obj.type == 'TryStatement':
get_req_body_elems(obj.block, elems)
elif obj.type == 'ExpressionStatement':
get_req_body_elems(obj.expression, elems)
elif obj.type == 'MemberExpression':
left = get_req_body_elems(obj.object, elems)
right = obj.property.name
if left == 'req.body' and right not in elems:
elems.append(right)
return '{}.{}'.format(left, right)
elif obj.type == 'VariableDeclaration':
for s in obj.declarations:
get_req_body_elems(s, elems)
elif obj.type == 'VariableDeclarator':
if obj.id.type == 'ObjectPattern':
# get_req_body_elems() can't be called directly here:
# const {isAdmin, isNoComments, isCommentOnly} = req.body;
right = get_req_body_elems(obj.init, elems)
if right == 'req.body':
for p in obj.id.properties:
name = p.key.name
if name not in elems:
elems.append(name)
else:
get_req_body_elems(obj.init, elems)
elif obj.type == 'Property':
get_req_body_elems(obj.value, elems)
elif obj.type == 'ObjectExpression':
for s in obj.properties:
get_req_body_elems(s, elems)
elif obj.type == 'CallExpression':
for s in obj.arguments:
get_req_body_elems(s, elems)
elif obj.type == 'ArrayExpression':
for s in obj.elements:
get_req_body_elems(s, elems)
elif obj.type == 'IfStatement':
get_req_body_elems(obj.test, elems)
if obj.consequent is not None:
get_req_body_elems(obj.consequent, elems)
if obj.alternate is not None:
get_req_body_elems(obj.alternate, elems)
elif obj.type in ('LogicalExpression', 'BinaryExpression', 'AssignmentExpression'):
get_req_body_elems(obj.left, elems)
get_req_body_elems(obj.right, elems)
elif obj.type in ('ReturnStatement', 'UnaryExpression'):
get_req_body_elems(obj.argument, elems)
elif obj.type == 'Literal':
pass
elif obj.type == 'Identifier':
return obj.name
elif obj.type == 'FunctionDeclaration':
pass
else:
print(obj)
return ''
def cleanup_jsdocs(jsdoc):
# remove leading spaces before the first '*'
doc = [s.lstrip() for s in jsdoc.value.split('\n')]
# remove leading stars
doc = [s.lstrip('*') for s in doc]
# remove leading empty lines
while len(doc) and not doc[0].strip():
doc.pop(0)
# remove terminating empty lines
while len(doc) and not doc[-1].strip():
doc.pop(-1)
return doc
class JS2jsonDecoder(json.JSONDecoder):
def decode(self, s):
result = super().decode(s) # result = super(Decoder, self).decode(s) for Python 2.x
return self._decode(result)
def _decode(self, o):
if isinstance(o, str) or isinstance(o, unicode):
try:
return int(o)
except ValueError:
return o
elif isinstance(o, dict):
return {k: self._decode(v) for k, v in o.items()}
elif isinstance(o, list):
return [self._decode(v) for v in o]
else:
return o
def load_return_type_jsdoc_json(data):
regex_replace = [(r'\n', r' '), # replace new lines by spaces
(r'([\{\s,])(\w+)(:)', r'\1"\2"\3'), # insert double quotes in keys
(r'(:)\s*([^:\},\]]+)\s*([\},\]])', r'\1"\2"\3'), # insert double quotes in values
(r'(\[)\s*([^{].+)\s*(\])', r'\1"\2"\3'), # insert double quotes in array items
(r'^\s*([^\[{].+)\s*', r'"\1"')] # insert double quotes in single item
for r, s in regex_replace:
data = re.sub(r, s, data)
return json.loads(data)
class EntryPoint(object):
def __init__(self, schema, statements):
self.schema = schema
self.method, self._path, self.body = statements
self._jsdoc = None
self._doc = {}
self._raw_doc = None
self.path = self.compute_path()
self.method_name = self.method.value.lower()
self.body_params = []
if self.method_name in ('post', 'put'):
get_req_body_elems(self.body, self.body_params)
# replace the :parameter in path by {parameter}
self.url = re.sub(r':([^/]*)Id', r'{\1}', self.path)
self.url = re.sub(r':([^/]*)', r'{\1}', self.url)
# reduce the api name
# get_boards_board_cards() should be get_board_cards()
tokens = self.url.split('/')
reduced_function_name = []
for i, token in enumerate(tokens):
if token in ('api'):
continue
if (i < len(tokens) - 1 and # not the last item
tokens[i + 1].startswith('{')): # and the next token is a parameter
continue
reduced_function_name.append(token.strip('{}'))
self.reduced_function_name = '_'.join(reduced_function_name)
# mark the schema as used
schema.used = True
def compute_path(self):
return self._path.value.rstrip('/')
def error(self, message):
if self._raw_doc is None:
sys.stderr.write('in {},\n'.format(self.schema.name))
sys.stderr.write('{}\n'.format(message))
return
sys.stderr.write('in {}, lines {}-{}\n'.format(self.schema.name,
self._raw_doc.loc.start.line,
self._raw_doc.loc.end.line))
sys.stderr.write('{}\n'.format(self._raw_doc.value))
sys.stderr.write('{}\n'.format(message))
@property
def doc(self):
return self._doc
@doc.setter
def doc(self, doc):
'''Parse the JSDoc attached to an entry point.
`jsdoc` will not get these right as they are not attached to a method.
So instead, we do our custom parsing here (yes, subject to errors).
The expected format is the following (empty lines between entries
are ignored):
/**
* @operation name_of_entry_point
* @tag: a_tag_to_add
* @tag: an_other_tag_to_add
* @summary A nice summary, better in one line.
*
* @description This is a quite long description.
* We can use *mardown* as the final rendering is done
* by slate.
*
* indentation doesn't matter.
*
* @param param_0 description of param 0
* @param {string} param_1 we can also put the type of the parameter
* before its name, like in JSDoc
* @param {boolean} [param_2] we can also tell if the parameter is
* optional by adding square brackets around its name
*
* @return Documents a return value
*/
Notes:
- name_of_entry_point will be referenced in the ToC of the generated
document. This is also the operationId used in the resulting openapi
file. It needs to be uniq in the namesapce (the current schema.js
file)
- tags are appended to the current Schema attached to the file
'''
self._raw_doc = doc
self._jsdoc = cleanup_jsdocs(doc)
def store_tag(tag, data):
# check that there is something to store first
if not data.strip():
return
# remove terminating whitespaces and empty lines
data = data.rstrip()
# parameters are handled specially
if tag == 'param':
if 'params' not in self._doc:
self._doc['params'] = {}
params = self._doc['params']
param_type = None
try:
name, desc = data.split(maxsplit=1)
except ValueError:
desc = ''
if name.startswith('{'):
param_type = name.strip('{}')
if param_type not in ['string', 'number', 'boolean', 'integer', 'array', 'file']:
self.error('Warning, unknown type {}\n allowed values: string, number, boolean, integer, array, file'.format(param_type))
try:
name, desc = desc.split(maxsplit=1)
except ValueError:
desc = ''
optional = name.startswith('[') and name.endswith(']')
if optional:
name = name[1:-1]
# we should not have 2 identical parameter names
if tag in params:
self.error('Warning, overwriting parameter {}'.format(name))
params[name] = (param_type, optional, desc)
if name.endswith('Id'):
# we strip out the 'Id' from the form parameters, we need
# to keep the actual description around
name = name[:-2]
if name not in params:
params[name] = (param_type, optional, desc)
return
# 'tag' can be set several times
if tag == 'tag':
if tag not in self._doc:
self._doc[tag] = []
self._doc[tag].append(data)
return
# 'return' tag is json
if tag == 'return_type':
try:
data = load_return_type_jsdoc_json(data)
except json.decoder.JSONDecodeError:
pass
# we should not have 2 identical tags but @param or @tag
if tag in self._doc:
self.error('Warning, overwriting tag {}'.format(tag))
self._doc[tag] = data
# reset the current doc fields
self._doc = {}
# first item is supposed to be the description
current_tag = 'description'
current_data = ''
for line in self._jsdoc:
if line.lstrip().startswith('@'):
tag, data = line.lstrip().split(maxsplit=1)
if tag in ['@operation', '@summary', '@description', '@param', '@return_type', '@tag']:
# store the current data
store_tag(current_tag, current_data)
current_tag = tag.lstrip('@')
current_data = ''
line = data
else:
self.error('Unknown tag {}, ignoring'.format(tag))
current_data += line + '\n'
store_tag(current_tag, current_data)
@property
def summary(self):
if 'summary' in self._doc:
# new lines are not allowed
return self._doc['summary'].replace('\n', ' ')
return None
def doc_param(self, name):
if 'params' in self._doc and name in self._doc['params']:
return self._doc['params'][name]
return None, None, None
def print_openapi_param(self, name, indent):
ptype, poptional, pdesc = self.doc_param(name)
if pdesc is not None:
print('{}description: |'.format(' ' * indent))
print('{}{}'.format(' ' * (indent + 2), pdesc))
else:
print('{}description: the {} value'.format(' ' * indent, name))
if ptype is not None:
print('{}type: {}'.format(' ' * indent, ptype))
else:
print('{}type: string'.format(' ' * indent))
if poptional:
print('{}required: false'.format(' ' * indent))
else:
print('{}required: true'.format(' ' * indent))
@property
def operationId(self):
if 'operation' in self._doc:
return self._doc['operation']
return '{}_{}'.format(self.method_name, self.reduced_function_name)
@property
def description(self):
if 'description' in self._doc:
return self._doc['description']
return None
@property
def returns(self):
if 'return_type' in self._doc:
return self._doc['return_type']
return None
@property
def tags(self):
tags = []
if self.schema.fields is not None:
tags.append(self.schema.name)
if 'tag' in self._doc:
tags.extend(self._doc['tag'])
return tags
def print_openapi_return(self, obj, indent):
if isinstance(obj, dict):
print('{}type: object'.format(' ' * indent))
print('{}properties:'.format(' ' * indent))
for k, v in obj.items():
print('{}{}:'.format(' ' * (indent + 2), k))
self.print_openapi_return(v, indent + 4)
elif isinstance(obj, list):
if len(obj) > 1:
self.error('Error while parsing @return tag, an array should have only one type')
print('{}type: array'.format(' ' * indent))
print('{}items:'.format(' ' * indent))
self.print_openapi_return(obj[0], indent + 2)
elif isinstance(obj, str) or isinstance(obj, unicode):
rtype = 'type: ' + obj
if obj == self.schema.name:
rtype = '$ref: "#/definitions/{}"'.format(obj)
print('{}{}'.format(' ' * indent, rtype))
def print_openapi(self):
parameters = [token[1:-2] if token.endswith('Id') else token[1:]
for token in self.path.split('/')
if token.startswith(':')]
print(' {}:'.format(self.method_name))
print(' operationId: {}'.format(self.operationId))
if self.summary is not None:
print(' summary: {}'.format(self.summary))
if self.description is not None:
print(' description: |')
for line in self.description.split('\n'):
if line.strip():
print(' {}'.format(line))
else:
print('')
if len(self.tags) > 0:
print(' tags:')
for tag in self.tags:
print(' - {}'.format(tag))
# export the parameters
if self.method_name in ('post', 'put'):
print(''' consumes:
- multipart/form-data
- application/json''')
if len(parameters) > 0 or self.method_name in ('post', 'put'):
print(' parameters:')
if self.method_name in ('post', 'put'):
for f in self.body_params:
print(''' - name: {}
in: formData'''.format(f))
self.print_openapi_param(f, 10)
for p in parameters:
if p in self.body_params:
self.error(' '.join((p, self.path, self.method_name)))
print(''' - name: {}
in: path'''.format(p))
self.print_openapi_param(p, 10)
print(''' produces:
- application/json
security:
- UserSecurity: []
responses:
'200':
description: |-
200 response''')
if self.returns is not None:
print(' schema:')
self.print_openapi_return(self.returns, 12)
class SchemaProperty(object):
def __init__(self, statement, schema):
self.schema = schema
self.statement = statement
self.name = statement.key.name or statement.key.value
self.type = 'object'
self.blackbox = False
self.required = True
for p in statement.value.properties:
if p.key.name == 'type':
if p.value.type == 'Identifier':
self.type = p.value.name.lower()
elif p.value.type == 'ArrayExpression':
self.type = 'array'
self.elements = [e.name.lower() for e in p.value.elements]
elif p.key.name == 'allowedValues':
self.type = 'enum'
self.enum = [e.value.lower() for e in p.value.elements]
elif p.key.name == 'blackbox':
self.blackbox = True
elif p.key.name == 'optional' and p.value.value:
self.required = False
self._doc = None
self._raw_doc = None
@property
def doc(self):
return self._doc
@doc.setter
def doc(self, jsdoc):
self._raw_doc = jsdoc
self._doc = cleanup_jsdocs(jsdoc)
def process_jsdocs(self, jsdocs):
start = self.statement.key.loc.start.line
for index, doc in enumerate(jsdocs):
if start + 1 == doc.loc.start.line:
self.doc = doc
jsdocs.pop(index)
return
def __repr__(self):
return 'SchemaProperty({}{}, {})'.format(self.name,
'*' if self.required else '',
self.doc)
def print_openapi(self, indent, current_schema, required_properties):
schema_name = self.schema.name
name = self.name
# deal with subschemas
if '.' in name:
if name.endswith('$'):
# reference in reference
subschema = ''.join([n.capitalize() for n in self.name.split('.')[:-1]])
subschema = self.schema.name + subschema
if current_schema != subschema:
if required_properties is not None and required_properties:
print(' required:')
for f in required_properties:
print(' - {}'.format(f))
required_properties.clear()
print(''' {}:
type: object'''.format(subschema))
return current_schema
subschema = name.split('.')[0]
schema_name = self.schema.name + subschema.capitalize()
name = name.split('.')[-1]
if current_schema != schema_name:
if required_properties is not None and required_properties:
print(' required:')
for f in required_properties:
print(' - {}'.format(f))
required_properties.clear()
print(''' {}:
type: object
properties:'''.format(schema_name))
if required_properties is not None and self.required:
required_properties.append(name)
print('{}{}:'.format(' ' * indent, name))
if self.doc is not None:
print('{} description: |'.format(' ' * indent))
for line in self.doc:
if line.strip():
print('{} {}'.format(' ' * indent, line))
else:
print('')
ptype = self.type
if ptype in ('enum', 'date'):
ptype = 'string'
if ptype != 'object':
print('{} type: {}'.format(' ' * indent, ptype))
if self.type == 'array':
print('{} items:'.format(' ' * indent))
for elem in self.elements:
if elem == 'object':
print('{} $ref: "#/definitions/{}"'.format(' ' * indent, schema_name + name.capitalize()))
else:
print('{} type: {}'.format(' ' * indent, elem))
if not self.required:
print('{} x-nullable: true'.format(' ' * indent))
elif self.type == 'object':
if self.blackbox:
print('{} type: object'.format(' ' * indent))
else:
print('{} $ref: "#/definitions/{}"'.format(' ' * indent, schema_name + name.capitalize()))
elif self.type == 'enum':
print('{} enum:'.format(' ' * indent))
for enum in self.enum:
print('{} - {}'.format(' ' * indent, enum))
if '.' not in self.name and not self.required:
print('{} x-nullable: true'.format(' ' * indent))
return schema_name
class Schemas(object):
def __init__(self, data=None, jsdocs=None, name=None):
self.name = name
self._data = data
self.fields = None
self.used = False
if data is not None:
if self.name is None:
self.name = data.expression.callee.object.name
content = data.expression.arguments[0].arguments[0]
self.fields = [SchemaProperty(p, self) for p in content.properties]
self._doc = None
self._raw_doc = None
if jsdocs is not None:
self.process_jsdocs(jsdocs)
@property
def doc(self):
if self._doc is None:
return None
return ' '.join(self._doc)
@doc.setter
def doc(self, jsdoc):
self._raw_doc = jsdoc
self._doc = cleanup_jsdocs(jsdoc)
def process_jsdocs(self, jsdocs):
start = self._data.loc.start.line
end = self._data.loc.end.line
for doc in jsdocs:
if doc.loc.end.line + 1 == start:
self.doc = doc
docs = [doc
for doc in jsdocs
if doc.loc.start.line >= start and doc.loc.end.line <= end]
for field in self.fields:
field.process_jsdocs(docs)
def print_openapi(self):
# empty schemas are skipped
if self.fields is None:
return
print(' {}:'.format(self.name))
print(' type: object')
if self.doc is not None:
print(' description: {}'.format(self.doc))
print(' properties:')
# first print out the object itself
properties = [field for field in self.fields if '.' not in field.name]
for prop in properties:
prop.print_openapi(6, None, None)
required_properties = [f.name for f in properties if f.required]
if required_properties:
print(' required:')
for f in required_properties:
print(' - {}'.format(f))
# then print the references
current = None
required_properties = []
properties = [f for f in self.fields if '.' in f.name and not f.name.endswith('$')]
for prop in properties:
current = prop.print_openapi(6, current, required_properties)
if required_properties:
print(' required:')
for f in required_properties:
print(' - {}'.format(f))
required_properties = []
# then print the references in the references
for prop in [f for f in self.fields if '.' in f.name and f.name.endswith('$')]:
current = prop.print_openapi(6, current, required_properties)
if required_properties:
print(' required:')
for f in required_properties:
print(' - {}'.format(f))
def parse_schemas(schemas_dir):
schemas = {}
entry_points = []
for root, dirs, files in os.walk(schemas_dir):
files.sort()
for filename in files:
path = os.path.join(root, filename)
with open(path) as f:
data = ''.join(f.readlines())
try:
# if the file failed, it's likely it doesn't contain a schema
program = esprima.parseScript(data, options={'comment': True, 'loc': True})
except:
continue
current_schema = None
jsdocs = [c for c in program.comments
if c.type == 'Block' and c.value.startswith('*\n')]
for statement in program.body:
# find the '<ITEM>.attachSchema(new SimpleSchema(<data>)'
# those are the schemas
if (statement.type == 'ExpressionStatement' and
statement.expression.callee is not None and
statement.expression.callee.property is not None and
statement.expression.callee.property.name == 'attachSchema' and
statement.expression.arguments[0].type == 'NewExpression' and
statement.expression.arguments[0].callee.name == 'SimpleSchema'):
schema = Schemas(statement, jsdocs)
current_schema = schema.name
schemas[current_schema] = schema
# find all the 'if (Meteor.isServer) { JsonRoutes.add('
# those are the entry points of the API
elif (statement.type == 'IfStatement' and
statement.test.type == 'MemberExpression' and
statement.test.object.name == 'Meteor' and
statement.test.property.name == 'isServer'):
data = [s.expression.arguments
for s in statement.consequent.body
if (s.type == 'ExpressionStatement' and
s.expression.type == 'CallExpression' and
s.expression.callee.object.name == 'JsonRoutes')]
# we found at least one entry point, keep them
if len(data) > 0:
if current_schema is None:
current_schema = filename
schemas[current_schema] = Schemas(name=current_schema)
schema_entry_points = [EntryPoint(schemas[current_schema], d)
for d in data]
entry_points.extend(schema_entry_points)
# try to match JSDoc to the operations
for entry_point in schema_entry_points:
operation = entry_point.method # POST/GET/PUT/DELETE
jsdoc = [j for j in jsdocs
if j.loc.end.line + 1 == operation.loc.start.line]
if bool(jsdoc):
entry_point.doc = jsdoc[0]
return schemas, entry_points
def generate_openapi(schemas, entry_points, version):
print('''swagger: '2.0'
info:
title: Wekan REST API
version: {0}
description: |
The REST API allows you to control and extend Wekan with ease.
If you are an end-user and not a dev or a tester, [create an issue](https://github.com/wekan/wekan/issues/new) to request new APIs.
> All API calls in the documentation are made using `curl`. However, you are free to use Java / Python / PHP / Golang / Ruby / Swift / Objective-C / Rust / Scala / C# or any other programming languages.
# Production Security Concerns
When calling a production Wekan server, ensure it is running via HTTPS and has a valid SSL Certificate. The login method requires you to post your username and password in plaintext, which is why we highly suggest only calling the REST login api over HTTPS. Also, few things to note:
* Only call via HTTPS
* Implement a timed authorization token expiration strategy
* Ensure the calling user only has permissions for what they are calling and no more
schemes:
- http
securityDefinitions:
UserSecurity:
type: apiKey
in: header
name: Authorization
paths:
/users/login:
post:
operationId: login
summary: Login with REST API
consumes:
- application/x-www-form-urlencoded
- application/json
tags:
- Login
parameters:
- name: username
in: formData
required: true
description: |
Your username
type: string
- name: password
in: formData
required: true
description: |
Your password
type: string
format: password
responses:
200:
description: |-
Successful authentication
schema:
items:
properties:
id:
type: string
token:
type: string
tokenExpires:
type: string
400:
description: |
Error in authentication
schema:
items:
properties:
error:
type: number
reason:
type: string
default:
description: |
Error in authentication
/users/register:
post:
operationId: register
summary: Register with REST API
description: |
Notes:
- You will need to provide the token for any of the authenticated methods.
consumes:
- application/x-www-form-urlencoded
- application/json
tags:
- Login
parameters:
- name: username
in: formData
required: true
description: |
Your username
type: string
- name: password
in: formData
required: true
description: |
Your password
type: string
format: password
- name: email
in: formData
required: true
description: |
Your email
type: string
responses:
200:
description: |-
Successful registration
schema:
items:
properties:
id:
type: string
token:
type: string
tokenExpires:
type: string
400:
description: |
Error in registration
schema:
items:
properties:
error:
type: number
reason:
type: string
default:
description: |
Error in registration
'''.format(version))
# GET and POST on the same path are valid, we need to reshuffle the paths
# with the path as the sorting key
methods = {}
for ep in entry_points:
if ep.path not in methods:
methods[ep.path] = []
methods[ep.path].append(ep)
sorted_paths = list(methods.keys())
sorted_paths.sort()
for path in sorted_paths:
print(' {}:'.format(methods[path][0].url))
for ep in methods[path]:
ep.print_openapi()
print('definitions:')
for schema in schemas.values():
# do not export the objects if there is no API attached
if not schema.used:
continue
schema.print_openapi()
def main():
parser = argparse.ArgumentParser(description='Generate an OpenAPI 2.0 from the given JS schemas.')
script_dir = os.path.dirname(os.path.realpath(__file__))
parser.add_argument('--release', default='git-master', nargs=1,
help='the current version of the API, can be retrieved by running `git describe --tags --abbrev=0`')
parser.add_argument('dir', default='{}/../models'.format(script_dir), nargs='?',
help='the directory where to look for schemas')
args = parser.parse_args()
schemas, entry_points = parse_schemas(args.dir)
generate_openapi(schemas, entry_points, args.release[0])
if __name__ == '__main__':
main()
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v2.00.0",
"version": "v2.09.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

+3 -3
View File
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 202,
appVersion = 211,
# Increment this for every release.
appMarketingVersion = (defaultText = "2.00.0~2019-01-04"),
appMarketingVersion = (defaultText = "2.09.0~2019-01-28"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
@@ -226,7 +226,7 @@ const pkgdef :Spk.PackageDefinition = (
verbPhrase = (defaultText = "removed from card"),
), ],
),
apiPath = "/",
apiPath = "/api",
saveIdentityCaps = true,
),
);
+21
View File
@@ -16,6 +16,27 @@ Meteor.startup(() => {
Authentication = {};
Authentication.checkUserId = function (userId) {
if (userId === undefined) {
// Monkey patch to work around the problem described in
// https://github.com/sandstorm-io/meteor-accounts-sandstorm/pull/31
const _httpMethods = HTTP.methods;
HTTP.methods = (newMethods) => {
Object.keys(newMethods).forEach((key) => {
if (newMethods[key].auth) {
newMethods[key].auth = function() {
const sandstormID = this.req.headers['x-sandstorm-user-id'];
const user = Meteor.users.findOne({'services.sandstorm.id': sandstormID});
if (user) {
userId = user._id;
}
//return user && user._id;
};
}
});
_httpMethods(newMethods);
};
}
if (userId === undefined) {
const error = new Meteor.Error('Unauthorized', 'Unauthorized');
error.statusCode = 401;
+3
View File
@@ -87,6 +87,9 @@ RulesHelper = {
if(action.actionType === 'unarchive'){
card.restore();
}
if(action.actionType === 'setColor'){
card.setColor(action.selectedColor);
}
if(action.actionType === 'addLabel'){
card.addLabel(action.labelId);
}
+19
View File
@@ -90,15 +90,34 @@ parts:
- ca-certificates
- apt-utils
- python
- python3
- g++
- capnproto
- curl
- execstack
- nodejs
- npm
stage-packages:
- libfontconfig1
override-build: |
echo "Cleaning environment first"
rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
# Create the OpenAPI specification
rm -rf .build
mkdir -p .build/python
cd .build/python
git clone --depth 1 -b master git://github.com/Kronuz/esprima-python
cd esprima-python
python3 setup.py install
cd ../../..
mkdir -p ./public/api
python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
# we temporary need api2html and mkdirp
npm install -g api2html
npm install -g mkdirp
api2html -c ./public/wekan-logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
npm uninstall -g mkdirp
npm uninstall -g api2html
# Node Fibers 100% CPU usage issue:
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
# https://github.com/meteor/meteor/issues/9796#issuecomment-381676326