Procházet zdrojové kódy

Merge branch 'devel' into greenkeeper-xss-0.3.3

Lauri Ojansivu před 8 roky
rodič
revize
0065ca3ad6
76 změnil soubory, kde provedl 5067 přidání a 1044 odebrání
  1. 3 1
      .eslintrc.json
  2. 2 0
      .gitignore
  3. 1 0
      .meteor/packages
  4. 1 0
      .meteor/versions
  5. 1 1
      .tx/config
  6. 68 4
      CHANGELOG.md
  7. 2 59
      Contributing.md
  8. 97 6
      Dockerfile
  9. 156 16
      README.md
  10. 14 0
      client/components/activities/activities.jade
  11. 3 1
      client/components/activities/activities.js
  12. 8 0
      client/components/activities/activities.styl
  13. 1 1
      client/components/boards/boardHeader.js
  14. 20 0
      client/components/cards/cardDate.jade
  15. 228 0
      client/components/cards/cardDate.js
  16. 58 0
      client/components/cards/cardDate.styl
  17. 17 0
      client/components/cards/cardDetails.jade
  18. 5 0
      client/components/cards/cardDetails.js
  19. 6 1
      client/components/cards/cardDetails.styl
  20. 61 0
      client/components/cards/checklists.jade
  21. 89 0
      client/components/cards/checklists.js
  22. 68 0
      client/components/cards/checklists.styl
  23. 12 1
      client/components/cards/minicard.jade
  24. 20 1
      client/components/cards/minicard.styl
  25. 1 1
      client/components/lists/list.js
  26. 7 0
      client/components/lists/listHeader.jade
  27. 14 0
      client/components/lists/listHeader.js
  28. 11 1
      client/components/main/layouts.styl
  29. 19 11
      client/components/sidebar/sidebar.jade
  30. 8 2
      client/components/sidebar/sidebar.js
  31. 21 2
      client/components/sidebar/sidebar.styl
  32. 12 1
      client/components/sidebar/sidebarFilters.jade
  33. 20 4
      client/components/users/userHeader.jade
  34. 35 4
      client/components/users/userHeader.js
  35. 1 1
      client/lib/escapeActions.js
  36. 23 2
      client/lib/filter.js
  37. 14 15
      client/lib/i18n.js
  38. 46 28
      docker-compose.yml
  39. 67 6
      i18n/ar.i18n.json
  40. 324 0
      i18n/br.i18n.json
  41. 68 7
      i18n/ca.i18n.json
  42. 68 7
      i18n/cs.i18n.json
  43. 163 102
      i18n/de.i18n.json
  44. 28 6
      i18n/en.i18n.json
  45. 65 8
      i18n/es-ES.i18n.json
  46. 108 47
      i18n/es.i18n.json
  47. 324 0
      i18n/fa.i18n.json
  48. 316 255
      i18n/fi.i18n.json
  49. 70 9
      i18n/fr.i18n.json
  50. 69 8
      i18n/he.i18n.json
  51. 256 195
      i18n/it.i18n.json
  52. 156 95
      i18n/ja.i18n.json
  53. 68 7
      i18n/ko.i18n.json
  54. 68 7
      i18n/pl.i18n.json
  55. 67 6
      i18n/pt-BR.i18n.json
  56. 324 0
      i18n/ro.i18n.json
  57. 80 16
      i18n/ru.i18n.json
  58. 324 0
      i18n/sr.i18n.json
  59. 67 6
      i18n/tr.i18n.json
  60. 72 11
      i18n/zh-CN.i18n.json
  61. 73 12
      i18n/zh-TW.i18n.json
  62. binární
      meta/dwrensha-pgp-sig
  63. binární
      meta/keyring
  64. 7 0
      models/activities.js
  65. 1 1
      models/boards.js
  66. 6 0
      models/cardComments.js
  67. 54 0
      models/cards.js
  68. 164 0
      models/checklists.js
  69. 11 0
      models/lists.js
  70. 61 17
      models/users.js
  71. 4 4
      package.json
  72. 49 7
      sandstorm-pkgdef.capnp
  73. 282 23
      sandstorm.js
  74. 5 0
      server/lib/utils.js
  75. 4 4
      server/publications/activities.js
  76. 21 14
      server/publications/boards.js

+ 3 - 1
.eslintrc.json

@@ -117,6 +117,8 @@
     "Notifications": true,
     "allowIsBoardAdmin": true,
     "allowIsBoardMember": true,
-    "Emoji": true
+    "allowIsBoardMemberByCard": true,
+    "Emoji": true,
+    "Checklists": true
   }
 }

+ 2 - 0
.gitignore

@@ -4,3 +4,5 @@
 *.sublime-workspace
 tmp/
 node_modules/
+.vscode/
+.build/*

+ 1 - 0
.meteor/packages

@@ -75,3 +75,4 @@ seriousm:emoji-continued
 templates:tabs
 verron:autosize
 simple:json-routes
+rajit:bootstrap3-datepicker

+ 1 - 0
.meteor/versions

@@ -121,6 +121,7 @@ perak:markdown@1.0.5
 promise@0.7.3
 raix:eventemitter@0.1.3
 raix:handlebar-helpers@0.2.5
+rajit:bootstrap3-datepicker@1.5.1
 random@1.0.10
 rate-limit@1.0.5
 reactive-dict@1.1.8

+ 1 - 1
.tx/config

@@ -39,7 +39,7 @@ host = https://www.transifex.com
 # tap:i18n requires us to use `-` separator in the language identifiers whereas
 # Transifex uses a `_` separator, without an option to customize it on one side
 # or the other, so we need to do a Manual mapping.
-lang_map = es_ES: es-ES, fi_FI:fi, pt_BR:pt-BR, zh_CN:zh-CN, zh_TW: zh-TW
+lang_map = es_ES:es-ES, fa_IR:fa, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW
 
 [wekan.application]
 file_filter = i18n/<lang>.i18n.json

+ 68 - 4
CHANGELOG.md

@@ -1,4 +1,67 @@
-# v0.11
+# v0.11.1 Upcoming Wekan release
+
+2017-01-29 mquandalle gave Wekan access to xet7,
+so at 2017-01-31 xet7 started merging Wefork back to Wekan.
+At 2017-02-03 all Wefork code and pull requests are now
+merged back to Wekan.
+
+This release adds the following supported platforms:
+
+* Docker;
+* Docker on SLES12SP1.
+
+and adds the following new features:
+
+* Checklists;
+* Remove a list.
+
+and fixes the following bugs:
+
+* Typos in boards.js and boardHeader.js;
+* Build warning in jade template;
+* Using older version of MongoDB because of newer
+  version breaks uploading files and avatars.
+
+and adds the following new documentation to Wefork wiki,
+to be moved to Wekan wiki:
+
+* Developer Documentation
+* Docker
+* Docker NginxProxy
+
+Thanks to GitHub users BaobabCoder, jLouzado, lkisme, mario-orlicky,
+martingabelmann, mquandalle, stephenmoloney, umbertooo, xet7 and
+qge for their contributions.
+
+# v0.11.0 2016-12-16 Wekan fork first release
+
+This release adds the following new features:
+
+* Start- and Duedate for cards;
+* Allow IE 11 to work;
+* Option to hide system messages in the card;
+* Option to setup minimum limit to show cards count
+  for each list in board;
+* Option 'filter by empty' to filter by cards by 'no member'
+  and 'no label' properties;
+* Speedup: Added MongoDB index on CardId into Comments collection.
+* Translation updates
+
+and fixes the following bugs:
+
+* Sandstorm: username handling, restore identity, eslint regressions,
+  board not found;
+* Failure to load when navigator.language is Chinese or Finnish;
+* Hover background for labels in filter sidebar. Now correctly
+  centered;
+* Display message when user wants to choose existing username;
+* Client sometimes fails to receive current user's profile;
+* Old users could see broken presence indicators on new users.
+
+Thanks to GitHub users dwrencha, fmonthel, mario-orlicky, pierreozoux,
+shoetten, and xet7 for their contributions.
+
+# v0.11.0-rc2 2016-07-21
 
 This release adds the following new features:
 
@@ -10,6 +73,7 @@ This release adds the following new features:
 * Add a warning indicator when the application is offline;
 * A new log-in button on the public board view to sign in, even if the board
   is published;
+* New link to the keyboard shortcuts in the board sidebar;
 
 and fixes the following bugs:
 
@@ -27,14 +91,14 @@ and fixes the following bugs:
 Thanks to GitHub users alayek, AlexanderS, choclin, floatinghotpot, ForNeVeR,
 PeterDaveHello, seschwar, and TheElf for their contributions.
 
-# v0.10.1
+# v0.10.1 2015-12-30
 
 This patch release fixes two bugs on Sandstorm:
 
 * Drag and drop was broken;
 * Avatars weren’t working.
 
-# v0.10
+# v0.10 2015-12-22
 
 This release features:
 
@@ -56,7 +120,7 @@ New languages supported: Arabic, Catalan, Italian, and Russian.
 Thanks to GitHub users AlexanderS, fisle, floatinghotpot, FuzzyWuzzie, mnutt,
 ndarilek, SirCmpwn, and xavierpriour for their contributions.
 
-# v0.9
+# v0.9 2015-09-10
 
 This release is a large re-write of the previous code base. This release marks
 the beginning of our new user interface and continues to improve the overall

+ 2 - 59
Contributing.md

@@ -1,62 +1,5 @@
 # Contributing
 
-We’re glad you’re interested in helping the Wekan project! We welcome bug
-reports, enhancement ideas, and pull requests, in our GitHub bug tracker. Before
-opening a new thread please verify that your issue hasn’t already been reported.
+Please see wiki for all documentation:
 
-<https://github.com/wekan/wekan>
-
-## Security Disclosure
-
-Security is very important to us. If discover any issue regarding security,
-please disclose the information responsibly by sending an email to
-security@wekan.io and not by creating a GitHub issue.
-
-## Translations
-
-You are encouraged to translate (or improve the translation of) Wekan in your
-locale language. For that purpose we rely on
-[Transifex](https://www.transifex.com/projects/p/wekan). So the first step is to
-create a Transifex account if you don’t have one already. You can then send a
-request to join one of the translation teams. If there we will create a new one.
-
-Once you are in a team you can start translating the application. Please take a
-look at the glossary so you can agree with other (present and future)
-contributors on words to use to translate key concepts in the application like
-“boards” and “cards”.
-
-The original application is written in English, and if you want to contribute to
-the application itself, you are asked to fill the `i18n/en.i18n.json` file. When
-you do that the new strings of text to translate automatically appears on
-Transifex to be translated (the refresh may take a few hours).
-
-We pull all translations from Transifex before every new Wekan release
-candidate, ask the translators to review the app, and pull all translations
-again for the final release.
-
-## Installation
-
-Wekan is made with [Meteor](https://www.meteor.com). Thus the easiest way to
-start hacking is by installing the framework, cloning the git repository, and
-launching the application:
-
-```bash
-$ curl https://install.meteor.com/ | sh # On Mac or Linux
-$ git clone https://github.com/wekan/wekan.git
-$ cd wekan
-$ meteor
-```
-
-As for any Meteor application, Wekan is automatically refreshed when you change
-any file of the source code, just play with it to see how it behaves!
-
-## Style guide
-
-We follow the
-[meteor style guide](https://github.com/meteor/meteor/wiki/Meteor-Style-Guide).
-
-Please read the meteor style guide before making any significant contribution.
-
-## Code organisation
-
-TODO
+<https://github.com/wekan/wekan/wiki>

+ 97 - 6
Dockerfile

@@ -1,7 +1,98 @@
-FROM meteorhacks/meteord:onbuild
-MAINTAINER Maxime Quandalle <mquandalle@wekan.io>
+FROM debian:wheezy
+MAINTAINER wefork
 
-# Run as you wish!
-# docker run -d --name wekan-db mongo
-# docker run -d --link "wekan-db:db" -e "MONGO_URL=mongodb://db" \
-#   -e "ROOT_URL=http://example.com" -p 8080:80 mquandalle/wekan
+# Declare Arguments
+ARG NODE_VERSION
+ARG METEOR_RELEASE
+ARG NPM_VERSION
+ARG ARCHITECTURE
+ARG SRC_PATH
+
+# Set the environment variables (defaults where required)
+ENV BUILD_DEPS="wget curl bzip2 build-essential python git ca-certificates"
+ENV GOSU_VERSION=1.10
+ENV NODE_VERSION ${NODE_VERSION:-v0.10.48}
+ENV METEOR_RELEASE ${METEOR_RELEASE:-1.3.5.1}
+ENV NPM_VERSION ${NPM_VERSION:-3.10.10}
+ENV ARCHITECTURE ${ARCHITECTURE:-linux-x64}
+ENV SRC_PATH ${SRC_PATH:-./}
+
+# Copy the app to the image
+COPY ${SRC_PATH} /home/wekan/app
+
+RUN \
+    # Add non-root user wekan
+    useradd --user-group --system --home-dir /home/wekan wekan && \
+    \
+    # OS dependencies
+    apt-get update -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
+    \
+    # Gosu installation
+    GOSU_ARCHITECTURE="$(dpkg --print-architecture | awk -F- '{ print $NF }')" && \
+    wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCHITECTURE}" && \
+    wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCHITECTURE}.asc" && \
+    export GNUPGHOME="$(mktemp -d)" && \
+    gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && \
+    gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu && \
+    rm -R "$GNUPGHOME" /usr/local/bin/gosu.asc && \
+    chmod +x /usr/local/bin/gosu && \
+    \
+    # Download nodejs
+    wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
+    wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
+    \
+    # Verify nodejs authenticity
+    grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
+    export GNUPGHOME="$(mktemp -d)" && \
+    gpg --keyserver pool.sks-keyservers.net --recv-keys 9554F04D7259F04124DE6B476D5A82AC7E37093B && \
+    gpg --keyserver pool.sks-keyservers.net --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 && \
+    gpg --keyserver pool.sks-keyservers.net --recv-keys FD3A5288F042B6850C66B31F09FE44734EB7990E && \
+    gpg --keyserver pool.sks-keyservers.net --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 && \
+    gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D && \
+    gpg --keyserver pool.sks-keyservers.net --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 && \
+    gpg --keyserver pool.sks-keyservers.net --recv-keys B9AE9905FFD7803F25714661B63B535A4C206CA9 && \
+    gpg --refresh-keys pool.sks-keyservers.net && \
+    gpg --verify SHASUMS256.txt.asc && \
+    rm -R "$GNUPGHOME" SHASUMS256.txt.asc && \
+    \
+    # Install Node
+    tar xvzf node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
+    rm node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
+    mv node-${NODE_VERSION}-${ARCHITECTURE} /opt/nodejs && \
+    ln -s /opt/nodejs/bin/node /usr/bin/node && \
+    ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
+    \
+    # Install Node dependencies
+    npm install npm@${NPM_VERSION} -g && \
+    npm install -g node-gyp && \
+    npm install -g fibers && \
+    \
+    # Change user to wekan and install meteor
+    cd /home/wekan/ && \
+    chown wekan:wekan --recursive /home/wekan && \
+    curl https://install.meteor.com -o ./install_meteor.sh && \
+    sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \
+    echo "Starting meteor ${METEOR_RELEASE} installation...   \n" && \
+    chown wekan:wekan ./install_meteor.sh && \
+    gosu wekan:wekan sh ./install_meteor.sh && \
+    \
+    # Build app
+    cd /home/wekan/app && \
+    gosu wekan /home/wekan/.meteor/meteor npm install --save xss && \
+    gosu wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \
+    cd /home/wekan/app_build/bundle/programs/server/ && \
+    gosu wekan npm install && \
+    mv /home/wekan/app_build/bundle /build && \
+    \
+    # Cleanup
+    apt-get remove --purge -y ${BUILD_DEPS} && \
+    apt-get autoremove -y && \
+    rm -R /var/lib/apt/lists/* && \
+    rm -R /home/wekan/.meteor && \
+    rm -R /home/wekan/app && \
+    rm -R /home/wekan/app_build && \
+    rm /home/wekan/install_meteor.sh
+
+ENV PORT=80
+
+CMD ["node", "/build/main.js"]

+ 156 - 16
README.md

@@ -1,6 +1,20 @@
 # Wekan
 
-[![Join the chat][gitter_badge]][gitter_chat]
+[![Wekan chat][vanila_badge]][vanila_chat]
+
+[Donations][donations]
+
+2017-02-08 News: All of Wefork is now merged and moved back to official
+Wekan. Wefork will not accept any new issues and pull requests.
+All development happens on Wekan.
+
+[Wefork announcement and merging back][fork_announcement]
+
+[![Wefork Build Status][travis_badge]][travis_status]
+
+[Wefork FAQ][fork_faq]
+
+[Translate Wekan at Transifex][translate_wekan]
 
 Wekan is an open-source and collaborative kanban board application.
 
@@ -10,33 +24,145 @@ boards are an unbeatable tool to keep your things organized. They give you a
 visual overview of the current state of your project, and make you productive by
 allowing you to focus on the few items that matter the most.
 
-[![Our roadmap is self-hosted on Wekan][screenshot]][roadmap]
-
 Wekan supports most features you would expect of it including a real-time user
-interface, cards comments, member assignations, customizable labels, filtered
-views, and more.
+interface, import from Trello (on standalone Wekan), cards comments, checklists,
+member assignations, customizable labels, closing lists, filtered views, and more.
+
+SSO options like LDAP, passwordless email, SAML, GitHub and Google Auth are
+already available on Sandstorm, not standalone Wekan. Sandstorm is Enterprise
+scale highly secure platform with grains, logging, admin settings,
+server clustering, App Market and it's now fully Open Source. Sandstorm is
+preferred platform for Wekan, as it would take a lot of work to reimplement
+everything in standalone Wekan.
+
+You don’t have to trust us with your data and can install Wekan on your own
+computer or server. In fact we encourage you to do that by providing
+one-click installation on various platforms.
+
+## Roadmap
+
+Upcoming Wekan App Development Platform will make possible
+many use cases like kanban workflows, dependencies, gantt charts,
+WIP limits, time tracking, managing website, Rocket.Chat support
+and custom apps with themes by providing Teams/Organizations,
+APIs, admin interface, custom fields, calendar view, time tracking,
+vote on cards, move cards to another board and board templates.
+Some of these don't even have feature requests in Wekan issues,
+so we do need detailed descriptions, screenshots and links to
+videos how these should work.
 
-Since it is a free software, you don’t have to trust us with your data and can
+We are very welcoming to new developers and teams to submit new pull
+requests to devel branch to make this Wekan App Development Platform possible
+faster. Please see [Developer Documentation][dev_docs] to get started.
+We also welcome sponsors for features. By working directly with Wekan you
+get the benefit of active maintenance and new features added by
+growing Wekan developer community.
+
+[Roadmap is self-hosted on Wekan][roadmap_wefork]
+
+At roadmap there is links to [Wekan GitHub issues][wekan_issues] where actual
+work happens. If you don't see your feature request at GitHub issues,
+please add it. Not all feature requests have been added to roadmap board yet.
+
+## Screenshot
+
+[![Screenshot of Wefork][screenshot_wefork]][roadmap_wefork]
+
+Content is being copied from [old Wekan roadmap][roadmap_wekan] to
+new one in process of merging Wefork back to Wekan.
+
+Since Wekan is a free software, you don’t have to trust us with your data and can
 install Wekan on your own computer or server. In fact we encourage you to do
-that by providing one-click installation on Heroku or [Sandstorm]
-[sandstorm_market] platforms and verified [Docker][docker_image] images. You can
-also install Wekan on the following Platforms:
+that by providing one-click installation on various platforms.
+
+## Supported Platforms
+
+Automatic generated newest builds are available for Docker, and some others that
+install directly from this repo. Automatic builds will be added later for more
+platforms.
+
+### Docker: [Docker image][docker_image], [Docs at wiki][wekan_wiki]
+
+Docker example, running latest Wekan using docker-compose:
+
+#### Running from remote dockerhub images
+```
+sudo docker-compose pull && sudo docker-compose up -d --no-build
+```
+
+#### Running from locally built dockerhub images
+```
+sudo docker-compose up -d --build
+```
+
+#### Running from locally built dockerhub images and modified `ARG` variables (not recommended)
+```
+echo 'NODE_VERSION=v6.6.0' >> .env && \
+echo 'METEOR_RELEASE=1.4.2.3' >> .env && \
+echo 'NPM_VERSION=4.1.2' >> .env && \
+echo 'ARCHITECTURE=linux-x64' >> .env && \
+echo 'SRC_PATH=./' >> .env && \
+sudo docker-compose up -d --build
+```
+
+Docker example, running latest Wekan using docker run commands alone:
+```
+docker run -d --restart=always --name wekan-db mongo:3.2.11
+
+docker run -d --restart=always --name wekan --link "wekan-db:db" -e "MONGO_URL=mongodb://db" -e "ROOT_URL=http://localhost:8080" -p 8080:80 mquandalle/wekan:latest
+```
+
+[Docker on SUSE Linux Enterprise Server 12 SP1][sles]
+
+[Install from source][install_source]
+
+[VirtualBox][virtualbox]
+
+[Debian Wheezy 64bit][debian_wheezy]
 
 [![Deploy][heroku_button]][heroku_deploy]
 [![SignUp][indiehosters_button]][indiehosters_saas]
 [![Deploy to Scalingo][scalingo_button]][scalingo_deploy]
 [![Install on Cloudron][cloudron_button]][cloudron_install]
+[![Try on Sandstorm][sandstorm_button]][sandstorm_appdemo]
+
+
+## Upcoming Platforms
+
+[Autoinstall script][autoinstall] based on [this issue][autoinstall_issue]
+
+[Create Sandstorm .spk file from source][sandstorm_spk]
+
+Email to work on already working Heroku: Use 3rd party
+email like SendGrid, update process.env.MAIL_URL ,
+change from email at Accounts.emailTeamplates.from ,
+new file in server folder called smtp.js on code
+`Meteor.startup(function () });` .
+TODO: Test and find a way to use API keys instead.
+
+Azure: Install from source. Azure endpoint needs to be added. Not tested yet.
+
+OpenShift: Not tested yet.
+
+Google Cloud: Needs info how to enable websockets.
+
+## License
 
 Wekan is released under the very permissive [MIT license](LICENSE), and made
 with [Meteor](https://www.meteor.com).
 
-[Our roadmap is self-hosted on Wekan][roadmap]
-
-[screenshot]: http://i.imgur.com/cI4jW2h.png
-[gitter_badge]: https://badges.gitter.im/Join%20Chat.svg
-[gitter_chat]: https://gitter.im/wekan/wekan
-[roadmap]: http://try.wekan.io/b/MeSsFJaSqeuo9M6bs/wekan-roadmap
-[sandstorm_market]: https://oasis.sandstorm.io/appdemo/m86q05rdvj14yvn78ghaxynqz7u2svw6rnttptxx49g1785cdv1h
+[vanila_badge]: https://vanila.io/img/join-chat-button2.png
+[vanila_chat]: https://chat.vanila.io/channel/wekan
+[fork_faq]: https://github.com/wefork/wekan/wiki/FAQ
+[fork_announcement]: https://github.com/wekan/wekan/issues/640#issuecomment-276383458
+[screenshot_wekan]: http://i.imgur.com/cI4jW2h.png
+[screenshot_wefork]: http://i.imgur.com/auWUKxO.png
+[roadmap_wekan]: http://try.wekan.io/b/MeSsFJaSqeuo9M6bs/wekan-roadmap
+[roadmap_wefork]: https://wekan.indie.host/b/t2YaGmyXgNkppcFBq/wekan-fork-roadmap
+[wekan_issues]: https://github.com/wekan/wekan/issues
+[wefork_issues]: https://github.com/wefork/wekan/issues
+[sandstorm_button]: https://img.shields.io/badge/try-Wekan%20on%20Sandstorm-783189.svg
+[sandstorm_appdemo]: https://demo.sandstorm.io/appdemo/m86q05rdvj14yvn78ghaxynqz7u2svw6rnttptxx49g1785cdv1h
 [docker_image]: https://hub.docker.com/r/mquandalle/wekan/
 [heroku_button]: https://www.herokucdn.com/deploy/button.png
 [heroku_deploy]: https://heroku.com/deploy?template=https://github.com/wekan/wekan/tree/master
@@ -46,3 +172,17 @@ with [Meteor](https://www.meteor.com).
 [scalingo_deploy]: https://my.scalingo.com/deploy?source=https://github.com/wekan/wekan#master
 [cloudron_button]: https://cloudron.io/img/button.svg
 [cloudron_install]: https://cloudron.io/button.html?app=io.wekan.cloudronapp
+[debian_wheezy]: https://github.com/soohwa/sps/blob/master/example/docs/1/wekan.md
+[travis_badge]: https://travis-ci.org/wekan/wekan.svg?branch=devel
+[travis_status]: https://travis-ci.org/wekan/wekan
+[install_source]: https://github.com/wekan/wekan/wiki/Install-and-Update#install-manually-from-source
+[sles]: https://github.com/wekan/wekan/wiki/Install-Wekan-Docker-on-SUSE-Linux-Enterprise-Server-12-SP1
+[virtualbox]: https://github.com/wekan/wekan/wiki/virtual-appliance
+[sandstorm_spk]: https://github.com/wekan/wekan/issues/823
+[docker_image]: https://hub.docker.com/r/mquandalle/wekan/
+[wekan_wiki]: https://github.com/wekan/wekan/wiki
+[translate_wekan]: https://www.transifex.com/wekan/wekan/
+[autoinstall]: https://github.com/wekan/wekan-autoinstall
+[autoinstall_issue]: https://github.com/anselal/wekan/issues/18
+[dev_docs]: https://github.com/wekan/wekan/wiki/Developer-Documentation
+[donations]: http://www.xet7.org/wekan

+ 14 - 0
client/components/activities/activities.jade

@@ -26,6 +26,12 @@ template(name="boardActivities")
             +viewer
               = comment.text
 
+        if($eq activityType 'addChecklist')
+          | {{{_ 'activity-checklist-added' cardLink}}}.
+          .activity-checklist(href="{{ card.absoluteUrl }}")
+            +viewer
+              = checklist.title
+
         if($eq activityType 'archivedCard')
           | {{{_ 'activity-archived' cardLink}}}.
 
@@ -41,6 +47,9 @@ template(name="boardActivities")
         if($eq activityType 'createList')
           | {{_ 'activity-added' list.title boardLabel}}.
 
+        if($eq activityType 'removeList')
+          | {{_ 'activity-removed' title boardLabel}}.
+
         if($eq activityType 'importBoard')
           | {{{_ 'activity-imported-board' boardLabel sourceLink}}}.
 
@@ -103,6 +112,11 @@ template(name="cardActivities")
           | {{{_ 'activity-attached' attachmentLink cardLabel}}}.
           if attachment.isImage
             img.attachment-image-preview(src=attachment.url)
+        if($eq activityType 'addChecklist')
+          | {{{_ 'activity-checklist-added' cardLabel}}}.
+          .activity-checklist
+            +viewer
+              = checklist.title
 
         if($eq activityType 'addComment')
           +inlinedForm(classNames='js-edit-comment')

+ 3 - 1
client/components/activities/activities.js

@@ -12,10 +12,12 @@ BlazeComponent.extendComponent({
       const capitalizedMode = Utils.capitalize(mode);
       const id = Session.get(`current${capitalizedMode}`);
       const limit = this.page.get() * activitiesPerPage;
+      const user = Meteor.user();
+      const hideSystem = user ? user.hasHiddenSystemMessages() : false;
       if (id === null)
         return;
 
-      this.subscribe('activities', mode, id, limit, () => {
+      this.subscribe('activities', mode, id, limit, hideSystem, () => {
         this.loadNextPageLocked = false;
 
         // If the sibear peak hasn't increased, that mean that there are no more

+ 8 - 0
client/components/activities/activities.styl

@@ -26,6 +26,14 @@
         margin-top: 5px
         padding: 5px
 
+      .activity-checklist
+        display: block
+        border-radius: 3px
+        background: white
+        text-decoration: none
+        box-shadow: 0 1px 2px rgba(0,0,0,.2)
+        margin-top: 5px
+        padding: 5px
       .activity-meta
         font-size: 0.8em
         color: darken(white, 40%)

+ 1 - 1
client/components/boards/boardHeader.js

@@ -33,7 +33,7 @@ Template.boardChangeTitlePopup.events({
     const newDesc = tpl.$('.js-board-desc').val().trim();
     if (newTitle) {
       this.rename(newTitle);
-      this.setDesciption(newDesc);
+      this.setDescription(newDesc);
       Popup.close();
     }
     evt.preventDefault();

+ 20 - 0
client/components/cards/cardDate.jade

@@ -0,0 +1,20 @@
+template(name="editCardDate")
+  .edit-card-date
+    form.edit-date
+      .fields
+        .left
+          label(for="date") {{_ 'date'}}
+          input.js-date-field#date(type="text" name="date" value=showDate placeholder=dateFormat autofocus)
+        .right
+          label(for="time") {{_ 'time'}}
+          input.js-time-field#time(type="text" name="time" value=showTime placeholder=timeFormat)
+      .js-datepicker
+      if error.get
+        .warning {{_ error.get}}
+      button.primary.wide.left.js-submit-date(type="submit") {{_ 'save'}}
+      button.js-delete-date.negate.wide.right.js-delete-date {{_ 'delete'}}
+
+template(name="dateBadge")
+  a.js-edit-date.card-date(title="{{showTitle}}" class="{{classes}}")
+    time(datetime="{{showISODate}}")
+      | {{showDate}}

+ 228 - 0
client/components/cards/cardDate.js

@@ -0,0 +1,228 @@
+// Edit start & due dates
+const EditCardDate = BlazeComponent.extendComponent({
+  template() {
+    return 'editCardDate';
+  },
+
+  onCreated() {
+    this.error = new ReactiveVar('');
+    this.card = this.data();
+    this.date = new ReactiveVar(moment.invalid());
+  },
+
+  onRendered() {
+    const $picker = this.$('.js-datepicker').datepicker({
+      todayHighlight: true,
+      todayBtn: 'linked',
+      language: TAPi18n.getLanguage(),
+    }).on('changeDate', function(evt) {
+      this.find('#date').value = moment(evt.date).format('L');
+      this.error.set('');
+      this.find('#time').focus();
+    }.bind(this));
+
+    if (this.date.get().isValid()) {
+      $picker.datepicker('update', this.date.get().toDate());
+    }
+  },
+
+  showDate() {
+    if (this.date.get().isValid())
+      return this.date.get().format('L');
+    return '';
+  },
+  showTime() {
+    if (this.date.get().isValid())
+      return this.date.get().format('LT');
+    return '';
+  },
+  dateFormat() {
+    return moment.localeData().longDateFormat('L');
+  },
+  timeFormat() {
+    return moment.localeData().longDateFormat('LT');
+  },
+
+  events() {
+    return [{
+      'keyup .js-date-field'() {
+        // parse for localized date format in strict mode
+        const dateMoment = moment(this.find('#date').value, 'L', true);
+        if (dateMoment.isValid()) {
+          this.error.set('');
+          this.$('.js-datepicker').datepicker('update', dateMoment.toDate());
+        }
+      },
+      'keyup .js-time-field'() {
+        // parse for localized time format in strict mode
+        const dateMoment = moment(this.find('#time').value, 'LT', true);
+        if (dateMoment.isValid()) {
+          this.error.set('');
+        }
+      },
+      'submit .edit-date'(evt) {
+        evt.preventDefault();
+
+        // if no time was given, init with 12:00
+        const time = evt.target.time.value || moment(new Date().setHours(12, 0, 0)).format('LT');
+
+        const dateString = `${evt.target.date.value} ${time}`;
+        const newDate = moment(dateString, 'L LT', true);
+        if (newDate.isValid()) {
+          this._storeDate(newDate.toDate());
+          Popup.close();
+        }
+        else {
+          this.error.set('invalid-date');
+          evt.target.date.focus();
+        }
+      },
+      'click .js-delete-date'(evt) {
+        evt.preventDefault();
+        this._deleteDate();
+        Popup.close();
+      },
+    }];
+  },
+});
+
+// editCardStartDatePopup
+(class extends EditCardDate {
+  onCreated() {
+    super.onCreated();
+    this.data().startAt && this.date.set(moment(this.data().startAt));
+  }
+
+  _storeDate(date) {
+    this.card.setStart(date);
+  }
+
+  _deleteDate() {
+    this.card.unsetStart();
+  }
+}).register('editCardStartDatePopup');
+
+// editCardDueDatePopup
+(class extends EditCardDate {
+  onCreated() {
+    super.onCreated();
+    this.data().dueAt && this.date.set(moment(this.data().dueAt));
+  }
+
+  onRendered() {
+    super.onRendered();
+    if (moment.isDate(this.card.startAt)) {
+      this.$('.js-datepicker').datepicker('setStartDate', this.card.startAt);
+    }
+  }
+
+  _storeDate(date) {
+    this.card.setDue(date);
+  }
+
+  _deleteDate() {
+    this.card.unsetDue();
+  }
+}).register('editCardDueDatePopup');
+
+
+// Display start & due dates
+const CardDate = BlazeComponent.extendComponent({
+  template() {
+    return 'dateBadge';
+  },
+
+  onCreated() {
+    const self = this;
+    self.date = ReactiveVar();
+    self.now = ReactiveVar(moment());
+    window.setInterval(() => {
+      self.now.set(moment());
+    }, 60000);
+  },
+
+  showDate() {
+    // this will start working once mquandalle:moment
+    // is updated to at least moment.js 2.10.5
+    // until then, the date is displayed in the "L" format
+    return this.date.get().calendar(null, {
+      sameElse: 'llll',
+    });
+  },
+
+  showISODate() {
+    return this.date.get().toISOString();
+  },
+});
+
+class CardStartDate extends CardDate {
+  onCreated() {
+    super.onCreated();
+    const self = this;
+    self.autorun(() => {
+      self.date.set(moment(self.data().startAt));
+    });
+  }
+
+  classes() {
+    if (this.date.get().isBefore(this.now.get(), 'minute') &&
+        this.now.get().isBefore(this.data().dueAt)) {
+      return 'current';
+    }
+    return '';
+  }
+
+  showTitle() {
+    return `${TAPi18n.__('card-start-on')} ${this.date.get().format('LLLL')}`;
+  }
+
+  events() {
+    return super.events().concat({
+      'click .js-edit-date': Popup.open('editCardStartDate'),
+    });
+  }
+}
+CardStartDate.register('cardStartDate');
+
+class CardDueDate extends CardDate {
+  onCreated() {
+    super.onCreated();
+    const self = this;
+    self.autorun(() => {
+      self.date.set(moment(self.data().dueAt));
+    });
+  }
+
+  classes() {
+    if (this.now.get().diff(this.date.get(), 'days') >= 2)
+      return 'long-overdue';
+    else if (this.now.get().diff(this.date.get(), 'minute') >= 0)
+      return 'due';
+    else if (this.now.get().diff(this.date.get(), 'days') >= -1)
+      return 'almost-due';
+    return '';
+  }
+
+  showTitle() {
+    return `${TAPi18n.__('card-due-on')} ${this.date.get().format('LLLL')}`;
+  }
+
+  events() {
+    return super.events().concat({
+      'click .js-edit-date': Popup.open('editCardDueDate'),
+    });
+  }
+}
+CardDueDate.register('cardDueDate');
+
+(class extends CardStartDate {
+  showDate() {
+    return this.date.get().format('l');
+  }
+}).register('minicardStartDate');
+
+(class extends CardDueDate {
+  showDate() {
+    return this.date.get().format('l');
+  }
+}).register('minicardDueDate');

+ 58 - 0
client/components/cards/cardDate.styl

@@ -0,0 +1,58 @@
+.edit-card-date
+  .fields
+    .left
+      width: 56%
+    .right
+      width: 38%
+  .datepicker
+    width: 100%
+    table
+      width: 100%
+      border: none
+      border-spacing: 0
+      border-collapse: collapse
+      thead
+        background: none
+      td, th
+        box-sizing: border-box
+
+
+.card-date
+  display: block
+  border-radius: 4px
+  padding: 1px 3px
+  
+  background-color: #dbdbdb
+  &:hover, &.is-active
+    background-color: #b3b3b3
+  
+  &.current, &.almost-due, &.due, &.long-overdue
+    color: #fff
+
+  &.current
+    background-color: #5ba639
+    &:hover, &.is-active
+      background-color: darken(#5ba639, 10)
+  
+  &.almost-due
+    background-color: #edc909
+    &:hover, &.is-active
+      background-color: darken(#edc909, 10)
+  
+  &.due
+    background-color: #fa3f00
+    &:hover, &.is-active
+      background-color: darken(#fa3f00, 10)
+  
+  &.long-overdue
+    background-color: #fd5d47
+    &:hover, &.is-active
+      background-color: darken(#fd5d47, 7)
+
+  time
+    &::before
+      font: normal normal normal 14px/1 FontAwesome
+      font-size: inherit
+      -webkit-font-smoothing: antialiased
+      content: "\f017"  // clock symbol
+      margin-right: 0.3em

+ 17 - 0
client/components/cards/cardDetails.jade

@@ -35,6 +35,17 @@ template(name="cardDetails")
           a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
             i.fa.fa-plus
 
+      if startAt
+        .card-details-item.card-details-item-start
+          h3.card-details-item-title {{_ 'card-start'}}
+          +cardStartDate
+
+      if dueAt
+        .card-details-item.card-details-item-due
+          h3.card-details-item-title {{_ 'card-due'}}
+          +cardDueDate
+
+
     //- XXX We should use "editable" to avoid repetiting ourselves
     if currentUser.isBoardMember
       h3.card-details-item-title {{_ 'description'}}
@@ -61,6 +72,10 @@ template(name="cardDetails")
       h3.card-details-item-title {{_ 'description'}}
       +viewer
         = description
+
+    hr
+    +checklists(cardId = _id)
+
     if attachments.count
       hr
       h2
@@ -91,6 +106,8 @@ template(name="cardDetailsActionsPopup")
     li: a.js-members {{_ 'card-edit-members'}}
     li: a.js-labels {{_ 'card-edit-labels'}}
     li: a.js-attachments {{_ 'card-edit-attachments'}}
+    li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
+    li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
   hr
   ul.pop-over-list
     li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}}

+ 5 - 0
client/components/cards/cardDetails.js

@@ -65,6 +65,9 @@ BlazeComponent.extendComponent({
       [`${CSSEvents.transitionend} .js-card-details`]() {
         this.isLoaded.set(true);
       },
+      [`${CSSEvents.animationend} .js-card-details`]() {
+        this.isLoaded.set(true);
+      },
     };
 
     return [{
@@ -143,6 +146,8 @@ Template.cardDetailsActionsPopup.events({
   'click .js-members': Popup.open('cardMembers'),
   'click .js-labels': Popup.open('cardLabels'),
   'click .js-attachments': Popup.open('cardAttachments'),
+  'click .js-start-date': Popup.open('editCardStartDate'),
+  'click .js-due-date': Popup.open('editCardDueDate'),
   'click .js-move-card': Popup.open('moveCard'),
   'click .js-move-card-to-top'(evt) {
     evt.preventDefault();

+ 6 - 1
client/components/cards/cardDetails.styl

@@ -73,8 +73,13 @@
     margin: 15px 0
 
     .card-details-item
+      margin-right: 0.5em
+      &:last-child
+        margin-right: 0
       &.card-details-item-labels,
-      &.card-details-item-members
+      &.card-details-item-members,
+      &.card-details-item-start,
+      &.card-details-item-due
         width: 50%
         flex-shrink: 1
 

+ 61 - 0
client/components/cards/checklists.jade

@@ -0,0 +1,61 @@
+template(name="checklists")
+  h2 {{_ 'checklists'}}
+  .card-checklist-items
+    each checklist in currentCard.checklists
+      +checklistDetail(checklist = checklist)
+  +inlinedForm(classNames="js-add-checklist" cardId = cardId)
+    +addChecklistItemForm
+  else
+    a.js-open-inlined-form
+      i.fa.fa-plus
+      | {{_ 'add-checklist'}}...
+
+template(name="checklistDetail")
+  +inlinedForm(classNames="js-edit-checklist-title" checklist = checklist)
+    +editChecklistItemForm(checklist = checklist)
+  else
+    .checklist-title
+      .checkbox.fa.fa-check-square-o
+      a.js-delete-checklist {{_ "delete"}}...
+      span.checklist-stat(class="{{#if checklist.isFinished}}is-finished{{/if}}") {{checklist.finishedCount}}/{{checklist.itemCount}}
+      h2.title.js-open-inlined-form.is-editable  {{checklist.title}}
+  +checklistItems(checklist = checklist)
+
+template(name="addChecklistItemForm")
+  textarea.js-add-checklist-item(rows='1' autofocus)
+  .edit-controls.clearfix
+    button.primary.confirm.js-submit-add-checklist-item-form(type="submit") {{_ 'save'}}
+    a.fa.fa-times-thin.js-close-inlined-form
+
+template(name="editChecklistItemForm")
+  textarea.js-edit-checklist-item(rows='1' autofocus)
+    if $eq type 'item'
+      = item.title
+    else
+      = checklist.title
+  .edit-controls.clearfix
+    button.primary.confirm.js-submit-edit-checklist-item-form(type="submit") {{_ 'save'}}
+    a.fa.fa-times-thin.js-close-inlined-form
+    span(title=createdAt) {{ moment createdAt }}
+    if currentUser.isBoardMember
+      a.js-delete-checklist-item {{_ "delete"}}...
+
+template(name="checklistItems")
+  .checklist-items
+    each item in checklist.items
+      +inlinedForm(classNames="js-edit-checklist-item" item = item checklist = checklist)
+        +editChecklistItemForm(type = 'item' item = item checklist = checklist)
+      else
+        +itemDetail(item = item checklist = checklist)
+    if currentUser.isBoardMember
+      +inlinedForm(classNames="js-add-checklist-item" checklist = checklist)
+        +addChecklistItemForm
+      else
+        a.add-checklist-item.js-open-inlined-form
+          i.fa.fa-plus
+          | {{_ 'add-checklist-item'}}...
+
+template(name='itemDetail')
+  .item
+    .check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
+    .item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}") {{item.title}}

+ 89 - 0
client/components/cards/checklists.js

@@ -0,0 +1,89 @@
+BlazeComponent.extendComponent({
+  addChecklist(event) {
+    event.preventDefault();
+    const textarea = this.find('textarea.js-add-checklist-item');
+    const title = textarea.value.trim();
+    const cardId = this.currentData().cardId;
+    Checklists.insert({
+      cardId,
+      title,
+    });
+  },
+
+  addChecklistItem(event) {
+    event.preventDefault();
+    const textarea = this.find('textarea.js-add-checklist-item');
+    const title = textarea.value.trim();
+    const checklist = this.currentData().checklist;
+    checklist.addItem(title);
+  },
+
+  editChecklist(event) {
+    event.preventDefault();
+    const textarea = this.find('textarea.js-edit-checklist-item');
+    const title = textarea.value.trim();
+    const checklist = this.currentData().checklist;
+    checklist.setTitle(title);
+  },
+
+  editChecklistItem(event) {
+    event.preventDefault();
+
+    const textarea = this.find('textarea.js-edit-checklist-item');
+    const title = textarea.value.trim();
+    const itemId = this.currentData().item._id;
+    const checklist = this.currentData().checklist;
+    checklist.editItem(itemId, title);
+  },
+
+  deleteItem() {
+    const checklist = this.currentData().checklist;
+    const item = this.currentData().item;
+    if (checklist && item && item._id) {
+      checklist.removeItem(item._id);
+    }
+  },
+
+  deleteChecklist() {
+    const checklist = this.currentData().checklist;
+    if (checklist && checklist._id) {
+      Checklists.remove(checklist._id);
+    }
+  },
+
+  pressKey(event) {
+    //If user press enter key inside a form, submit it, so user doesn't have to leave keyboard to submit a form.
+    if (event.keyCode === 13) {
+      event.preventDefault();
+      const $form = $(event.currentTarget).closest('form');
+      $form.find('button[type=submit]').click();
+    }
+  },
+
+  events() {
+    return [{
+      'submit .js-add-checklist': this.addChecklist,
+      'submit .js-edit-checklist-title': this.editChecklist,
+      'submit .js-add-checklist-item': this.addChecklistItem,
+      'submit .js-edit-checklist-item': this.editChecklistItem,
+      'click .js-delete-checklist-item': this.deleteItem,
+      'click .js-delete-checklist': this.deleteChecklist,
+      keydown: this.pressKey,
+    }];
+  },
+}).register('checklists');
+
+BlazeComponent.extendComponent({
+  toggleItem() {
+    const checklist = this.currentData().checklist;
+    const item = this.currentData().item;
+    if (checklist && item && item._id) {
+      checklist.toggleItem(item._id);
+    }
+  },
+  events() {
+    return [{
+      'click .item .check-box': this.toggleItem,
+    }];
+  },
+}).register('itemDetail');

+ 68 - 0
client/components/cards/checklists.styl

@@ -0,0 +1,68 @@
+.js-add-checklist
+  color: #8c8c8c
+
+textarea.js-add-checklist-item, textarea.js-edit-checklist-item
+  overflow: hidden
+  word-wrap: break-word
+  resize: none
+  height: 34px
+
+.delete-text
+  color: #8c8c8c
+  text-decoration: underline
+  word-wrap: break-word
+  float: right
+  padding-top: 6px
+  &:hover
+    color: inherit
+
+.checklist-title
+  .checkbox
+    float: left
+    width: 30px
+    height 30px
+    font-size: 18px
+    line-height: 30px
+
+  .title
+    font-size: 18px
+    line-height: 30px
+
+  .checklist-stat
+    margin: 0 0.5em
+    float: right
+    padding-top: 6px
+    &.is-finished
+      color: #3cb500
+
+  .js-delete-checklist
+    @extends .delete-text
+
+.checklist-items
+  margin: 0 0 0.5em 1.33em
+
+  .item
+    line-height: 25px
+    font-size: 1.1em
+    margin-top: 3px
+    display: flex
+
+    .check-box
+      margin-top: 5px
+      &.is-checked
+        border-bottom: 2px solid #3cb500
+        border-right: 2px solid #3cb500
+
+    .item-title
+      padding-left: 10px;
+      &.is-checked
+        color: #8c8c8c
+        font-style: italic
+
+  .js-delete-checklist-item
+    @extends .delete-text
+    padding: 12px 0 0 0
+
+  .add-checklist-item
+    padding-top: 0.5em
+    display: inline-block

+ 12 - 1
client/components/cards/minicard.jade

@@ -14,7 +14,7 @@ template(name="minicard")
     .badges
       if comments.count
         .badge(title="{{_ 'card-comments-title' comments.count }}")
-          span.badge-icon.fa.fa-comment-o
+          span.badge-icon.fa.fa-comment-o.badge-comment
           span.badge-text= comments.count
       if description
         .badge.badge-state-image-only(title=description)
@@ -23,3 +23,14 @@ template(name="minicard")
         .badge
           span.badge-icon.fa.fa-paperclip
           span.badge-text= attachments.count
+      if startAt
+        .badge
+          +minicardStartDate
+      if dueAt
+        .badge
+          +minicardDueDate
+      if checklists.count
+        .badge(class="{{#if checklistFinished}}is-finished{{/if}}")
+          span.badge-icon.fa.fa-check-square-o
+          span.badge-text.check-list-text {{checklistFinishedCount}}/{{checklistItemCount}}
+

+ 20 - 1
client/components/cards/minicard.styl

@@ -91,15 +91,34 @@
       margin-right: 11px
       margin-bottom: 3px
       font-size: 0.9em
+      
+      &:last-of-type
+        margin-right: 0
 
       .badge-icon,
       .badge-text
-        vertical-align: top
+        vertical-align: middle
+
+      &.is-finished
+        background: #3cb500
+        padding: 0px 3px
+        border-radius: 3px
+        color: white
+
+      .badge-icon,
+      .badge-text
+        vertical-align: middle//didn't figure why use top, it'd be easier to fill bg if it's middle. This was introduced in commit "91cfcf7b12b5e7c137c2e765b2c378dde6b82966" & "* Improve the design of the minicards badges" was mentioned.
+        &.badge-comment
+          margin-bottom: 0.1rem
 
       .badge-text
         font-size: 0.9em
         padding-left: 2px
         line-height: 14px
+      .check-list-text
+        padding-left: 0px
+        line-height: 12px
+
 
   .minicard-members
     float: right

+ 1 - 1
client/components/lists/list.js

@@ -44,7 +44,7 @@ BlazeComponent.extendComponent({
       placeholder: 'minicard-wrapper placeholder',
       start(evt, ui) {
         ui.placeholder.height(ui.helper.height());
-        EscapeActions.executeUpTo('popup');
+        EscapeActions.executeUpTo('popup-close');
         boardComponent.setIsDragging(true);
       },
       stop(evt, ui) {

+ 7 - 0
client/components/lists/listHeader.jade

@@ -6,6 +6,10 @@ template(name="listHeader")
       h2.list-header-name(
         class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
         = title
+        if showCardsCountForList cards.count
+          = cards.count
+          span.lowercase
+            |  {{_ 'cards'}}
       if currentUser.isBoardMember
         if isWatching
           i.list-header-watch-icon.fa.fa-eye
@@ -29,6 +33,9 @@ template(name="listActionPopup")
   hr
   ul.pop-over-list
     li: a.js-close-list {{_ 'archive-list'}}
+  hr
+  ul.pop-over-list
+    li: a.js-remove-list {{_ 'remove-list'}}
 
 template(name="boardLists")
   ul.pop-over-list

+ 14 - 0
client/components/lists/listHeader.js

@@ -13,6 +13,14 @@ BlazeComponent.extendComponent({
     return list.findWatcher(Meteor.userId());
   },
 
+  limitToShowCardsCount() {
+    return Meteor.user().getLimitToShowCardsCount();
+  },
+
+  showCardsCountForList(count) {
+    return count > this.limitToShowCardsCount();
+  },
+
   events() {
     return [{
       'click .js-open-list-menu': Popup.open('listAction'),
@@ -52,4 +60,10 @@ Template.listActionPopup.events({
     this.archive();
     Popup.close();
   },
+  'click .js-remove-list'(evt) {
+    const currentList = this;
+    evt.preventDefault();
+    Lists.remove(currentList._id);
+    Popup.close();
+  },
 });

+ 11 - 1
client/components/main/layouts.styl

@@ -3,7 +3,7 @@
 global-reset()
 
 html, body, input, select, textarea, button
-  font: 14px Roboto, "Helvetica Neue", Arial, Helvetica, sans-serif
+  font: 14px Roboto, "Helvetica Neue", Arial, Helvetica, "Yu Gothic", "Meiryo", sans-serif
   line-height: 18px
   color: #4d4d4d
 
@@ -351,6 +351,11 @@ a
     background: darken(white, 13%)
     overflow-y: auto
 
+  a
+    text-decoration: underline
+    &:hover
+      color: #333
+
 .basicTabs-container .tabs-content-container
   padding: 0
   padding-top: 15px
@@ -374,3 +379,8 @@ a
   .wrapper
     height: 100%
     margin: 0px
+
+.inline-input
+  height: 37px
+  margin: 8px 10px 0 0
+  width: 50px

+ 19 - 11
client/components/sidebar/sidebar.jade

@@ -3,14 +3,19 @@ template(name="sidebar")
     a.sidebar-tongue.js-toggle-sidebar(
       class="{{#if isTongueHidden}}is-hidden{{/if}}")
       i.fa.fa-angle-left
-    .sidebar-content.js-board-sidebar-content.js-perfect-scrollbar
-      a.hide-btn.js-hide-sidebar
-        i.fa.fa-angle-right
-      unless isDefaultView
-        h2
-          a.fa.fa-chevron-left.js-back-home
-          = getViewTitle
-      +Template.dynamic(template=getViewTemplate)
+    .sidebar-shadow
+      .sidebar-content.sidebar-shortcuts
+        a.board-header-btn.js-shortcuts
+          i.fa.fa-keyboard-o
+          span {{_ 'keyboard-shortcuts' }}
+      .sidebar-content.js-board-sidebar-content.js-perfect-scrollbar
+        a.hide-btn.js-hide-sidebar
+          i.fa.fa-angle-right
+        unless isDefaultView
+          h2
+            a.fa.fa-chevron-left.js-back-home
+            = getViewTitle
+        +Template.dynamic(template=getViewTemplate)
 
 template(name='homeSidebar')
   +membersWidget
@@ -30,10 +35,13 @@ template(name="membersWidget")
     .board-widget-content
       each currentBoard.activeMembers
         +userAvatar(userId=this.userId showStatus=true)
-      unless isSandstorm
-        if currentUser.isBoardAdmin
-          a.member.add-member.js-manage-board-members
+      if isSandstorm
+        if currentUser.isBoardMember
+          a.member.add-member.sandstorm-powerbox-request-identity
             i.fa.fa-plus
+      else if currentUser.isBoardAdmin
+        a.member.add-member.js-manage-board-members
+          i.fa.fa-plus
       .clearfix
   if isInvited
     hr

+ 8 - 2
client/components/sidebar/sidebar.js

@@ -94,6 +94,9 @@ BlazeComponent.extendComponent({
       'click .js-hide-sidebar': this.hide,
       'click .js-toggle-sidebar': this.toggle,
       'click .js-back-home': this.setView,
+      'click .js-shortcuts'() {
+        FlowRouter.go('shortcuts');
+      },
     }];
   },
 }).register('sidebar');
@@ -134,8 +137,8 @@ Template.memberPopup.events({
     Popup.close();
   }),
   'click .js-leave-member'() {
-    const currentBoard = Boards.findOne(Session.get('currentBoard'));
-    Meteor.call('quitBoard', currentBoard, (err, ret) => {
+    const boardId = Session.get('currentBoard');
+    Meteor.call('quitBoard', boardId, (err, ret) => {
       if (!ret && ret) {
         Popup.close();
         FlowRouter.go('home');
@@ -163,6 +166,9 @@ Template.membersWidget.helpers({
 Template.membersWidget.events({
   'click .js-member': Popup.open('member'),
   'click .js-manage-board-members': Popup.open('addMember'),
+  'click .sandstorm-powerbox-request-identity'() {
+    window.sandstormRequestIdentity();
+  },
   'click .js-member-invite-accept'() {
     const boardId = Session.get('currentBoard');
     Meteor.user().removeInvite(boardId);

+ 21 - 2
client/components/sidebar/sidebar.styl

@@ -6,11 +6,19 @@
   bottom: 0
   right: 0
 
-  .sidebar-content
-    padding: 12px
+  .sidebar-shadow
+    position: absolute
+    top: 0
+    bottom: 0
+    right: 0
+    left: 0
     background: darken(white, 3%)
     box-shadow: -10px 0px 5px -10px darken(white, 30%)
     z-index: 10
+
+  .sidebar-content
+    padding: 12px
+    margin-bottom: 1.6em
     position: absolute
     top: 0
     bottom: 0
@@ -51,6 +59,7 @@
 
         .member, .card-label
           margin-right: 7px
+          margin-top: 5px
 
         .sidebar-list-item-description
           flex: 1
@@ -72,6 +81,16 @@
       i.fa
         margin-right: 10px
 
+  .sidebar-shortcuts
+    margin: 0
+    padding: 0
+    top: auto
+    text-align: center
+    font-size: 0.8em
+    line-height: 1.6em
+    vertical-align: middle
+    color: darken(white, 40%)
+
 .board-sidebar
   width: 248px
   right: -@width

+ 12 - 1
client/components/sidebar/sidebarFilters.jade

@@ -5,6 +5,12 @@
 
 template(name="filterSidebar")
   ul.sidebar-list
+    li(class="{{#if Filter.labelIds.isSelected undefined}}active{{/if}}")
+          a.name.js-toggle-label-filter
+            span.sidebar-list-item-description
+              | {{_ 'filter-no-label'}}
+            if Filter.labelIds.isSelected undefined
+              i.fa.fa-check
     each currentBoard.labels
       li
         a.name.js-toggle-label-filter
@@ -18,6 +24,12 @@ template(name="filterSidebar")
             i.fa.fa-check
   hr
   ul.sidebar-list
+    li(class="{{#if Filter.members.isSelected undefined}}active{{/if}}")
+          a.name.js-toggle-member-filter
+            span.sidebar-list-item-description
+              | {{_ 'filter-no-member'}}
+            if Filter.members.isSelected undefined
+              i.fa.fa-check
     each currentBoard.activeMembers
       with getUser userId
         li(class="{{#if Filter.members.isSelected _id}}active{{/if}}")
@@ -86,4 +98,3 @@ template(name="disambiguateMultiMemberPopup")
 
 template(name="moveSelectionPopup")
   +boardLists
-

+ 20 - 4
client/components/users/userHeader.jade

@@ -12,10 +12,11 @@ template(name="memberMenuPopup")
   ul.pop-over-list
     with currentUser
       li: a.js-edit-profile {{_ 'edit-profile'}}
-    li: a.js-change-avatar {{_ 'edit-avatar'}}
-    li: a.js-change-password {{_ 'changePasswordPopup-title'}}
-    li: a.js-change-language {{_ 'changeLanguagePopup-title'}}
-    li: a.js-edit-notification {{_ 'editNotificationPopup-title'}}
+      li: a.js-change-settings {{_ 'change-settings'}}
+      li: a.js-change-avatar {{_ 'edit-avatar'}}
+      li: a.js-change-password {{_ 'changePasswordPopup-title'}}
+      li: a.js-change-language {{_ 'changeLanguagePopup-title'}}
+      li: a.js-edit-notification {{_ 'editNotificationPopup-title'}}
   hr
   ul.pop-over-list
     li: a.js-logout {{_ 'log-out'}}
@@ -27,6 +28,8 @@ template(name="editProfilePopup")
       input.js-profile-fullname(type="text" value=profile.fullname autofocus)
     label
       | {{_ 'username'}}
+      span.error.hide.username-taken
+        | {{_ 'error-username-taken'}}
       input.js-profile-username(type="text" value=username)
     label
       | {{_ 'initials'}}
@@ -61,3 +64,16 @@ template(name="changeLanguagePopup")
           = name
           if isCurrentLanguage
             i.fa.fa-check
+
+template(name="changeSettingsPopup")
+  ul.pop-over-list
+    li
+      a.js-toggle-system-messages
+        | {{_ 'hide-system-messages'}}
+        if hiddenSystemMessages
+          i.fa.fa-check
+    li
+      label.bold
+        | {{_ 'show-cards-minimum-count'}}
+      input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="1" max="99" onkeydown="return false")
+      input.js-apply-show-cards-at.left(type="submit" value="{{_ 'apply'}}")

+ 35 - 4
client/components/users/userHeader.js

@@ -5,6 +5,7 @@ Template.headerUserBar.events({
 
 Template.memberMenuPopup.events({
   'click .js-edit-profile': Popup.open('editProfile'),
+  'click .js-change-settings': Popup.open('changeSettings'),
   'click .js-change-avatar': Popup.open('changeAvatar'),
   'click .js-change-password': Popup.open('changePassword'),
   'click .js-change-language': Popup.open('changeLanguage'),
@@ -26,11 +27,18 @@ Template.editProfilePopup.events({
       'profile.fullname': fullname,
       'profile.initials': initials,
     }});
-    // XXX We should report the error to the user.
+
     if (username !== Meteor.user().username) {
-      Meteor.call('setUsername', username);
-    }
-    Popup.back();
+      Meteor.call('setUsername', username, function(error) {
+        const messageElement = tpl.$('.username-taken');
+        if (error) {
+          messageElement.show();
+        } else {
+          messageElement.hide();
+          Popup.back();
+        }
+      });
+    } else Popup.back();
   },
 });
 
@@ -82,3 +90,26 @@ Template.changeLanguagePopup.events({
     evt.preventDefault();
   },
 });
+
+Template.changeSettingsPopup.helpers({
+  hiddenSystemMessages() {
+    return Meteor.user().hasHiddenSystemMessages();
+  },
+  showCardsCountAt() {
+    return Meteor.user().getLimitToShowCardsCount();
+  },
+});
+
+Template.changeSettingsPopup.events({
+  'click .js-toggle-system-messages'() {
+    Meteor.call('toggleSystemMessages');
+  },
+  'click .js-apply-show-cards-at'(evt, tpl) {
+    evt.preventDefault();
+    const minLimit = parseInt(tpl.$('#show-cards-count-at').val(), 10);
+    if (!isNaN(minLimit)) {
+      Meteor.call('changeLimitToShowCardsCount', minLimit);
+      Popup.back();
+    }
+  },
+});

+ 1 - 1
client/lib/escapeActions.js

@@ -44,7 +44,7 @@ EscapeActions = {
 
   executeLowest() {
     return this._execute({
-      multipleAction: false,
+      multipleActions: false,
     });
   },
 

+ 23 - 2
client/lib/filter.js

@@ -63,6 +63,17 @@ class SetFilter {
     this._dep.depend();
     return { $in: this._selectedElements };
   }
+
+  _getEmptySelector() {
+    this._dep.depend();
+    let includeEmpty = false;
+    this._selectedElements.forEach((el) => {
+      if (el === undefined) {
+        includeEmpty = true;
+      }
+    });
+    return includeEmpty ? { $eq: [] } : null;
+  }
 }
 
 // The global Filter object.
@@ -95,16 +106,26 @@ Filter = {
       return {};
 
     const filterSelector = {};
+    const emptySelector = {};
+    let includeEmptySelectors = false;
     this._fields.forEach((fieldName) => {
       const filter = this[fieldName];
-      if (filter._isActive())
+      if (filter._isActive()) {
         filterSelector[fieldName] = filter._getMongoSelector();
+        emptySelector[fieldName] = filter._getEmptySelector();
+        if (emptySelector[fieldName] !== null) {
+          includeEmptySelectors = true;
+        }
+      }
     });
 
     const exceptionsSelector = {_id: {$in: this._exceptions}};
     this._exceptionsDep.depend();
 
-    return {$or: [filterSelector, exceptionsSelector]};
+    if (includeEmptySelectors)
+      return {$or: [filterSelector, exceptionsSelector, emptySelector]};
+    else
+      return {$or: [filterSelector, exceptionsSelector]};
   },
 
   mongoSelector(additionalSelector) {

+ 14 - 15
client/lib/i18n.js

@@ -2,20 +2,19 @@
 // the language reactively. If the user is not connected we use the language
 // information provided by the browser, and default to english.
 
-Tracker.autorun(() => {
-  const currentUser = Meteor.user();
-  let language;
-  if (currentUser) {
-    language = currentUser.profile && currentUser.profile.language;
-  } else {
-    language = navigator.language || navigator.userLanguage;
-  }
+Meteor.startup(() => {
+  Tracker.autorun(() => {
+    const currentUser = Meteor.user();
+    let language;
+    if (currentUser && currentUser.profile && currentUser.profile.language) {
+      language = currentUser.profile.language;
+    } else {
+      language = navigator.language || navigator.userLanguage;
+    }
 
-  if (language) {
-    TAPi18n.setLanguage(language);
-
-    // XXX
-    const shortLanguage = language.split('-')[0];
-    T9n.setLanguage(shortLanguage);
-  }
+    if (language) {
+      TAPi18n.setLanguage(language);
+      T9n.setLanguage(language);
+    }
+  });
 });

+ 46 - 28
docker-compose.yml

@@ -1,31 +1,49 @@
-# You can read the Docker Compose documentation at:
-#
-#   https://docs.docker.com/compose/
-#
-# Run with file with `docker-compose up -d`.
-#
-# We use two separate Docker containers: one for the database and one for the
-# Wekan application. The Wekan container doensn’t contain any mutable state
-# (all the user data, even uploads, are saved in the database) so updating it
-# is as simple as stoping the old version and starting the new one. If you want
-# to update the database you need to uncomment the volume section below.
+version: '2'
 
-wekandb:
-  image: mongo
-#  volumes:
-#    - ./data/runtime/db:/data/db
-#    - ./data/dump:/dump
-  command: mongod --smallfiles --oplogSize 128
-  ports:
-    - 27017
+services:
 
-wekan:
-  image: mquandalle/wekan
-  links:
-    - wekandb
-  environment:
-    - MONGO_URL=mongodb://wekandb/wekan
-    - ROOT_URL=http://localhost:80
-  ports:
-    - 80:80
+  wekandb:
+    image: mongo:3.2.11
+    container_name: wekan-db
+    restart: always
+    command: mongod --smallfiles --oplogSize 128
+    networks:
+      - wekan-tier
+    expose:
+      - 27017
+    volumes:
+      - wekan-db:/data/db
+      - wekan-db-dump:/dump
 
+  wekan:
+    image: mquandalle/wekan:latest
+    container_name: wekan-app
+    restart: always
+    networks:
+      - wekan-tier
+    build:
+      context: .
+      dockerfile: Dockerfile
+      args:
+        - NODE_VERSION=${NODE_VERSION}
+        - METEOR_RELEASE=${METEOR_RELEASE}
+        - NPM_VERSION=${NPM_VERSION}
+        - ARCHITECTURE=${ARCHITECTURE}
+        - SRC_PATH=${SRC_PATH}
+    ports:
+      - 80:80
+    environment:
+      - MONGO_URL=mongodb://wekandb:27017/wekan
+      - ROOT_URL=http://localhost
+    depends_on:
+      - wekandb
+
+volumes:
+  wekan-db:
+    driver: local
+  wekan-db-dump:
+    driver: local
+
+networks:
+  wekan-tier:
+    driver: bridge

+ 67 - 6
i18n/ar.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Accept",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "الإجراءات",
     "activities": "الأنشطة",
     "activity": "النشاط",
@@ -16,10 +36,13 @@
     "activity-removed": "حذف %s إلى %s",
     "activity-sent": "إرسال %s إلى %s",
     "activity-unjoined": "غادر %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "أضف",
     "add-attachment": "إرفاق ملف",
     "add-board": "إضافة لوحة",
     "add-card": "إضافة بطاقة",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "إضافة غلاف",
     "add-label": "إضافة علامة",
     "add-list": "إضافة قائمة",
@@ -31,6 +54,8 @@
     "all-boards": "كل اللوحات",
     "and-n-other-card": "And __count__ other بطاقة",
     "and-n-other-card_plural": "And __count__ other بطاقات",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "أرشف",
     "archive-all": "أرشف الكل",
     "archive-board": "أرشف اللوحة",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "حذف المرق هو حذف نهائي . لا يمكن التراجع إذا حذف.",
     "attachmentDeletePopup-title": "تريد حذف المرفق ?",
     "attachments": "المرفقات",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "حجم ملف الصورة الخاصة بك كبير . لا يمكن  أن تتجاوز 70 كيلو أكتي",
     "back": "رجوع",
     "board-change-color": "تغيير اللومr",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "تعديل خلفية الشاشة",
     "boardChangeTitlePopup-title": "إعادة تسمية اللوحة",
     "boardChangeVisibilityPopup-title": "تعديل وضوح الرؤية",
-    "boardImportBoardPopup-title": "Import board from Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "قائمة اللوحة",
     "boards": "لوحات",
     "bucket-example": "مثل « todo list » على سبيل المثال",
@@ -66,11 +92,15 @@
     "card-delete-notice": "هذا حذف أبديّ . سوف تفقد كل الإجراءات المنوطة بهذه البطاقة",
     "card-delete-pop": "سيتم إزالة جميع الإجراءات من تبعات النشاط، وأنك لن تكون قادرا على إعادة فتح البطاقة. لا يوجد التراجع.",
     "card-delete-suggest-archive": "يمكنك أرشفة بطاقة لحذفها من اللوحة والمحافظة على النشاط.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "تعديل المرفقات",
     "card-edit-labels": "تعديل العلامات",
     "card-edit-members": "تعديل الأعضاء",
     "card-labels-title": "تعديل علامات البطاقة.",
     "card-members-title": "إضافة او حذف أعضاء للبطاقة.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "إرفاق من",
     "cardDeletePopup-title": "حذف البطاقة ?",
     "cardDetailsActionsPopup-title": "إجراءات على البطاقة",
@@ -82,10 +112,13 @@
     "change-avatar": "تعديل الصورة الشخصية",
     "change-password": "تغيير كلمة المرور",
     "change-permissions": "تعديل الصلاحيات",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "تعديل الصورة الشخصية",
     "changeLanguagePopup-title": "تغيير اللغة",
     "changePasswordPopup-title": "تغيير كلمة المرور",
     "changePermissionsPopup-title": "تعديل الصلاحيات",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
     "click-to-star": "اضغط لإضافة اللوحة للمفضلة.",
     "click-to-unstar": "اضغط لحذف اللوحة من المفضلة.",
     "clipboard": "Clipboard or drag & drop",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "إنشاء لوحة",
     "createLabelPopup-title": "إنشاء علامة",
     "current": "الحالي",
+    "date": "Date",
     "decline": "Decline",
     "default-avatar": "صورة شخصية افتراضية",
     "delete": "حذف",
@@ -122,7 +156,10 @@
     "edit": "تعديل",
     "edit-avatar": "تعديل الصورة الشخصية",
     "edit-profile": "تعديل الملف الشخصي",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "تعديل العلامة",
+    "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "تعديل الملف الشخصي",
     "email": "البريد الإلكتروني",
     "email-enrollAccount-subject": "An account created for you on __siteName__",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "This user does not exist",
     "error-user-notAllowSelf": "This action on self is not allowed",
     "error-user-notCreated": "This user is not created",
+    "error-username-taken": "This username is already taken",
     "export-board": "Export board",
     "filter": "تصفية",
     "filter-cards": "تصفية البطاقات",
     "filter-clear": "مسح التصفية",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "التصفية تشتغل",
     "filter-on-desc": "أنت بصدد تصفية بطاقات هذه اللوحة. اضغط هنا لتعديل التصفية.",
     "filter-to-selection": "تصفية بالتحديد",
     "fullname": "الإسم الكامل",
     "header-logo-title": "الرجوع إلى صفحة اللوحات",
+    "hide-system-messages": "Hide system messages",
     "home": "الرئيسية",
     "import": "Import",
     "import-board": "import from Trello",
+    "import-board-title": "Import board from Trello",
     "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-card": "Import a Trello card",
-    "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text",
     "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Map members",
     "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "معلومات",
     "initials": "أولية",
+    "invalid-date": "Invalid date",
     "joined": "انضمّ",
     "just-invited": "You are just invited to this board",
     "keyboard-shortcuts": "اختصار لوحة المفاتيح",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "Import a Trello card",
     "lists": "القائمات",
     "log-out": "تسجيل الخروج",
+    "log-in": "تسجيل الدخول",
     "loginPopup-title": "تسجيل الدخول",
-    "mapMembersAddPopup-title": "Select Wekan member",
-    "mapMembersPopup-title": "Map members",
     "memberMenuPopup-title": "أفضليات الأعضاء",
     "members": "أعضاء",
     "menu": "القائمة",
     "move-selection": "Move selection",
     "moveCardPopup-title": "نقل البطاقة",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
     "moveSelectionPopup-title": "Move selection",
     "multi-selection": "تحديد أكثر من واحدة",
     "multi-selection-on": "Multi-Selection is on",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "لوحاتي",
     "name": "اسم",
     "no-archived-cards": "لا يوجد بطاقة في الأرشيف.",
@@ -205,12 +251,15 @@
     "normal": "عادي",
     "normal-desc": "يمكن مشاهدة و تعديل  البطاقات. لا يمكن تغيير إعدادات الضبط.",
     "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "اختياري",
     "or": "or",
     "page-maybe-private": "قدتكون هذه الصفحة خاصة . قد تستطيع مشاهدتها ب  <a href='%s'>تسجيل الدخول</a>.",
     "page-not-found": "صفحة غير موجودة",
     "password": "كلمة المرور",
     "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Participating",
     "preview": "Preview",
     "previewAttachedImagePopup-title": "Preview",
     "previewClipboardImagePopup-title": "Preview",
@@ -223,6 +272,7 @@
     "remove-cover": "حذف الغلاف",
     "remove-from-board": "حذف من اللوحة",
     "remove-label": "حذف هذه العلامة",
+    "remove-list": "Remove the list",
     "remove-member": "حذف العضو",
     "remove-member-from-card": "حذف من البطاقة",
     "remove-member-pop": "حذف __name__ (__username__) من __boardTitle__ ? سيتم حذف هذا العضو من جميع بطاقة اللوحة مع إرسال إشعار له بذاك.",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "عرض قائمة الإختصارات ،تلك",
     "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
     "shortcut-toggle-sidebar": "إظهار-إخفاء الشريط الجانبي للوحة",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "إنشاء حساب",
     "star-board-title": "اضغط لإضافة هذه اللوحة إلى المفضلة . سوف يتم إظهارها على رأس بقية اللوحات.",
     "starred-boards": "اللوحات المفضلة",
@@ -250,14 +301,24 @@
     "team": "فريق",
     "this-board": "هذه اللوحة",
     "this-card": "هذه البطاقة",
+    "time": "Time",
     "title": "عنوان",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "إلغاء تعيين العضو",
     "unsaved-description": "لديك وصف غير محفوظ",
+    "unwatch": "Unwatch",
     "upload": "Upload",
     "upload-avatar": "رفع صورة شخصية",
     "uploaded-avatar": "تم رفع الصورة الشخصية",
     "username": "اسم المستخدم",
     "view-it": "شاهدها",
     "warn-list-archived": "انتبه : هذه البطاقة في أرشيف القائمات",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "ماذا تريد أن تنجز?"
-}
+}

+ 324 - 0
i18n/br.i18n.json

@@ -0,0 +1,324 @@
+{
+    "accept": "Asantiñ",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
+    "actions": "Oberoù",
+    "activities": "Oberiantizoù",
+    "activity": "Oberiantiz",
+    "activity-added": "%s ouzhpennet da %s",
+    "activity-archived": "%s diellaouet",
+    "activity-attached": "%s liammet ouzh %s",
+    "activity-created": "%s krouet",
+    "activity-excluded": "excluded %s from %s",
+    "activity-imported": "%s enporzhiet eus %s da %s",
+    "activity-imported-board": "%s enporzhiet da %s",
+    "activity-joined": "joined %s",
+    "activity-moved": "moved %s from %s to %s",
+    "activity-on": "on %s",
+    "activity-removed": "removed %s from %s",
+    "activity-sent": "sent %s to %s",
+    "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
+    "add": "Ouzhpenn",
+    "add-attachment": "Add an attachment",
+    "add-board": "Add a new board",
+    "add-card": "Ouzhpenn ur gartenn",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
+    "add-cover": "Ouzphenn ur golo",
+    "add-label": "Ouzhpenn an titl",
+    "add-list": "Ouzhpenn ur roll",
+    "add-members": "Ouzhpenn izili",
+    "added": "Ouzhpennet",
+    "addMemberPopup-title": "Izili",
+    "admin": "Merour",
+    "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
+    "all-boards": "All boards",
+    "and-n-other-card": "And __count__ other card",
+    "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
+    "archive": "Archive",
+    "archive-all": "Archive All",
+    "archive-board": "Archive Board",
+    "archive-card": "Archive Card",
+    "archive-list": "Archive this list",
+    "archive-selection": "Archive selection",
+    "archiveBoardPopup-title": "Archive Board?",
+    "archived-items": "Archived Items",
+    "archives": "Archives",
+    "assign-member": "Assign member",
+    "attached": "attached",
+    "attachment": "Attachment",
+    "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+    "attachmentDeletePopup-title": "Delete Attachment?",
+    "attachments": "Attachments",
+    "auto-watch": "Automatically watch boards when create it",
+    "avatar-too-big": "The avatar is too large (70Kb max)",
+    "back": "Back",
+    "board-change-color": "Kemmañ al liv",
+    "board-nb-stars": "%s stered",
+    "board-not-found": "Board not found",
+    "board-private-info": "This board will be <strong>private</strong>.",
+    "board-public-info": "This board will be <strong>public</strong>.",
+    "boardChangeColorPopup-title": "Change Board Background",
+    "boardChangeTitlePopup-title": "Rename Board",
+    "boardChangeVisibilityPopup-title": "Change Visibility",
+    "boardChangeWatchPopup-title": "Change Watch",
+    "boardMenuPopup-title": "Board Menu",
+    "boards": "Boards",
+    "bucket-example": "Like “Bucket List” for example",
+    "cancel": "Cancel",
+    "card-archived": "This card is archived.",
+    "card-comments-title": "This card has %s comment.",
+    "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
+    "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
+    "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
+    "card-edit-attachments": "Edit attachments",
+    "card-edit-labels": "Edit labels",
+    "card-edit-members": "Edit members",
+    "card-labels-title": "Change the labels for the card.",
+    "card-members-title": "Add or remove members of the board from the card.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
+    "cardAttachmentsPopup-title": "Attach From",
+    "cardDeletePopup-title": "Diverkañ ar gartenn ?",
+    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardLabelsPopup-title": "Labels",
+    "cardMembersPopup-title": "Izili",
+    "cardMorePopup-title": "Muioc’h",
+    "cards": "Kartennoù",
+    "change": "Change",
+    "change-avatar": "Change Avatar",
+    "change-password": "Kemmañ ger-tremen",
+    "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
+    "changeAvatarPopup-title": "Change Avatar",
+    "changeLanguagePopup-title": "Change Language",
+    "changePasswordPopup-title": "Kemmañ ger-tremen",
+    "changePermissionsPopup-title": "Change Permissions",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
+    "click-to-star": "Click to star this board.",
+    "click-to-unstar": "Click to unstar this board.",
+    "clipboard": "Clipboard or drag & drop",
+    "close": "Close",
+    "close-board": "Close Board",
+    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
+    "color-black": "du",
+    "color-blue": "glas",
+    "color-green": "gwer",
+    "color-lime": "melen sitroñs",
+    "color-orange": "orañjez",
+    "color-pink": "roz",
+    "color-purple": "mouk",
+    "color-red": "ruz",
+    "color-sky": "pers",
+    "color-yellow": "melen",
+    "comment": "Comment",
+    "comment-placeholder": "Write a comment",
+    "computer": "Computer",
+    "create": "Krouiñ",
+    "createBoardPopup-title": "Create Board",
+    "createLabelPopup-title": "Create Label",
+    "current": "current",
+    "date": "Date",
+    "decline": "Decline",
+    "default-avatar": "Default avatar",
+    "delete": "Diverkañ",
+    "deleteLabelPopup-title": "Delete Label?",
+    "description": "Description",
+    "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+    "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+    "discard": "Discard",
+    "done": "Graet",
+    "download": "Download",
+    "edit": "Kemmañ",
+    "edit-avatar": "Change Avatar",
+    "edit-profile": "Edit Profile",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
+    "editLabelPopup-title": "Change Label",
+    "editNotificationPopup-title": "Edit Notification",
+    "editProfilePopup-title": "Edit Profile",
+    "email": "Email",
+    "email-enrollAccount-subject": "An account created for you on __siteName__",
+    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-fail": "Sending email failed",
+    "email-invalid": "Invalid email",
+    "email-invite": "Invite via Email",
+    "email-invite-subject": "__inviter__ sent you an invitation",
+    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
+    "email-resetPassword-subject": "Reset your password on __siteName__",
+    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-sent": "Email sent",
+    "email-verifyEmail-subject": "Verify your email address on __siteName__",
+    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
+    "error-board-doesNotExist": "This board does not exist",
+    "error-board-notAdmin": "You need to be admin of this board to do that",
+    "error-board-notAMember": "You need to be a member of this board to do that",
+    "error-json-malformed": "Your text is not valid JSON",
+    "error-json-schema": "Your JSON data does not include the proper information in the correct format",
+    "error-list-doesNotExist": "This list does not exist",
+    "error-user-doesNotExist": "This user does not exist",
+    "error-user-notAllowSelf": "This action on self is not allowed",
+    "error-user-notCreated": "This user is not created",
+    "error-username-taken": "This username is already taken",
+    "export-board": "Export board",
+    "filter": "Filter",
+    "filter-cards": "Filter Cards",
+    "filter-clear": "Clear filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
+    "filter-on": "Filter is on",
+    "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+    "filter-to-selection": "Filter to selection",
+    "fullname": "Full Name",
+    "header-logo-title": "Go back to your boards page.",
+    "hide-system-messages": "Hide system messages",
+    "home": "Home",
+    "import": "Import",
+    "import-board": "import from Trello",
+    "import-board-title": "Import board from Trello",
+    "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
+    "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Map members",
+    "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
+    "import-show-user-mapping": "Review members mapping",
+    "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
+    "info": "Infos",
+    "initials": "Initials",
+    "invalid-date": "Invalid date",
+    "joined": "joined",
+    "just-invited": "You are just invited to this board",
+    "keyboard-shortcuts": "Keyboard shortcuts",
+    "label-create": "Create a new label",
+    "label-default": "%s label (default)",
+    "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
+    "labels": "Labels",
+    "language": "Yezh",
+    "last-admin-desc": "You can’t change roles because there must be at least one admin.",
+    "leave-board": "Leave Board",
+    "link-card": "Link to this card",
+    "list-archive-cards": "Archive all cards in this list",
+    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
+    "list-move-cards": "Move all cards in this list",
+    "list-select-cards": "Select all cards in this list",
+    "listActionPopup-title": "List Actions",
+    "listImportCardPopup-title": "Import a Trello card",
+    "lists": "Lists",
+    "log-out": "Log Out",
+    "log-in": "Log In",
+    "loginPopup-title": "Log In",
+    "memberMenuPopup-title": "Member Settings",
+    "members": "Izili",
+    "menu": "Menu",
+    "move-selection": "Move selection",
+    "moveCardPopup-title": "Move Card",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
+    "moveSelectionPopup-title": "Move selection",
+    "multi-selection": "Multi-Selection",
+    "multi-selection-on": "Multi-Selection is on",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
+    "my-boards": "My Boards",
+    "name": "Name",
+    "no-archived-cards": "No archived cards.",
+    "no-archived-lists": "No archived lists.",
+    "no-results": "No results",
+    "normal": "Normal",
+    "normal-desc": "Can view and edit cards. Can't change settings.",
+    "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+    "optional": "optional",
+    "or": "or",
+    "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
+    "page-not-found": "Page not found.",
+    "password": "Ger-tremen",
+    "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Participating",
+    "preview": "Preview",
+    "previewAttachedImagePopup-title": "Preview",
+    "previewClipboardImagePopup-title": "Preview",
+    "private": "Private",
+    "private-desc": "This board is private. Only people added to the board can view and edit it.",
+    "profile": "Profile",
+    "public": "Public",
+    "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
+    "quick-access-description": "Star a board to add a shortcut in this bar.",
+    "remove-cover": "Remove Cover",
+    "remove-from-board": "Remove from Board",
+    "remove-label": "Remove the label",
+    "remove-list": "Remove the list",
+    "remove-member": "Remove Member",
+    "remove-member-from-card": "Remove from Card",
+    "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
+    "removeMemberPopup-title": "Remove Member?",
+    "rename": "Rename",
+    "rename-board": "Rename Board",
+    "restore": "Restore",
+    "save": "Save",
+    "search": "Search",
+    "select-color": "Select a color",
+    "shortcut-assign-self": "Assign yourself to current card",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
+    "shortcut-autocomplete-members": "Autocomplete members",
+    "shortcut-clear-filters": "Clear all filters",
+    "shortcut-close-dialog": "Close Dialog",
+    "shortcut-filter-my-cards": "Filter my cards",
+    "shortcut-show-shortcuts": "Bring up this shortcuts list",
+    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+    "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
+    "signupPopup-title": "Create an Account",
+    "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+    "starred-boards": "Starred Boards",
+    "starred-boards-description": "Starred boards show up at the top of your boards list.",
+    "subscribe": "Subscribe",
+    "team": "Team",
+    "this-board": "this board",
+    "this-card": "this card",
+    "time": "Time",
+    "title": "Title",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "unassign-member": "Unassign member",
+    "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
+    "upload": "Upload",
+    "upload-avatar": "Upload an avatar",
+    "uploaded-avatar": "Uploaded an avatar",
+    "username": "Username",
+    "view-it": "View it",
+    "warn-list-archived": "warning: this card is in an archived list",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
+    "what-to-do": "What do you want to do?"
+}

+ 68 - 7
i18n/ca.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Accepta",
+    "act-activity-notify": "[Wekan] Notificació d'activitat",
+    "act-addAttachment": "adjuntat __attachment__ a __card__",
+    "act-addComment": "comentat a __card__: __comment__",
+    "act-createBoard": "creat __board__",
+    "act-createCard": "afegit/da __card__ a __list__",
+    "act-createList": "afegit/da __list__ a __board__",
+    "act-addBoardMember": "afegit/da __member__ a __board__",
+    "act-archivedBoard": "__board__ arxivat",
+    "act-archivedCard": "__card__ arxivat/da",
+    "act-archivedList": "__list__ arxivat/da",
+    "act-importBoard": "__board__ 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-unjoinMember": "elimina __member__ de __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Accions",
     "activities": "Activitats",
     "activity": "Activitat",
@@ -16,10 +36,13 @@
     "activity-removed": "ha eliminat %s de %s",
     "activity-sent": "ha enviat %s %s",
     "activity-unjoined": "desassignat %s",
+    "activity-checklist-added": "Checklist afegida a %s",
     "add": "Afegeix",
     "add-attachment": "Afegeix arxiu adjunt",
     "add-board": "Afegeix un nou tauler",
     "add-card": "Afegeix fitxa",
+    "add-checklist": "Afegeix  una checklist",
+    "add-checklist-item": "Afegeix un ítem",
     "add-cover": "Afegeix coberta",
     "add-label": "Afegeix etiqueta",
     "add-list": "Afegeix llista",
@@ -31,6 +54,8 @@
     "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": "L'aplicació éstà fora de línia. Si refresca la pàgina perdrà les dades.",
     "archive": "Desa",
     "archive-all": "Desa Tot",
     "archive-board": "Arxiva tauler",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "L'esborrat d'un arxiu adjunt és permanent. No es pot desfer.",
     "attachmentDeletePopup-title": "Esborrar adjunt?",
     "attachments": "Adjunts",
+    "auto-watch": "Veure els taulers automàticament després de crear-los",
     "avatar-too-big": "L'avatar és massa gran (70Kb max)",
     "back": "Enrere",
     "board-change-color": "Canvia el color",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Canvia fons",
     "boardChangeTitlePopup-title": "Canvia el nom tauler",
     "boardChangeVisibilityPopup-title": "Canvia visibilitat",
-    "boardImportBoardPopup-title": "Importa tauler des de Trello",
+    "boardChangeWatchPopup-title": "Canvia seguiment",
     "boardMenuPopup-title": "Menú del tauler",
     "boards": "Taulers",
     "bucket-example": "Igual que “Bucket List”,  per exemple",
@@ -66,11 +92,15 @@
     "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.",
     "card-delete-suggest-archive": "Podeu arxivar una fitxa per extreure-la del tauler i preservar l'activitat.",
+    "card-due": "Finalitza",
+    "card-due-on": "Finalitza a",
     "card-edit-attachments": "Edita arxius adjunts",
     "card-edit-labels": "Edita etiquetes",
     "card-edit-members": "Edita membres",
     "card-labels-title": "Canvia les etiquetes de la fitxa",
     "card-members-title": "Afegeix o eliminar membres del tauler des de la fitxa.",
+    "card-start": "Comença",
+    "card-start-on": "Comença a",
     "cardAttachmentsPopup-title": "Adjunta des de",
     "cardDeletePopup-title": "Esborrar fitxa?",
     "cardDetailsActionsPopup-title": "Accions de fitxes",
@@ -82,10 +112,13 @@
     "change-avatar": "Canvia Avatar",
     "change-password": "Canvia la clau",
     "change-permissions": "Canvia permisos",
+    "change-settings": "Canvia configuració",
     "changeAvatarPopup-title": "Canvia Avatar",
     "changeLanguagePopup-title": "Canvia idioma",
     "changePasswordPopup-title": "Canvia la contrasenya",
     "changePermissionsPopup-title": "Canvia permisos",
+    "changeSettingsPopup-title": "Canvia configuració",
+    "checklists": "Checklists",
     "click-to-star": "Fes clic per destacar aquest tauler.",
     "click-to-unstar": "Fes clic per deixar de destacar aquest tauler.",
     "clipboard": "Portaretalls o estirar i amollar",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "Crea tauler",
     "createLabelPopup-title": "Crea etiqueta",
     "current": "Actual",
+    "date": "Data",
     "decline": "Declina",
     "default-avatar": "Avatar per defecte",
     "delete": "Esborra",
@@ -122,7 +156,10 @@
     "edit": "Edita",
     "edit-avatar": "Canvia Avatar",
     "edit-profile": "Edita el teu Perfil",
+    "editCardStartDatePopup-title": "Canvia data d'inici",
+    "editCardDueDatePopup-title": "Canvia data de finalització",
     "editLabelPopup-title": "Canvia etiqueta",
+    "editNotificationPopup-title": "Edita la notificació",
     "editProfilePopup-title": "Edita teu Perfil",
     "email": "Correu electrònic",
     "email-enrollAccount-subject": "An account created for you on __siteName__",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "L'usuari no existeix",
     "error-user-notAllowSelf": "Aquesta acció no està permesa",
     "error-user-notCreated": "L'usuari no s'ha creat",
-    "export-board": "Export board",
+    "error-username-taken": "Aquest usuari ja existeix",
+    "export-board": "Exporta tauler",
     "filter": "Filtre",
     "filter-cards": "Fitxes de filtre",
     "filter-clear": "Elimina filtre",
+    "filter-no-label": "Sense etiqueta",
+    "filter-no-member": "Sense membres",
     "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ó",
     "fullname": "Nom complet",
     "header-logo-title": "Torna a la teva pàgina de taulers",
+    "hide-system-messages": "Oculta missatges del sistema",
     "home": "Inici",
     "import": "importa",
     "import-board": "Importa des de Trello",
+    "import-board-title": "Importa tauler des de Trello",
     "import-board-trello-instruction": "En el teu tauler Trello, ves a 'Menú', 'Més'.' Imprimir i Exportar', 'Exportar JSON', i copia el text resultant.",
-    "import-card": "Importa una fitxa de Trello",
-    "import-card-trello-instruction": "Ves a la fitxa Trello, selecciona 'Compartir i més...' llavors 'Export JSON' i copia el text resultant",
     "import-json-placeholder": "Aferra codi JSON vàlid aquí",
+    "import-map-members": "Mapeja el membres",
     "import-members-map": "El tauler importat conté membres. Assigna els membres que vulguis importar a usuaris Wekan",
     "import-show-user-mapping": "Revisa l'assignació de membres",
     "import-user-select": "Selecciona l'usuari Wekan que vulguis associar a aquest membre",
+    "importMapMembersAddPopup-title": "Selecciona un membre de Wekan",
     "info": "Informacions",
     "initials": "Inicials",
+    "invalid-date": "Data invàlida",
     "joined": "s'ha unit",
     "just-invited": "Has estat convidat a aquest tauler",
     "keyboard-shortcuts": "Dreceres de teclat",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "importa una fitxa de Trello",
     "lists": "Llistes",
     "log-out": "Finalitza la  sessió",
+    "log-in": "Ingresa",
     "loginPopup-title": "Inicia sessió",
-    "mapMembersAddPopup-title": "Selecciona membre de Wekan",
-    "mapMembersPopup-title": "Assigna membres",
     "memberMenuPopup-title": "Configura membres",
     "members": "Membres",
     "menu": "Menú",
     "move-selection": "Move selection",
     "moveCardPopup-title": "Moure fitxa",
+    "moveCardToBottom-title": "Mou a la part inferior",
+    "moveCardToTop-title": "Mou a la part superior",
     "moveSelectionPopup-title": "Move selection",
     "multi-selection": "Multi-Selecció",
     "multi-selection-on": "Multi-Selecció està activada",
+    "muted": "En silenci",
+    "muted-info": "No seràs notificat dels canvis en aquest tauler",
     "my-boards": "Els meus taulers",
     "name": "Nom",
     "no-archived-cards": "No hi ha fitxes arxivades.",
@@ -205,12 +251,15 @@
     "normal": "Normal",
     "normal-desc": "Podeu veure i editar fitxes. No podeu canviar la configuració.",
     "not-accepted-yet": "La invitació no ha esta acceptada encara",
+    "notify-participate": "Rebre actualitzacions per a cada fitxa de la qual n'ets creador o membre",
+    "notify-watch": "Rebre actualitzacions per qualsevol tauler, llista o fitxa en observació",
     "optional": "opcional",
     "or": "o",
     "page-maybe-private": "Aquesta pàgina és privada. Per veure-la <a href='%s'> entra </a>.",
     "page-not-found": "Pàgina no trobada.",
     "password": "Contrasenya",
     "paste-or-dragdrop": "aferra, o estira i amolla la imatge (només imatge)",
+    "participating": "Participant",
     "preview": "Vista prèvia",
     "previewAttachedImagePopup-title": "Vista prèvia",
     "previewClipboardImagePopup-title": "Vista prèvia",
@@ -223,6 +272,7 @@
     "remove-cover": "Elimina coberta",
     "remove-from-board": "Elimina del tauler",
     "remove-label": "Eliminia etiqueta",
+    "remove-list": "Elimina la llista",
     "remove-member": "Elimina membre",
     "remove-member-from-card": "Elimina de la fitxa",
     "remove-member-pop": "Eliminar  __name__ (__username__) de __boardTitle__ ? El membre serà eliminat de totes les fitxes d'aquest tauler. Ells rebran una notificació.",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "Mostra aquesta lista d'accessos directes",
     "shortcut-toggle-filterbar": "Canvia la barra lateral del tauler",
     "shortcut-toggle-sidebar": "Canvia Sidebar del Tauler",
+    "show-cards-minimum-count": "Mostra contador de fitxes si la llista en conté més de",
     "signupPopup-title": "Crea un compte",
     "star-board-title": "Fes clic per destacar aquest tauler. Es mostrarà a la part superior de la llista de taulers.",
     "starred-boards": "Taulers destacats",
@@ -250,14 +301,24 @@
     "team": "Equip",
     "this-board": "aquest tauler",
     "this-card": "aquesta fitxa",
+    "time": "Hora",
     "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",
     "unassign-member": "Desassignar membre",
     "unsaved-description": "Tens una descripció sense desar.",
+    "unwatch": "Suprimeix observació",
     "upload": "Puja",
     "upload-avatar": "Actualitza avatar",
     "uploaded-avatar": "Avatar actualitzat",
     "username": "Nom d'Usuari",
     "view-it": "Vist",
     "warn-list-archived": "Avís: aquesta fitxa està en una llista arxivada",
+    "watch": "Observa",
+    "watching": "En observació",
+    "watching-info": "Seràs notificat de cada canvi en aquest tauler",
+    "welcome-board": "Tauler de benvinguda",
+    "welcome-list1": "Bàsics",
+    "welcome-list2": "Avançades",
     "what-to-do": "Què vols fer?"
-}
+}

+ 68 - 7
i18n/cs.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Přijmout",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Akce",
     "activities": "Aktivity",
     "activity": "Aktivita",
@@ -16,10 +36,13 @@
     "activity-removed": "odstraněn %s z %s",
     "activity-sent": "%s posláno na %s",
     "activity-unjoined": "odpojen %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "Přidat",
     "add-attachment": "Přidat přílohu",
     "add-board": "Přidat nové tablo",
     "add-card": "Přidat kartu",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "Přidat obal",
     "add-label": "Přidat štítek",
     "add-list": "Přidat seznam",
@@ -31,6 +54,8 @@
     "all-boards": "Všechna tabla",
     "and-n-other-card": "A __count__ další karta(y)",
     "and-n-other-card_plural": "A __count__ dalších karet",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Archiv",
     "archive-all": "Archivovat vše",
     "archive-board": "Archivovat tablo",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "Smazání přílohy je trvalé. Nejde vrátit zpět.",
     "attachmentDeletePopup-title": "Smazat přílohu?",
     "attachments": "Přílohy",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "Avatar je příliš velký (70Kb max)",
     "back": "Zpět",
     "board-change-color": "Změnit barvu",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Změnit pozadí tabla",
     "boardChangeTitlePopup-title": "Přejmenovat tablo",
     "boardChangeVisibilityPopup-title": "Upravit viditelnost",
-    "boardImportBoardPopup-title": "Importovat tablo ze služby Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "Menu tabla",
     "boards": "Tabla",
     "bucket-example": "Například \"Než mě odvedou\"",
@@ -66,11 +92,15 @@
     "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 znovu otevřít. Toto nelze vrátit zpět.",
     "card-delete-suggest-archive": "Kartu můžete archivovat a tím ji odstranit z tabla a přitom zachovat aktivity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Upravit přílohy",
     "card-edit-labels": "Upravit štítky",
     "card-edit-members": "Upravit členy",
     "card-labels-title": "Změnit štítky karty.",
     "card-members-title": "Přidat nebo odstranit členy tohoto tabla z karty.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Přiložit formulář",
     "cardDeletePopup-title": "Smazat kartu?",
     "cardDetailsActionsPopup-title": "Akce karty",
@@ -82,10 +112,13 @@
     "change-avatar": "Změnit avatar",
     "change-password": "Změnit heslo",
     "change-permissions": "Změnit oprávnění",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "Změnit avatar",
     "changeLanguagePopup-title": "Změnit jazyk",
     "changePasswordPopup-title": "Změnit heslo",
     "changePermissionsPopup-title": "Změnit oprávnění",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
     "click-to-star": "Kliknutím přidat hvězdičku tomuto tablu.",
     "click-to-unstar": "Kliknutím odebrat hvězdičku tomuto tablu.",
     "clipboard": "Schránka nebo potáhnout a pustit",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "Vytvořit tablo",
     "createLabelPopup-title": "Vytvořit štítek",
     "current": "Aktuální",
+    "date": "Date",
     "decline": "Zamítnout",
     "default-avatar": "Výchozí avatar",
     "delete": "Smazat",
@@ -122,7 +156,10 @@
     "edit": "Upravit",
     "edit-avatar": "Změnit avatar",
     "edit-profile": "Upravit profil",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "Změnit štítek",
+    "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "Upravit profil",
     "email": "Email",
     "email-enrollAccount-subject": "Byl vytvořen účet na __siteName__",
@@ -135,7 +172,7 @@
     "email-resetPassword-subject": "Změň své heslo na __siteName__",
     "email-resetPassword-text": "Ahoj __user__,\n\nPro změnu hesla klikni na odkaz níže.\n\n__url__\n\nDěkujeme.",
     "email-sent": "Email byl odeslán",
-    "email-verifyEmail-subject": "Ověř svou emailovou adresu na ",
+    "email-verifyEmail-subject": "Ověř svou emailovou adresu na",
     "email-verifyEmail-text": "Ahoj __user__,\n\nPro ověření emailové adresy klikni na odkaz níže.\n\n__url__\n\nDěkujeme.",
     "error-board-doesNotExist": "Toto tablo neexistuje",
     "error-board-notAdmin": "K provedení změny musíš být administrátor tohoto tabla",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "Tento uživatel neexistuje",
     "error-user-notAllowSelf": "Tato akce pro sebe sama není povolena",
     "error-user-notCreated": "Tento uživatel není vytvořen",
+    "error-username-taken": "This username is already taken",
     "export-board": "Exportovat tablo",
     "filter": "Filtr",
     "filter-cards": "Filtrovat karty",
     "filter-clear": "Vyčistit filtr",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "Filtr je zapnut",
     "filter-on-desc": "Filtrujete karty tohoto tabla. Pro úpravu filtru klikni sem.",
     "filter-to-selection": "Filtrovat výběr",
     "fullname": "Celé jméno",
     "header-logo-title": "Jit zpět na stránku s tably.",
+    "hide-system-messages": "Hide system messages",
     "home": "Domů",
     "import": "Import",
     "import-board": "Importovat ze služby Trello",
+    "import-board-title": "Import board from Trello",
     "import-board-trello-instruction": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text",
-    "import-card": "Importovat kartu ze služby Trello",
-    "import-card-trello-instruction": "Přejdi na Trello kartu, vyber 'Share and more...' a pak 'Export JSON' a zkopíruj výsledný text",
     "import-json-placeholder": "Sem vlož validní JSON data",
+    "import-map-members": "Map members",
     "import-members-map": "Toto importované tablo obsahuje několik členů. Namapuj členy z importu na uživatelské účty Wekan.",
     "import-show-user-mapping": "Zkontrolovat namapování členů",
     "import-user-select": "Vyber uživatele Wekan, kterého chceš použít pro tohoto člena",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "Informace",
     "initials": "Iniciály",
+    "invalid-date": "Invalid date",
     "joined": "spojeno",
     "just-invited": "Právě jsi byl pozván(a) do tohoto tabla",
     "keyboard-shortcuts": "Klávesové zkratky",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "Importovat Trello kartu",
     "lists": "Seznamy",
     "log-out": "Odhlásit",
+    "log-in": "Přihlásit",
     "loginPopup-title": "Přihlásit",
-    "mapMembersAddPopup-title": "Vybrat Wekan uživatele",
-    "mapMembersPopup-title": "Mapovat členy",
     "memberMenuPopup-title": "Nastavení uživatele",
     "members": "Členové",
     "menu": "Menu",
     "move-selection": "Přesunout výběr",
     "moveCardPopup-title": "Přesunout kartu",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
     "moveSelectionPopup-title": "Přesunout výběr",
     "multi-selection": "Multi-výběr",
     "multi-selection-on": "Multi-výběr je zapnut",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "Moje tabla",
     "name": "Jméno",
     "no-archived-cards": "Žádné archivované karty.",
@@ -205,12 +251,15 @@
     "normal": "Normální",
     "normal-desc": "Může zobrazovat a upravovat karty. Nemůže měnit nastavení.",
     "not-accepted-yet": "Pozvánka ještě nebyla přijmuta",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "volitelný",
     "or": "nebo",
     "page-maybe-private": "Tato stránka může být soukromá. Můžete ji zobrazit po <a href='%s'>přihlášení</a>.",
     "page-not-found": "Stránka nenalezena.",
     "password": "Heslo",
     "paste-or-dragdrop": "vložit, nebo přetáhnout a pustit soubor obrázku (pouze obrázek)",
+    "participating": "Participating",
     "preview": "Náhled",
     "previewAttachedImagePopup-title": "Náhled",
     "previewClipboardImagePopup-title": "Náhled",
@@ -223,6 +272,7 @@
     "remove-cover": "Odstranit obal",
     "remove-from-board": "Odstranit z tabla",
     "remove-label": "Odstranit štítek",
+    "remove-list": "Remove the list",
     "remove-member": "Odebrat uživatele",
     "remove-member-from-card": "Odstranit z karty",
     "remove-member-pop": "Odstranit __name__ (__username__) z __boardTitle__? Uživatel bude odebrán ze všech karet na tomto tablu. Na tuto skutečnost bude upozorněn.",
@@ -234,7 +284,7 @@
     "search": "Hledat",
     "select-color": "Vybrat barvu",
     "shortcut-assign-self": "Přiřadit sebe k aktuální kartě",
-    "shortcut-autocomplete-emojies": "Automatický výběr emotikon",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-members": "Automatický výběr uživatel",
     "shortcut-clear-filters": "Vyčistit všechny filtry",
     "shortcut-close-dialog": "Zavřít dialog",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "Otevřít tento seznam odkazů",
     "shortcut-toggle-filterbar": "Přepnout lištu filtrování",
     "shortcut-toggle-sidebar": "Přepnout lištu tabla",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Vytvořit účet",
     "star-board-title": "Kliknutím přidat tablu hvězdičku. Poté bude zobrazeno navrchu seznamu.",
     "starred-boards": "Tabla s hvězdičkou",
@@ -250,14 +301,24 @@
     "team": "Tým",
     "this-board": "toto tablo",
     "this-card": "tuto kartu",
+    "time": "Time",
     "title": "Název",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Vyřadit člena",
     "unsaved-description": "Popis neni uložen.",
+    "unwatch": "Unwatch",
     "upload": "Nahrát",
     "upload-avatar": "Nahrát avatar",
     "uploaded-avatar": "Avatar nahrán",
     "username": "Uživatelské jméno",
     "view-it": "Zobrazit",
     "warn-list-archived": "varování: tato karta je v archivovaném seznamu",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "Co chcete dělat?"
 }

+ 163 - 102
i18n/de.i18n.json

@@ -1,5 +1,25 @@
 {
-    "accept": "Accept",
+    "accept": "Akzeptieren",
+    "act-activity-notify": "[Wekan] Aktivitätsbenachrichtigung",
+    "act-addAttachment": "hat __attachment__ an __card__ angehängt",
+    "act-addComment": "hat __card__ kommentiert: __comment__",
+    "act-createBoard": "hat __board__ erstellt",
+    "act-createCard": "hat __card__ zu __list__ hinzugefügt",
+    "act-createList": "hat __list__ zu __board__ hinzugefügt",
+    "act-addBoardMember": "hat __member__ zu __board__ hinzugefügt",
+    "act-archivedBoard": "hat __board__ archiviert",
+    "act-archivedCard": "hat __card__ archiviert",
+    "act-archivedList": "hat __list__ archiviert",
+    "act-importBoard": "hat __board__ importiert",
+    "act-importCard": "hat __card__ importiert",
+    "act-importList": "hat __list__ importiert",
+    "act-joinMember": "hat __member__ zu __card__ hinzugefügt",
+    "act-moveCard": "hat __card__ von __oldList__ nach __list__ verschoben",
+    "act-removeBoardMember": "hat __member__ von __board__ entfernt",
+    "act-restoredCard": "hat __card__ in __board__ wiederhergestellt",
+    "act-unjoinMember": "hat __member__ von __card__ entfernt",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Aktionen",
     "activities": "Aktivitäten",
     "activity": "Aktivität",
@@ -8,45 +28,51 @@
     "activity-attached": "hat %s an %s angehängt",
     "activity-created": "hat %s erstellt",
     "activity-excluded": "hat %s von %s ausgeschlossen",
-    "activity-imported": "imported %s into %s from %s",
-    "activity-imported-board": "imported %s from %s",
-    "activity-joined": "hat %s beigetreten",
+    "activity-imported": "hat %s in %s von %s importiert",
+    "activity-imported-board": "hat %s von %s importiert",
+    "activity-joined": "ist %s beigetreten",
     "activity-moved": "hat %s von %s nach %s verschoben",
-    "activity-on": "on %s",
+    "activity-on": "in %s",
     "activity-removed": "hat %s von %s entfernt",
     "activity-sent": "hat %s an %s gesendet",
-    "activity-unjoined": "unjoined %s",
+    "activity-unjoined": "hat %s verlassen",
+    "activity-checklist-added": "Checklist zu %s hinzugefügt",
     "add": "Hinzufügen",
     "add-attachment": "Anhang hinzufügen",
     "add-board": "Neues Board erstellen",
-    "add-card": "Karte hinzufügen...",
+    "add-card": "Karte hinzufügen",
+    "add-checklist": "Füge eine Checklist hinzu",
+    "add-checklist-item": "Füge einen Punkt zu Checklist hinzu",
     "add-cover": "Cover hinzufügen",
     "add-label": "Label hinzufügen",
-    "add-list": "Liste hinzufügen...",
-    "add-members": "Mitglieder hinzufügen...",
+    "add-list": "Liste hinzufügen",
+    "add-members": "Mitglieder hinzufügen",
     "added": "Hinzugefügt",
-    "addMemberPopup-title": "Nutzer",
+    "addMemberPopup-title": "Mitglieder",
     "admin": "Admin",
     "admin-desc": "Kann Karten anschauen und bearbeiten, Mitglieder entfernen und Boardeinstellungen ändern.",
     "all-boards": "Alle Boards",
     "and-n-other-card": "und eine andere Karte",
     "and-n-other-card_plural": "und __count__ andere Karten",
+    "apply": "Übernehmen",
+    "app-is-offline": "Die Anwendung ist derzeit offline. Aktualisieren der Seite führt zu Datenverlust.",
     "archive": "Archiv",
     "archive-all": "Alles archivieren",
     "archive-board": "Board archivieren",
     "archive-card": "Karte archivieren",
     "archive-list": "Diese Liste archivieren",
     "archive-selection": "Auswahl archivieren",
-    "archiveBoardPopup-title": "Archive Board?",
+    "archiveBoardPopup-title": "Board archivieren?",
     "archived-items": "Archivierte Einträge",
     "archives": "Archive",
     "assign-member": "Mitglied zuweisen",
     "attached": "angehängt",
     "attachment": "Anhang",
-    "attachment-delete-pop": "Das Löschen des Anhangs ist endgültig und kann nicht wieder rückgängig gemacht werden.",
+    "attachment-delete-pop": "Das Löschen eines Anhangs kann nicht wieder rückgängig gemacht werden.",
     "attachmentDeletePopup-title": "Anhang löschen?",
     "attachments": "Anhänge",
-    "avatar-too-big": "Das Profilbild ist zu groß (70Kb max)",
+    "auto-watch": "Neue Boards automatisch beobachten",
+    "avatar-too-big": "Das Profilbild ist zu groß (max. 70Kb)",
     "back": "Zurück",
     "board-change-color": "Farbe ändern",
     "board-nb-stars": "%s Sterne",
@@ -56,21 +82,25 @@
     "boardChangeColorPopup-title": "Boardfarbe ändern",
     "boardChangeTitlePopup-title": "Board umbenennen",
     "boardChangeVisibilityPopup-title": "Sichtbarkeit ändern",
-    "boardImportBoardPopup-title": "Import board from Trello",
+    "boardChangeWatchPopup-title": "Beobachtung ändern",
     "boardMenuPopup-title": "Boardmenü",
     "boards": "Boards",
-    "bucket-example": "Zum Beispiel \"Bucket List\"",
+    "bucket-example": "z.B. \"Löffelliste\"",
     "cancel": "Abbrechen",
     "card-archived": "Diese Karte wurde archiviert.",
     "card-comments-title": "Diese Karte hat %s Kommentare.",
-    "card-delete-notice": "Löschen ist irreversiebel. Alle Aktionen, die mit dieser Karte zu tun haben, werden ebenfalls gelöscht.",
-    "card-delete-pop": "Alle Aktionen werden vom Aktivitätsfeed entfernt und du kannst die Karte nicht mehr öffnen. Es gibt keine Möglichkeit diese Aktion rückgängig zu machen.",
-    "card-delete-suggest-archive": "Du kannst die Karte statdessen archivieren, um sie vom Bord zu entfernen und die Aktivitäten zu erhalten.",
-    "card-edit-attachments": "Anhang ändern",
+    "card-delete-notice": "Löschen ist unwiderruflich. Alle Aktionen die dieser Karte zugeordnet sind werden ebenfalls gelöscht.",
+    "card-delete-pop": "Alle Aktionen werden vom Aktivitätsfeed entfernt und die Karte kann nicht mehr geöffnet werden. Das Löschen kann nicht widerrufen werden!",
+    "card-delete-suggest-archive": "Sie können eine Karte archivieren, um sie von dem Board zu entfernen und die Aktivitäten zu behalten.",
+    "card-due": "Ende",
+    "card-due-on": "Ende am",
+    "card-edit-attachments": "Anhänge ändern",
     "card-edit-labels": "Labels ändern",
-    "card-edit-members": "Nutzer ändern",
-    "card-labels-title": "Label für diese Karte ändern.",
-    "card-members-title": "Füge dem Board Nutzer hinzu oder entferne sie von der Karte.",
+    "card-edit-members": "Mitglieder ändern",
+    "card-labels-title": "Labels für diese Karte ändern.",
+    "card-members-title": "Der Karte Board-Mitglieder hinzufügen oder entfernen.",
+    "card-start": "Start",
+    "card-start-on": "Start am",
     "cardAttachmentsPopup-title": "Anhängen von",
     "cardDeletePopup-title": "Karte löschen?",
     "cardDetailsActionsPopup-title": "Kartenaktionen",
@@ -78,20 +108,23 @@
     "cardMembersPopup-title": "Mitglieder",
     "cardMorePopup-title": "Mehr",
     "cards": "Karten",
-    "change": "Change",
+    "change": "Ändern",
     "change-avatar": "Profilbild ändern",
     "change-password": "Passwort ändern",
-    "change-permissions": "Ändere Berechtigungen",
+    "change-permissions": "Berechtigungen ändern",
+    "change-settings": "Einstellungen ändern",
     "changeAvatarPopup-title": "Profilbild ändern",
-    "changeLanguagePopup-title": "Sprache ändern...",
+    "changeLanguagePopup-title": "Sprache ändern",
     "changePasswordPopup-title": "Passwort ändern",
-    "changePermissionsPopup-title": "Ändere Berechtigungen",
-    "click-to-star": "Klicke, um dem Board einen Stern zu geben.",
-    "click-to-unstar": "Klicke, um den Stern zu entfernen.",
-    "clipboard": "Clipboard or drag & drop",
+    "changePermissionsPopup-title": "Berechtigungen ändern",
+    "changeSettingsPopup-title": "Einstellungen ändern",
+    "checklists": "Checklists",
+    "click-to-star": "Klicken um dem Board einen Stern zu geben.",
+    "click-to-unstar": "Klicken um den Stern von dem Board zu entfernen.",
+    "clipboard": "Zwischenablage oder Drag & Drop",
     "close": "Schließen",
     "close-board": "Board schließen",
-    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
+    "close-board-pop": "Sie können das Board wiederherstellen, indem Sie den \"Archiv\"-Button in der Kopfzeile der Startseite anklicken.",
     "color-black": "schwarz",
     "color-blue": "blau",
     "color-green": "grün",
@@ -106,10 +139,11 @@
     "comment-placeholder": "Kommentar schreiben",
     "computer": "Computer",
     "create": "Erstellen",
-    "createBoardPopup-title": "Erstelle ein Board",
+    "createBoardPopup-title": "Board erstellen",
     "createLabelPopup-title": "Label erstellen",
     "current": "aktuell",
-    "decline": "Decline",
+    "date": "Datum",
+    "decline": "Ablehnen",
     "default-avatar": "Standard Profilbild",
     "delete": "Löschen",
     "deleteLabelPopup-title": "Label löschen?",
@@ -117,86 +151,98 @@
     "disambiguateMultiLabelPopup-title": "Labels vereinheitlichen",
     "disambiguateMultiMemberPopup-title": "Mitglieder vereinheitlichen",
     "discard": "Verwerfen",
-    "done": "Done",
-    "download": "Download",
+    "done": "Erledigt",
+    "download": "Herunterladen",
     "edit": "Bearbeiten",
     "edit-avatar": "Profilbild ändern",
     "edit-profile": "Profil ändern",
-    "editLabelPopup-title": "Ändere Label",
+    "editCardStartDatePopup-title": "Startdatum ändern",
+    "editCardDueDatePopup-title": "Enddatum ändern",
+    "editLabelPopup-title": "Label ändern",
+    "editNotificationPopup-title": "Benachrichtigung ändern",
     "editProfilePopup-title": "Profil ändern",
-    "email": "Email",
-    "email-enrollAccount-subject": "An account created for you on __siteName__",
-    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
-    "email-fail": "Sending email failed",
-    "email-invalid": "Invalid email",
-    "email-invite": "Invite via Email",
-    "email-invite-subject": "__inviter__ sent you an invitation",
-    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
-    "email-resetPassword-subject": "Reset your password on __siteName__",
-    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
-    "email-sent": "Email sent",
-    "email-verifyEmail-subject": "Verify your email address on __siteName__",
-    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
-    "error-board-doesNotExist": "This board does not exist",
-    "error-board-notAdmin": "You need to be admin of this board to do that",
-    "error-board-notAMember": "You need to be a member of this board to do that",
-    "error-json-malformed": "Your text is not valid JSON",
-    "error-json-schema": "Your JSON data does not include the proper information in the correct format",
-    "error-list-doesNotExist": "This list does not exist",
-    "error-user-doesNotExist": "This user does not exist",
-    "error-user-notAllowSelf": "This action on self is not allowed",
-    "error-user-notCreated": "This user is not created",
-    "export-board": "Export board",
+    "email": "E-Mail",
+    "email-enrollAccount-subject": "Ihr Benutzerkonto auf __siteName__ wurde erstellt",
+    "email-enrollAccount-text": "Hallo __user__,\n\num den Dienst nutzen zu können, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.",
+    "email-fail": "Senden der E-Mail fehlgeschlagen",
+    "email-invalid": "Ungültige E-Mail-Adresse",
+    "email-invite": "via E-Mail einladen",
+    "email-invite-subject": "__inviter__ hat Ihnen eine Einladung geschickt",
+    "email-invite-text": "Hallo __user__,\n\n__inviter__ hat Sie zu dem Board \"__board__\" eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n\n__url__\n\nDanke.",
+    "email-resetPassword-subject": "Setzten Sie ihr Passwort auf __siteName__ zurück",
+    "email-resetPassword-text": "Hallo __user__,\n\num ihr Passwort zurückzusetzen, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.",
+    "email-sent": "E-Mail gesendet",
+    "email-verifyEmail-subject": "Bestätigen Sie ihre E-Mail-Adresse auf __siteName__",
+    "email-verifyEmail-text": "Hallo __user__,\n\num ihre E-Mail-Adresse zu bestätigen, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.",
+    "error-board-doesNotExist": "Dieses Board existiert nicht",
+    "error-board-notAdmin": "Um das zu tun, müssen Sie der Administrator dieses Boards sein",
+    "error-board-notAMember": "Um das zu tun, müssen Sie ein Mitglied dieses Boards sein",
+    "error-json-malformed": "Ihre Eingabe ist kein gültiges JSON",
+    "error-json-schema": "Ihre JSON-Daten enthalten nicht die gewünschten Informationen im richtigen Format",
+    "error-list-doesNotExist": "Diese Liste existiert nicht",
+    "error-user-doesNotExist": "Dieser Nutzer existiert nicht",
+    "error-user-notAllowSelf": "Diese Aktion auf self ist nicht erlaubt",
+    "error-user-notCreated": "Dieser Nutzer ist angelegt",
+    "error-username-taken": "Dieser Benutzername ist bereits vergeben",
+    "export-board": "Board exportieren",
     "filter": "Filter",
     "filter-cards": "Karten filtern",
     "filter-clear": "Filter entfernen",
+    "filter-no-label": "Kein Label",
+    "filter-no-member": "Kein Mitglied",
     "filter-on": "Filter ist aktiv",
-    "filter-on-desc": "Du filterst die Karten auf diesem Board. Klicke hier, um die Filter zu bearbeiten.",
+    "filter-on-desc": "Sie filtern die Karten in diesem Board. Klicken um die Filter zu bearbeiten.",
     "filter-to-selection": "Ergebnisse auswählen",
-    "fullname": "Voller Name",
+    "fullname": "Vollständiger Name",
     "header-logo-title": "Zurück zur Board Seite.",
+    "hide-system-messages": "Systemmeldungen ausblenden",
     "home": "Home",
     "import": "Importieren",
-    "import-board": "import from Trello",
-    "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-card": "Import a Trello card",
-    "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text",
-    "import-json-placeholder": "Paste your valid JSON data here",
-    "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
-    "import-show-user-mapping": "Review members mapping",
-    "import-user-select": "Pick the Wekan user you want to use as this member",
+    "import-board": "von Trello importieren",
+    "import-board-title": "Board von Trello importieren",
+    "import-board-trello-instruction": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text",
+    "import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein",
+    "import-map-members": "Mitglieder zuordnen",
+    "import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen Sie die Mitglieder, die importiert werden sollen, Wekan-Nutzern zu",
+    "import-show-user-mapping": "Mitgliederzuordnung überprüfen",
+    "import-user-select": "Wählen Sie den Wekan-Nutzer aus, der dieses Mitglied sein soll",
+    "importMapMembersAddPopup-title": "Wekan-Nutzer auswählen",
     "info": "Informationen",
     "initials": "Initialien",
+    "invalid-date": "Ungültiges Datum",
     "joined": "beigetreten",
-    "just-invited": "You are just invited to this board",
+    "just-invited": "Sie wurden soeben zu diesem Board eingeladen",
     "keyboard-shortcuts": "Tastaturkürzel",
-    "label-create": "Neues Label erstellen.",
+    "label-create": "Neues Label erstellen",
     "label-default": "%s Label (Standard)",
-    "label-delete-pop": "Diese Aktion ist irreversiebel. Das Label wird von allen Karten entfernt und seine Historie gelöscht.",
+    "label-delete-pop": "Diese Aktion ist unwiderruflich. Das Label wird von allen Karten entfernt und seine Historie wird gelöscht.",
     "labels": "Labels",
     "language": "Sprache",
-    "last-admin-desc": "Du kannst die Rolle nicht ändern, es muss mindestens einen Admin geben.",
+    "last-admin-desc": "Sie können keine Rollen ändern, weil es mindestens ein Administrator geben muss.",
     "leave-board": "Board verlassen",
     "link-card": "Link zu dieser Karte",
     "list-archive-cards": "Alle Karten in dieser Liste archivieren",
-    "list-archive-cards-pop": "Dies entfernt alle Karten in der Liste vom Board. Um archivierte Karten anzusehen und zurück zum Board zu bringen, klicke \"Menü\" > \"Archivierte Items\".",
+    "list-archive-cards-pop": "Dieses entfernt alle Karten von dieser Liste des Boards. Um archivierte Karten anzuzeigen und wiederherzustellen, klicken Sie auf \"Menü\" > \"Archivierte Einträge\".",
     "list-move-cards": "Alle Karten in dieser Liste verschieben",
     "list-select-cards": "Alle Karten in dieser Liste auswählen",
     "listActionPopup-title": "Listenaktionen",
-    "listImportCardPopup-title": "Import a Trello card",
+    "listImportCardPopup-title": "Eine Trello-Karte importieren",
     "lists": "Listen",
     "log-out": "Ausloggen",
+    "log-in": "Einloggen",
     "loginPopup-title": "Einloggen",
-    "mapMembersAddPopup-title": "Select Wekan member",
-    "mapMembersPopup-title": "Map members",
     "memberMenuPopup-title": "Nutzereinstellungen",
-    "members": "Mitglied",
+    "members": "Mitglieder",
     "menu": "Menü",
-    "move-selection": "Move selection",
+    "move-selection": "Auswahl verschieben",
     "moveCardPopup-title": "Karte verschieben",
-    "moveSelectionPopup-title": "Move selection",
+    "moveCardToBottom-title": "Zum Ende verschieben",
+    "moveCardToTop-title": "Zum Anfang verschieben",
+    "moveSelectionPopup-title": "Auswahl verschieben",
     "multi-selection": "Mehrfachauswahl",
-    "multi-selection-on": "Multi-Selection is on",
+    "multi-selection-on": "Mehrfachauswahl ist aktiv",
+    "muted": "Stumm",
+    "muted-info": "Sie werden über keine Änderung in diesem Board benachrichtigt",
     "my-boards": "Meine Boards",
     "name": "Name",
     "no-archived-cards": "Keine archivierten Karten.",
@@ -204,60 +250,75 @@
     "no-results": "Keine Ergebnisse",
     "normal": "Normal",
     "normal-desc": "Kann Karten anschauen und bearbeiten, aber keine Einstellungen ändern.",
-    "not-accepted-yet": "Invitation not accepted yet",
+    "not-accepted-yet": "Die Einladung wurde noch nicht angenommen",
+    "notify-participate": "Benachrichtigungen über alle Karten erhalten, bei denen Sie als Ersteller oder Mitglied teilnehmen",
+    "notify-watch": "Benachrichtigungen über alle Boards, Listen oder Karten erhalten, die Sie beobachten",
     "optional": "optional",
     "or": "oder",
-    "page-maybe-private": "Diese Seite könnte privat sein.  Vielleicht kannst du sie sehen, wenn du dich <a href='%s'>einloggst</a>.",
+    "page-maybe-private": "Diese Seite könnte privat sein. Vielleicht können Sie sie sehen, wenn Sie sich <a href='%s'>einloggen</a>.",
     "page-not-found": "Seite nicht gefunden.",
     "password": "Passwort",
-    "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
-    "preview": "Preview",
-    "previewAttachedImagePopup-title": "Preview",
-    "previewClipboardImagePopup-title": "Preview",
+    "paste-or-dragdrop": "Einfügen oder Datei mit Drag & Drop ablegen (nur Bilder)",
+    "participating": "Teilnehmen",
+    "preview": "Vorschau",
+    "previewAttachedImagePopup-title": "Vorschau",
+    "previewClipboardImagePopup-title": "Vorschau",
     "private": "Privat",
     "private-desc": "Dieses Board ist privat. Nur Nutzer, die zu dem Board gehören, können es anschauen und bearbeiten.",
     "profile": "Profil",
     "public": "Öffentlich",
     "public-desc": "Dieses Board ist öffentlich. Es ist für jeden, der den Link kennt, sichtbar und taucht in Suchmaschinen wie Google auf. Nur Nutzer, die zum Board hinzugefügt wurden, können es bearbeiten.",
-    "quick-access-description": "Markiere ein Board mit einem Stern um eine Verknüpfung in diese Leise hinzuzufügen.",
+    "quick-access-description": "Markieren Sie ein Board mit einem Stern um eine Verknüpfung in diese Leise hinzuzufügen.",
     "remove-cover": "Cover entfernen",
     "remove-from-board": "Von Board entfernen",
     "remove-label": "Label entfernen",
+    "remove-list": "Liste entfernen",
     "remove-member": "Nutzer entfernen",
     "remove-member-from-card": "Von Karte entfernen",
-    "remove-member-pop": "Entferne __name__ (__username__) von __boardTitle__? Nutzer wird von allen Karten auf diesem Board entfernt werden. Er wird eine Benachrichtigung erhalten.",
-    "removeMemberPopup-title": "Nutzer entfernen?",
+    "remove-member-pop": "__name__ (__username__) von __boardTitle__ entfernen? Das Mitglied wird von allen Karten auf diesem Board entfernt. Er erhält eine Benachrichtigung.",
+    "removeMemberPopup-title": "Mitglied entfernen?",
     "rename": "Umbenennen",
     "rename-board": "Board umbenennen",
     "restore": "Wiederherstellen",
     "save": "Speichern",
     "search": "Suchen",
-    "select-color": "Wähle eine Farbe aus",
-    "shortcut-assign-self": "Assign yourself to current card",
-    "shortcut-autocomplete-emoji": "Autovervollständige Emojis",
-    "shortcut-autocomplete-members": "Autovervollständige Nutzer",
+    "select-color": "Farbe auswählen",
+    "shortcut-assign-self": "Fügen Sie sich zur aktuellen Karte hinzu",
+    "shortcut-autocomplete-emoji": "Emojis vervollständigen",
+    "shortcut-autocomplete-members": "Mitglieder vervollständigen",
     "shortcut-clear-filters": "Alle Filter entfernen",
     "shortcut-close-dialog": "Dialog schließen",
     "shortcut-filter-my-cards": "Meine Karten filtern",
     "shortcut-show-shortcuts": "Liste der Tastaturkürzel anzeigen",
-    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+    "shortcut-toggle-filterbar": "Filter-Seitenleiste ein-/ausblenden",
     "shortcut-toggle-sidebar": "Seitenleiste ein-/ausblenden",
-    "signupPopup-title": "Account erstellen",
-    "star-board-title": "Klicke, um das Board mit einem Stern zu kennzeichnen. Es erscheint dann oben in deiner Boardliste.",
-    "starred-boards": "Gekennzeichnete Boards",
-    "starred-boards-description": "Gekennzeichnete Boards erscheinen oben in deiner Boardliste.",
+    "show-cards-minimum-count": "Zeigt die Kartenanzahl an, wenn die Liste mehr enthält als",
+    "signupPopup-title": "Benutzerkonto erstellen",
+    "star-board-title": "Klicken um das Board mit einem Stern zu kennzeichnen. Es erscheint dann oben in ihrer Boardliste.",
+    "starred-boards": "Markierte Boards",
+    "starred-boards-description": "Markierte Boards erscheinen oben in ihrer Boardliste.",
     "subscribe": "Abonnieren",
     "team": "Team",
     "this-board": "dieses Board",
     "this-card": "diese Karte",
+    "time": "Zeit",
     "title": "Titel",
-    "unassign-member": "Mitglied abziehen",
-    "unsaved-description": "Es gibt eine ungespeicherte Beschreibung.",
+    "tracking": "Folgen",
+    "tracking-info": "Sie werden über alle Änderungen an Karten, die Sie als Ersteller oder Mitglied beteiligt sind, benachrichtigt.",
+    "unassign-member": "Mitglied entfernen",
+    "unsaved-description": "Sie haben eine nicht gespeicherte Änderung.",
+    "unwatch": "Beobachtung entfernen",
     "upload": "Upload",
     "upload-avatar": "Profilbild hochladen",
     "uploaded-avatar": "Profilbild hochgeladen",
-    "username": "Nutzername",
+    "username": "Benutzername",
     "view-it": "Ansehen",
     "warn-list-archived": "Warnung: Diese Karte befindet sich in einer archivierten Liste",
+    "watch": "Beobachten",
+    "watching": "Beobatchen",
+    "watching-info": "Sie werden über alle Änderungen in diesem Board informiert",
+    "welcome-board": "Willkommen-Board",
+    "welcome-list1": "Grundlagen",
+    "welcome-list2": "Fortgeschritten",
     "what-to-do": "Was willst du tun?"
-}
+}

+ 28 - 6
i18n/en.i18n.json

@@ -36,10 +36,13 @@
     "activity-removed": "removed %s from %s",
     "activity-sent": "sent %s to %s",
     "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "Add",
     "add-attachment": "Add an attachment",
     "add-board": "Add a new board",
     "add-card": "Add a card",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "Add Cover",
     "add-label": "Add the label",
     "add-list": "Add a list",
@@ -51,6 +54,7 @@
     "all-boards": "All boards",
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
     "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Archive",
     "archive-all": "Archive All",
@@ -88,11 +92,15 @@
     "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Edit attachments",
     "card-edit-labels": "Edit labels",
     "card-edit-members": "Edit members",
     "card-labels-title": "Change the labels for the card.",
     "card-members-title": "Add or remove members of the board from the card.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardDeletePopup-title": "Delete Card?",
     "cardDetailsActionsPopup-title": "Card Actions",
@@ -104,13 +112,16 @@
     "change-avatar": "Change Avatar",
     "change-password": "Change Password",
     "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "Change Avatar",
     "changeLanguagePopup-title": "Change Language",
     "changePasswordPopup-title": "Change Password",
     "changePermissionsPopup-title": "Change Permissions",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
     "click-to-star": "Click to star this board.",
     "click-to-unstar": "Click to unstar this board.",
-    "clipboard" : "Clipboard or drag & drop",
+    "clipboard": "Clipboard or drag & drop",
     "close": "Close",
     "close-board": "Close Board",
     "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
@@ -131,6 +142,7 @@
     "createBoardPopup-title": "Create Board",
     "createLabelPopup-title": "Create Label",
     "current": "current",
+    "date": "Date",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "delete": "Delete",
@@ -144,22 +156,24 @@
     "edit": "Edit",
     "edit-avatar": "Change Avatar",
     "edit-profile": "Edit Profile",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "Change Label",
     "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "Edit Profile",
     "email": "Email",
     "email-enrollAccount-subject": "An account created for you on __siteName__",
-    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.\n",
+    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
     "email-fail": "Sending email failed",
     "email-invalid": "Invalid email",
     "email-invite": "Invite via Email",
     "email-invite-subject": "__inviter__ sent you an invitation",
-    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.\n",
+    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
     "email-resetPassword-subject": "Reset your password on __siteName__",
-    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.\n",
+    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
     "email-sent": "Email sent",
     "email-verifyEmail-subject": "Verify your email address on __siteName__",
-    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.\n",
+    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
     "error-board-doesNotExist": "This board does not exist",
     "error-board-notAdmin": "You need to be admin of this board to do that",
     "error-board-notAMember": "You need to be a member of this board to do that",
@@ -169,15 +183,19 @@
     "error-user-doesNotExist": "This user does not exist",
     "error-user-notAllowSelf": "This action on self is not allowed",
     "error-user-notCreated": "This user is not created",
+    "error-username-taken": "This username is already taken",
     "export-board": "Export board",
     "filter": "Filter",
     "filter-cards": "Filter Cards",
     "filter-clear": "Clear filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "Filter is on",
     "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
     "filter-to-selection": "Filter to selection",
     "fullname": "Full Name",
     "header-logo-title": "Go back to your boards page.",
+    "hide-system-messages": "Hide system messages",
     "home": "Home",
     "import": "Import",
     "import-board": "import from Trello",
@@ -191,6 +209,7 @@
     "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "Infos",
     "initials": "Initials",
+    "invalid-date": "Invalid date",
     "joined": "joined",
     "just-invited": "You are just invited to this board",
     "keyboard-shortcuts": "Keyboard shortcuts",
@@ -253,6 +272,7 @@
     "remove-cover": "Remove Cover",
     "remove-from-board": "Remove from Board",
     "remove-label": "Remove the label",
+    "remove-list": "Remove the list",
     "remove-member": "Remove Member",
     "remove-member-from-card": "Remove from Card",
     "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
@@ -272,6 +292,7 @@
     "shortcut-show-shortcuts": "Bring up this shortcuts list",
     "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
     "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Create an Account",
     "star-board-title": "Click to star this board. It will show up at top of your boards list.",
     "starred-boards": "Starred Boards",
@@ -280,6 +301,7 @@
     "team": "Team",
     "this-board": "this board",
     "this-card": "this card",
+    "time": "Time",
     "title": "Title",
     "tracking": "Tracking",
     "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
@@ -299,4 +321,4 @@
     "welcome-list1": "Basics",
     "welcome-list2": "Advanced",
     "what-to-do": "What do you want to do?"
-}
+}

+ 65 - 8
i18n/es-ES.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Aceptar",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Acciones",
     "activities": "Actividad",
     "activity": "Actividad",
@@ -31,6 +51,8 @@
     "all-boards": "Todos los tableros",
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Guardar",
     "archive-all": "Guardar Todo",
     "archive-board": "Archivar tablero",
@@ -46,6 +68,7 @@
     "attachment-delete-pop": "El borrado de un archivo adjunto es permanente. No se puede deshacer.",
     "attachmentDeletePopup-title": "¿Borrar adjunto?",
     "attachments": "Adjuntos",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "El avatar es demasiado grande (70Kb max)",
     "back": "Atrás",
     "board-change-color": "Cambiar color",
@@ -56,7 +79,7 @@
     "boardChangeColorPopup-title": "Cambiar fondo",
     "boardChangeTitlePopup-title": "Renombrar tablero",
     "boardChangeVisibilityPopup-title": "Cambiar visibilidad",
-    "boardImportBoardPopup-title": "Importar tablero desde Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "Menú del tablero",
     "boards": "Tableros",
     "bucket-example": "Al igual que “Bucket List”, por ejemplo",
@@ -66,11 +89,15 @@
     "card-delete-notice": "El borrado es permanente. Perderás todas las acciones asociadas a esta tarjeta.",
     "card-delete-pop": "Todas las acciones se eliminarán de la alimentación de la actividad y no podrán volver a abrir la tarjeta. No se puede deshacer.",
     "card-delete-suggest-archive": "Puedes archivar una tarjeta para quitarla del tablero y conservar la actividad.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Editar archivos adjuntos",
     "card-edit-labels": "Editar etiquetas",
     "card-edit-members": "Editar miembros",
     "card-labels-title": "Cambia las etiquetas de la tarjeta",
     "card-members-title": "Añadir o eliminar miembros del tablero desde la tarjeta.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Adjuntar desde",
     "cardDeletePopup-title": "¿Borrar tarjeta?",
     "cardDetailsActionsPopup-title": "Acciones de tarjeta",
@@ -82,13 +109,15 @@
     "change-avatar": "Cambiar Avatar",
     "change-password": "Cambiar la contraseña",
     "change-permissions": "Cambiar permisos",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "Cambiar Avatar",
     "changeLanguagePopup-title": "Cambiar idioma",
     "changePasswordPopup-title": "Cambiar la contraseña",
     "changePermissionsPopup-title": "Cambiar permisos",
+    "changeSettingsPopup-title": "Change Settings",
     "click-to-star": "Haz clic para destacar este tablero.",
     "click-to-unstar": "Haz clic para dejar de destacar este tablero.",
-    "clipboard": "Portapapeles o drag & drop",
+    "clipboard" : "Portapapeles o drag & drop",
     "close": "Cerrar",
     "close-board": "Cerrar tablero",
     "close-board-pop": "Podrás restaurar el tablero seleccionando el botón “Archivados” desde la cabecera de la página de inicio.",
@@ -109,6 +138,7 @@
     "createBoardPopup-title": "Crear tablero",
     "createLabelPopup-title": "Crear etiqueta",
     "current": "actual",
+    "date": "Date",
     "decline": "Denegar",
     "default-avatar": "Avatar por defecto",
     "delete": "Borrar",
@@ -122,7 +152,10 @@
     "edit": "Editar",
     "edit-avatar": "Cambiar Avatar",
     "edit-profile": "Edita tu Perfil",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "Cambiar etiqueta",
+    "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "Editar Perfil",
     "email": "Correo electrónico",
     "email-enrollAccount-subject": "Se ha creado un cuenta para ti en __siteName__",
@@ -146,27 +179,33 @@
     "error-user-doesNotExist": "Este usuario no existe",
     "error-user-notAllowSelf": "Esa acción en si misma no está permitida",
     "error-user-notCreated": "Este usuario no se ha creado",
+    "error-username-taken": "This username is already taken",
     "export-board": "Exportar tablero",
     "filter": "Filtrar",
     "filter-cards": "Filtrar Tarjetas",
     "filter-clear": "Eliminar filtro",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "Filtrar por",
     "filter-on-desc": "Estás filtrando tarjetas en este tablero. Haz clic aquí para editar el filtro.",
     "filter-to-selection": "Filtrar selección",
     "fullname": "Nombre Completo",
     "header-logo-title": "Volver a tu página de tableros",
+    "hide-system-messages": "Hide system messages",
     "home": "Inicio",
     "import": "Importar",
     "import-board": "Importar desde Trello",
+    "import-board-title": "Import board from Trello",
     "import-board-trello-instruction": "En su tablero Trello, vaya a \"Menú\", luego \"Más\", \"Imprimir y exportar\", \"Exportación JSON ', y copia el texto que se muestre",
-    "import-card": "Importar tarjeta de Trello",
-    "import-card-trello-instruction": "Ve a la tarjeta Trello, selecciona 'Compartir y más...' y marca 'Export JSON' y copia el texto que obtengas",
     "import-json-placeholder": "Pega aquí los datos JSON",
+    "import-map-members": "Map members",
     "import-members-map": "El tablero importado tiene algunos miembros. Por favor, asigna los miembros que deseas importar a Wekan",
     "import-show-user-mapping": "Revisar asignación de miembros",
     "import-user-select": "Escoja el usuario Wekan que desea utilizar como miembro",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "Informaciones",
     "initials": "Iniciales",
+    "invalid-date": "Invalid date",
     "joined": "se ha unido",
     "just-invited": "Has sido invitado a este tablero",
     "keyboard-shortcuts": "Atajos de teclado",
@@ -186,17 +225,20 @@
     "listImportCardPopup-title": "Importar tarjeta de Trello",
     "lists": "Listas",
     "log-out": "Finalizar la sesión",
+    "log-in": "Log In",
     "loginPopup-title": "Iniciar sesión",
-    "mapMembersAddPopup-title": "Selecciona un miembro de Wekan",
-    "mapMembersPopup-title": "Asignar miembros",
     "memberMenuPopup-title": "Configurar miembros",
     "members": "Miembros",
     "menu": "Menú",
     "move-selection": "Mover selección",
     "moveCardPopup-title": "Mover Tarjeta",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
     "moveSelectionPopup-title": "Mover selección",
     "multi-selection": "Multi-Selección",
     "multi-selection-on": "Multi-selección activada",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "Mis Tableros",
     "name": "Nombre",
     "no-archived-cards": "No hay tarjetas archivadas.",
@@ -205,12 +247,15 @@
     "normal": "Normal",
     "normal-desc": "Puedes ver y editar tarjetas. No puedes cambiar la configuración.",
     "not-accepted-yet": "Invitación no aceptada aún",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "opcional",
     "or": "o",
     "page-maybe-private": "Esta página es privada. Para verla tienes que <a href='%s'>entrar</a>.",
     "page-not-found": "Página no encontrada.",
     "password": "Contraseña",
     "paste-or-dragdrop": "para pegar, o hacer drag & drop de un archivo (solo imágenes)",
+    "participating": "Participating",
     "preview": "Vista previa",
     "previewAttachedImagePopup-title": "Vista previa",
     "previewClipboardImagePopup-title": "Vista previa",
@@ -223,6 +268,7 @@
     "remove-cover": "Eliminar cubierta",
     "remove-from-board": "Eliminar del tablero",
     "remove-label": "Eliminar etiqueta",
+    "remove-list": "Remove the list",
     "remove-member": "Eliminar Miembro",
     "remove-member-from-card": "Eliminar de la Tarjeta",
     "remove-member-pop": "Eliminar  __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. Ellos recibirán una notificación.",
@@ -234,7 +280,7 @@
     "search": "Buscar",
     "select-color": "Selecciona un color",
     "shortcut-assign-self": "Asignarme la tarjeta actual",
-    "shortcut-autocomplete-emojies": "Autocompletar emojies",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-members": "Autocompletar miembros",
     "shortcut-clear-filters": "Eliminar todos los filters",
     "shortcut-close-dialog": "Cierra el Dialogo",
@@ -242,6 +288,7 @@
     "shortcut-show-shortcuts": "Mostrar atajos de teclado",
     "shortcut-toggle-filterbar": "Mostrar/Ocultar la barra lateral de filtrado",
     "shortcut-toggle-sidebar": "Menú lateral del Tablero",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Crear una cuenta",
     "star-board-title": "Haz clic para destacar este tablero. Se mostrará en la parte superior de tu lista de tableros.",
     "starred-boards": "Tableros Destacados",
@@ -250,14 +297,24 @@
     "team": "Equipo",
     "this-board": "este tablero",
     "this-card": "esta tarjeta",
+    "time": "Time",
     "title": "Título",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Desasignar miembro",
     "unsaved-description": "Tienes una descripción sin guardar.",
+    "unwatch": "Unwatch",
     "upload": "Subir",
     "upload-avatar": "Subir avatar",
     "uploaded-avatar": "Avatar actualizado",
     "username": "Nombre de usuario",
     "view-it": "Visto",
     "warn-list-archived": "Aviso: esta tarjeta está en una lista archivada",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "¿Qué quieres hacer?"
-}
+}

+ 108 - 47
i18n/es.i18n.json

@@ -1,5 +1,25 @@
 {
-    "accept": "Accept",
+    "accept": "Aceptar",
+    "act-activity-notify": "[Wekan] Notificación de Actividad",
+    "act-addAttachment": "adjuntado __attachment__ a __card__",
+    "act-addComment": "comentado en __card__: __comment__",
+    "act-createBoard": "creado __board__",
+    "act-createCard": "añadido __card__ a __list__",
+    "act-createList": "añadido __list__ a __board__",
+    "act-addBoardMember": "añadido __member__ a __board__",
+    "act-archivedBoard": "__board__ archivado",
+    "act-archivedCard": "__card__ archivada",
+    "act-archivedList": "__list__ archivada",
+    "act-importBoard": "__board__ importado",
+    "act-importCard": "__card__ importada",
+    "act-importList": "__list__ importada",
+    "act-joinMember": "añadido __member__ to __card__",
+    "act-moveCard": "movida __card__ desde __oldList__ a __list__",
+    "act-removeBoardMember": "borrado __member__ de __board__",
+    "act-restoredCard": "restaurada __card__ en __board__",
+    "act-unjoinMember": "borrado __member__ de __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Acciones",
     "activities": "Activities",
     "activity": "Actividad",
@@ -16,10 +36,13 @@
     "activity-removed": "eliminado %s de %s",
     "activity-sent": "enviado %s a %s",
     "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "Añadir",
     "add-attachment": "Añadir un adjunto",
     "add-board": "Añadir un nuevo tablero",
     "add-card": "Add a card",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "Añadir cubierta",
     "add-label": "Add the label",
     "add-list": "Add a list",
@@ -31,6 +54,8 @@
     "all-boards": "Tableros",
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Aplicar",
+    "app-is-offline": "La aplicación esta actualmente fuera de servicio, refrescar la página causará pérdida de datos",
     "archive": "Guardar",
     "archive-all": "Guardar Todo",
     "archive-board": "Archive Board",
@@ -40,12 +65,13 @@
     "archiveBoardPopup-title": "Archive Board?",
     "archived-items": "Items archivados",
     "archives": "Archives",
-    "assign-member": "Assign member",
+    "assign-member": "Asignar miembros",
     "attached": "adjuntado",
     "attachment": "Adjunto",
     "attachment-delete-pop": "El borrado de un archivo adjunto es permanente. No se puede deshacer.",
     "attachmentDeletePopup-title": "¿Borrar adjunto?",
     "attachments": "Adjuntos",
+    "auto-watch": "Vigilar tableros automáticamente cuando se crean",
     "avatar-too-big": "The avatar is too large (70Kb max)",
     "back": "Atrás",
     "board-change-color": "Cambiar color",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Change Board Background",
     "boardChangeTitlePopup-title": "Renombrar tablero",
     "boardChangeVisibilityPopup-title": "Cambiar visibilidad",
-    "boardImportBoardPopup-title": "Import board from Trello",
+    "boardChangeWatchPopup-title": "Cambiar Vigilancia",
     "boardMenuPopup-title": "Board Menu",
     "boards": "Tableros",
     "bucket-example": "Like “Bucket List” for example",
@@ -66,11 +92,15 @@
     "card-delete-notice": "El borrado es permanente. Perderás todas las acciones asociadas a esta ficha.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Motivo",
+    "card-due-on": "Debido a",
     "card-edit-attachments": "Edit attachments",
     "card-edit-labels": "Edit labels",
-    "card-edit-members": "Edit members",
+    "card-edit-members": "Editar miembros",
     "card-labels-title": "Cambia las etiquetas de la ficha",
     "card-members-title": "Añadir o eliminar miembros del tablero desde la ficha.",
+    "card-start": "Empezar",
+    "card-start-on": "Empieza",
     "cardAttachmentsPopup-title": "Attach From",
     "cardDeletePopup-title": "¿Borrar ficha?",
     "cardDetailsActionsPopup-title": "Card Actions",
@@ -82,12 +112,15 @@
     "change-avatar": "Cambiar Avatar",
     "change-password": "Cambiar la clave",
     "change-permissions": "Cambiar permisos",
+    "change-settings": "Cambiar Preferencias",
     "changeAvatarPopup-title": "Cambiar Avatar",
     "changeLanguagePopup-title": "Cambiar idioma",
     "changePasswordPopup-title": "Cambiar la clave",
     "changePermissionsPopup-title": "Cambiar permisos",
-    "click-to-star": "Haz clic para destacar este tablero. ",
-    "click-to-unstar": "Haz clic para dejar de destacar este tablero. ",
+    "changeSettingsPopup-title": "Cambiar Preferencias",
+    "checklists": "Checklists",
+    "click-to-star": "Haz clic para destacar este tablero.",
+    "click-to-unstar": "Haz clic para dejar de destacar este tablero.",
     "clipboard": "Clipboard or drag & drop",
     "close": "Cerrar",
     "close-board": "Cerrar el tablero",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "Crear tablero",
     "createLabelPopup-title": "Crear etiqueta",
     "current": "actual",
+    "date": "Fecha",
     "decline": "Decline",
     "default-avatar": "Avatar por defecto",
     "delete": "Borrar",
@@ -122,7 +156,10 @@
     "edit": "Editar",
     "edit-avatar": "Cambiar Avatar",
     "edit-profile": "Edit Profile",
+    "editCardStartDatePopup-title": "Cambiar fecha de inicio",
+    "editCardDueDatePopup-title": "Cambiar fecha de motivo",
     "editLabelPopup-title": "Cambiar etiqueta",
+    "editNotificationPopup-title": "Editar Notificación",
     "editProfilePopup-title": "Edit Profile",
     "email": "Correo electrónico",
     "email-enrollAccount-subject": "An account created for you on __siteName__",
@@ -146,74 +183,86 @@
     "error-user-doesNotExist": "This user does not exist",
     "error-user-notAllowSelf": "This action on self is not allowed",
     "error-user-notCreated": "This user is not created",
+    "error-username-taken": "Este nombre de usuario ya está en uso",
     "export-board": "Export board",
     "filter": "Filter",
     "filter-cards": "Fichas de filtro",
     "filter-clear": "Clear filter",
-    "filter-on": "Filter is on",
+    "filter-no-label": "Sin etiqueta",
+    "filter-no-member": "Sin miembro",
+    "filter-on": "Filtro activo",
     "filter-on-desc": "Estás filtrando fichas en este tablero. Haz clic aquí para editar el filtro.",
     "filter-to-selection": "Filter to selection",
     "fullname": "Nombre Completo",
     "header-logo-title": "Volver a tu página de tableros",
+    "hide-system-messages": "Ocultar los mensajes del sistema",
     "home": "Inicio",
-    "import": "Import",
-    "import-board": "import from Trello",
+    "import": "Importar",
+    "import-board": "importar desde Trello",
+    "import-board-title": "Importar tablero desde Trello",
     "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-card": "Import a Trello card",
-    "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text",
     "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Mapa de miembros",
     "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Seleccionar un miembro de Wekan",
     "info": "Informaciones",
-    "initials": "Initials",
+    "initials": "Iniciales",
+    "invalid-date": "Fecha no Válida",
     "joined": "se ha unido",
     "just-invited": "You are just invited to this board",
-    "keyboard-shortcuts": "Keyboard shortcuts",
-    "label-create": "Crear una etiqueta nueva ",
+    "keyboard-shortcuts": "Atajos de teclado",
+    "label-create": "Crear una etiqueta nueva",
     "label-default": "%s etiqueta (por Defecto)",
     "label-delete-pop": "No se puede deshacer. Esto eliminará esta etiqueta de todas las fichas y destruirá su historia.",
     "labels": "Etiquetas",
     "language": "Idioma",
     "last-admin-desc": "No puedes cambiar roles porque debe haber al menos un administrador.",
-    "leave-board": "Leave Board",
+    "leave-board": "Dejar el Tablero",
     "link-card": "Enlace a esta ficha",
     "list-archive-cards": "Archive all cards in this list",
     "list-archive-cards-pop": "Esto eliminara todas las fichas de esta lista del tablero. Para ver fichas archivadas y recuperarlas en el tablero, haz clic en \"Menu\" / \"Artículos Archivados\".",
     "list-move-cards": "Move all cards in this list",
     "list-select-cards": "Select all cards in this list",
     "listActionPopup-title": "Acciones de la lista",
-    "listImportCardPopup-title": "Import a Trello card",
-    "lists": "Lists",
+    "listImportCardPopup-title": "Importar una tarjeta de Trello",
+    "lists": "Listas",
     "log-out": "Finalizar la sesion",
+    "log-in": "Iniciar sesion",
     "loginPopup-title": "Iniciar sesion",
-    "mapMembersAddPopup-title": "Select Wekan member",
-    "mapMembersPopup-title": "Map members",
-    "memberMenuPopup-title": "Member Settings",
+    "memberMenuPopup-title": "Preferencias de Miembro",
     "members": "Miembros",
     "menu": "Menu",
-    "move-selection": "Move selection",
+    "move-selection": "Mover selección",
     "moveCardPopup-title": "Move Card",
-    "moveSelectionPopup-title": "Move selection",
-    "multi-selection": "Multi-Selection",
-    "multi-selection-on": "Multi-Selection is on",
+    "moveCardToBottom-title": "Mover al Final",
+    "moveCardToTop-title": "Movel al Principio",
+    "moveSelectionPopup-title": "Mover selección",
+    "multi-selection": "Multi-Selección",
+    "multi-selection-on": "Multi-Selección activada",
+    "muted": "Silenciado",
+    "muted-info": "No serás notificado de ningún cambio en este tablero",
     "my-boards": "Mis tableros",
     "name": "Nombre",
-    "no-archived-cards": "No archived cards.",
-    "no-archived-lists": "No archived lists.",
+    "no-archived-cards": "No hay tarjetas archivadas.",
+    "no-archived-lists": "No hay listas archivadas.",
     "no-results": "Sin resultados",
     "normal": "Normal",
     "normal-desc": "Puedes ver y editar fichas. No puedes cambiar la configuración.",
     "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Recibir actualizaciones de cualquier tarjeta en la que participas como creador o miembro",
+    "notify-watch": "Recibir actuaizaciones de cualquier tablero, lista o tarjeta que estés vigilando",
     "optional": "opcional",
-    "or": "or",
+    "or": "o",
     "page-maybe-private": "Esta página puede ser privada. Puedes verla por <a href='%s'>logging in</a>.",
     "page-not-found": "Página no encontrada.",
     "password": "Clave",
     "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
-    "preview": "Preview",
-    "previewAttachedImagePopup-title": "Preview",
-    "previewClipboardImagePopup-title": "Preview",
+    "participating": "Participando",
+    "preview": "Previsualizar",
+    "previewAttachedImagePopup-title": "Previsualizar",
+    "previewClipboardImagePopup-title": "Previsualizar",
     "private": "Privado",
     "private-desc": "Este tablero es privado. Sólo las personas añadidas al tablero pueden verlo y editarlo.",
     "profile": "Perfil",
@@ -221,43 +270,55 @@
     "public-desc": "Este tablero es público. Es visible para cualquier persona con el enlace y se mostrará en los motores de búsqueda como Google. Sólo personas añadidas al tablero pueden editarlo.",
     "quick-access-description": "Star a board to add a shortcut in this bar.",
     "remove-cover": "Eliminar cubierta",
-    "remove-from-board": "Remove from Board",
-    "remove-label": "Remove the label",
+    "remove-from-board": "Borrar del Tablero",
+    "remove-label": "Borrar la etiqueta",
+    "remove-list": "Remove the list",
     "remove-member": "Eliminar Miembro",
     "remove-member-from-card": "Eliminar de la Ficha",
     "remove-member-pop": "Eliminar __nombre__ (__usuario__) de __Título del tablero__? El miembro será eliminado de todas las tarjetas de este tablero. Ellos recibirán una notificación.",
     "removeMemberPopup-title": "¿Eliminar miembro?",
     "rename": "Renombrar",
     "rename-board": "Renombrar tablero",
-    "restore": "Restore",
+    "restore": "Restaurar",
     "save": "Guardar",
     "search": "Buscar",
     "select-color": "Selecciona un color",
-    "shortcut-assign-self": "Assign yourself to current card",
-    "shortcut-autocomplete-emoji": "Autocomplete emoji",
-    "shortcut-autocomplete-members": "Autocomplete members",
-    "shortcut-clear-filters": "Clear all filters",
-    "shortcut-close-dialog": "Close Dialog",
-    "shortcut-filter-my-cards": "Filter my cards",
+    "shortcut-assign-self": "Asignarte a ti mismo a la tarjeta actual",
+    "shortcut-autocomplete-emoji": "Autocompletar emoji",
+    "shortcut-autocomplete-members": "Autocompletar miembros",
+    "shortcut-clear-filters": "Limpiar todos los filtros",
+    "shortcut-close-dialog": "Cerrar Diálogo",
+    "shortcut-filter-my-cards": "Filtrar mis tarjetas",
     "shortcut-show-shortcuts": "Bring up this shortcuts list",
     "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
     "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Mostrar recuento de tarjetas si la lista contiene más de",
     "signupPopup-title": "Crear una Cuenta",
     "star-board-title": "Haz clic para destacar este tablero. Se mostrará en la parte superior de tu lista de tableros.",
     "starred-boards": "Tableros Destacados",
     "starred-boards-description": "Los tableros destacados se mostrarán en la parte superior de tu lista de tableros.",
-    "subscribe": "Suscribe",
+    "subscribe": "Suscribirse",
     "team": "Equipo",
     "this-board": "este tablero",
     "this-card": "esta ficha",
+    "time": "Hora",
     "title": "Título",
-    "unassign-member": "Unassign member",
-    "unsaved-description": "You have an unsaved description.",
-    "upload": "Upload",
-    "upload-avatar": "Upload an avatar",
-    "uploaded-avatar": "Uploaded an avatar",
+    "tracking": "Seguimiento",
+    "tracking-info": "Serás notificado de cualquier cambio en las tarjetas que estás envuelto como creador o miembro.",
+    "unassign-member": "Desasignar miembro",
+    "unsaved-description": "Tienes unas descripción no guardada.",
+    "unwatch": "Dejar de vigilar",
+    "upload": "Cargar",
+    "upload-avatar": "Cargar un avatar",
+    "uploaded-avatar": "Avatar cargado",
     "username": "Nombre de Usuario",
-    "view-it": "View it",
+    "view-it": "Verlo",
     "warn-list-archived": "warning: this card is in an archived list",
+    "watch": "Vigilar",
+    "watching": "Vigilando",
+    "watching-info": "Serás notificado de cualquier cambio en este tablero",
+    "welcome-board": "Tablero de Bienvenida",
+    "welcome-list1": "Basicos",
+    "welcome-list2": "Avanzados",
     "what-to-do": "What do you want to do?"
-}
+}

+ 324 - 0
i18n/fa.i18n.json

@@ -0,0 +1,324 @@
+{
+    "accept": "تایید",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
+    "actions": "اعمال",
+    "activities": "فعالیت ها",
+    "activity": "فعالیت",
+    "activity-added": "%s به %s اضافه شد",
+    "activity-archived": "%s بایگانی شد",
+    "activity-attached": "%s به %s پیوست شد",
+    "activity-created": "%s ایجاد شد",
+    "activity-excluded": "%s  از %s مستثنی گردید",
+    "activity-imported": "%s از %s وارد %s شد",
+    "activity-imported-board": "%s از %s وارد شد",
+    "activity-joined": "اتصال به %s",
+    "activity-moved": "%s از %s به %s منتقل شد",
+    "activity-on": "%s",
+    "activity-removed": "%s از %s حذف شد",
+    "activity-sent": "ارسال %s به %s",
+    "activity-unjoined": "جداسازی %s",
+    "activity-checklist-added": "added checklist to %s",
+    "add": "افزودن",
+    "add-attachment": "افزودن ضمیمه",
+    "add-board": "افزودن برد جدید",
+    "add-card": "افزودن کارت",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
+    "add-cover": "افزودن کاور",
+    "add-label": "افزودن برچسب",
+    "add-list": "افزودن لیست",
+    "add-members": "افزودن اعضا",
+    "added": "اضافه گردید",
+    "addMemberPopup-title": "اعضا",
+    "admin": "مدیر",
+    "admin-desc": "امکان دیدن و ویرایش کارتها،پاک کردن کاربران و تغییر تنظیمات برای تخته",
+    "all-boards": "تمام بردها",
+    "and-n-other-card": "و __count__ کارت دیگر",
+    "and-n-other-card_plural": "و __count__ کارت دیگر",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
+    "archive": "آرشیو",
+    "archive-all": "تمامی آرشیوها",
+    "archive-board": "بایگانی برد",
+    "archive-card": "بایگانی کارت",
+    "archive-list": "بایگانی این لیست",
+    "archive-selection": "بایگانی موارد انتخاب شده ها",
+    "archiveBoardPopup-title": "آیا می خواهید بایگانی شود؟",
+    "archived-items": "آیتم های بایگانی شده",
+    "archives": "آرشیوها",
+    "assign-member": "تعیین عضو",
+    "attached": "وابسته",
+    "attachment": "ضمائم",
+    "attachment-delete-pop": "حذف پیوست دایمی خواهد بود، بدون بازگشت",
+    "attachmentDeletePopup-title": "آیا می خواهید ضمیمه را حذف کنید؟",
+    "attachments": "ضمائم",
+    "auto-watch": "Automatically watch boards when create it",
+    "avatar-too-big": "حجم تصویر انتخاب شده بیشتر از حد مجاز است .(حد مجاز 70Kb)",
+    "back": "بازگشت",
+    "board-change-color": "تغییر رنگ",
+    "board-nb-stars": "%s ستاره",
+    "board-not-found": "برد مورد نظر پیدا نشد",
+    "board-private-info": "این برد <strong>خصوصی</strong> خواهد بود.",
+    "board-public-info": "این برد <strong>عمومی</strong> خواهد بود.",
+    "boardChangeColorPopup-title": "تغییر پس زمینه برد",
+    "boardChangeTitlePopup-title": "تغییر نام برد",
+    "boardChangeVisibilityPopup-title": "تغغیر وضعیت نمایش",
+    "boardChangeWatchPopup-title": "Change Watch",
+    "boardMenuPopup-title": "منوی برد",
+    "boards": "بردها",
+    "bucket-example": "مانند \"لیست سبدها\" برای مثال",
+    "cancel": "انصراف",
+    "card-archived": "این کارت بایگانی شده است.",
+    "card-comments-title": "این کارت دارای %s نظر می باشد.",
+    "card-delete-notice": "پاک کردن بطور کامل. شما تمامی اقدامات مربوطه را از دست خواهید داد.",
+    "card-delete-pop": "همه اقدامات ازاین پردازه (خوراک) حذف خواهد شد و امکان بازگشا کردن کارت وجود نخواهد داشت. هیچ امکان بازگشتی!",
+    "card-delete-suggest-archive": "شما می توانید یک کارت را بایگانی کرده با  حفظ فعالیت های آن.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
+    "card-edit-attachments": "ویرایش ضمائم",
+    "card-edit-labels": "ویرایش برچسب",
+    "card-edit-members": "ویرایش اعضا",
+    "card-labels-title": "تغییر برچسب کارت",
+    "card-members-title": "افزودن یا حذف اعضا از کارت.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
+    "cardAttachmentsPopup-title": "ضمیمه از",
+    "cardDeletePopup-title": "آیا می خواهید کارت را حذف کنید؟",
+    "cardDetailsActionsPopup-title": "اعمال کارت",
+    "cardLabelsPopup-title": "برچسب ها",
+    "cardMembersPopup-title": "اعضا",
+    "cardMorePopup-title": "بیشتر",
+    "cards": "کارت ها",
+    "change": "تغییر",
+    "change-avatar": "تغییر آواتار",
+    "change-password": "تغییر کلمه عبور",
+    "change-permissions": "تغییر دسترسی ها",
+    "change-settings": "Change Settings",
+    "changeAvatarPopup-title": "تغییر آواتار",
+    "changeLanguagePopup-title": "تغییر زبان",
+    "changePasswordPopup-title": "تغییر کلمه عبور",
+    "changePermissionsPopup-title": "تغییر دسترسی ها",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
+    "click-to-star": "جهت افزودن ستاره کلیک کنید .",
+    "click-to-unstar": "جهت کاهش ستاره کلیک کنید.",
+    "clipboard": "ذخیره در حافظه ویا بکش-رهاکن",
+    "close": "بستن",
+    "close-board": "بستن برد",
+    "close-board-pop": "شما می توانید با کلیک بر دکمه \"بایگانی\" از قسمت بالای خانه، تخته را بازگذاری نمایید.",
+    "color-black": "مشکی",
+    "color-blue": "آبی",
+    "color-green": "سبز",
+    "color-lime": "لیمویی",
+    "color-orange": "نارنجی",
+    "color-pink": "صورتی",
+    "color-purple": "بنفش",
+    "color-red": "قرمز",
+    "color-sky": "آبی آسمانی",
+    "color-yellow": "زرد",
+    "comment": "نظر",
+    "comment-placeholder": "ثبت یک نظر",
+    "computer": "کامپیوتر",
+    "create": "ایجاد",
+    "createBoardPopup-title": "ایجاد برد",
+    "createLabelPopup-title": "ایجاد برچسب",
+    "current": "جاری",
+    "date": "Date",
+    "decline": "رد",
+    "default-avatar": "آواتار پیش فرض",
+    "delete": "حذف",
+    "deleteLabelPopup-title": "آیا می خواهید برچسب را حذف کنید؟",
+    "description": "توضیحات",
+    "disambiguateMultiLabelPopup-title": "عمل ابهام زدایی از برچسب",
+    "disambiguateMultiMemberPopup-title": "عمل ابهام زدایی از کاربر",
+    "discard": "انصراف",
+    "done": "پایان",
+    "download": "دریافت",
+    "edit": "ویرایش",
+    "edit-avatar": "تغییر آواتار",
+    "edit-profile": "ویرایش پروفایل",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
+    "editLabelPopup-title": "تغغیر برچسب",
+    "editNotificationPopup-title": "Edit Notification",
+    "editProfilePopup-title": "ویرایش پروفایل",
+    "email": "ایمیل",
+    "email-enrollAccount-subject": "یک حساب کاربری برای شما در __siteName__ ایجاد شد",
+    "email-enrollAccount-text": "سلام __user__ \nبرای شروع به استفاده از این سرویس برروی کلیک روی لینک زیر کلیک نمایید،با تشکر \n__url__.",
+    "email-fail": "عدم موفقیت در ارسال نامه الکترونیکی",
+    "email-invalid": "پست الکترونیکی نادرست",
+    "email-invite": "دعوت از طریق نامه الکترونیکی",
+    "email-invite-subject": "__inviter__ برای شما دعوت نامه ارسال کرده است",
+    "email-invite-text": "__User__ عزیز\n __inviter__ شما را به عضویت تخته  \"__board__\" برای همکاری دعوت کرده است.\nلطفا لینک زیر را دنبال کنید، باتشکر:\n__url__",
+    "email-resetPassword-subject": "تنظیم مجدد کلمه عبور در __siteName__",
+    "email-resetPassword-text": "سلام __user__\nجهت تنظیم مجدد کلمه عبور لینک زیر را دنبال نمایید، باتشکر:\n__url__",
+    "email-sent": "نامه الکترونیکی فرستاده شد",
+    "email-verifyEmail-subject": "تایید آدرس الکترونیکی شما در __siteName__",
+    "email-verifyEmail-text": "سلام __user__\nبه منظور تایید آدرس الکترونیکی حساب خود، لینک زیر را دنبال نمایید، باتشکر:\n__url__.",
+    "error-board-doesNotExist": "تخته مورد نظر وجود ندارد",
+    "error-board-notAdmin": "شما جهت انجام آن باید مدیر تخته باشید",
+    "error-board-notAMember": "شما انجام آن ،باید عضو این تخته باشید.",
+    "error-json-malformed": "متن درغالب صحیح Json نمی باشد.",
+    "error-json-schema": "داده های Json شما، شامل اطلاعات صحیح در غالب درستی نمی باشد.",
+    "error-list-doesNotExist": "این لیست موجود نیست",
+    "error-user-doesNotExist": "این کاربر وجود ندارد",
+    "error-user-notAllowSelf": "این اقدامبروی خود، مجاز نمی باشد",
+    "error-user-notCreated": "این کاربر ایجاد نشده است",
+    "error-username-taken": "This username is already taken",
+    "export-board": "انتقال به بیرون تخته",
+    "filter": "فیلتر",
+    "filter-cards": "صافی کارتها",
+    "filter-clear": "حذف فیلتر",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
+    "filter-on": "صافی روشن است",
+    "filter-on-desc": "شما صافی برای کارتهای تخته را روشن کرده اید. جهت ویرایش کلیک نمایید.",
+    "filter-to-selection": "صافی برای موارد انتخابی",
+    "fullname": "نام و نام خانوادگی",
+    "header-logo-title": "بازگشت به صفحه تخته.",
+    "hide-system-messages": "Hide system messages",
+    "home": "خانه",
+    "import": "وارد کردن",
+    "import-board": "وارد کردن از ترلو",
+    "import-board-title": "Import board from Trello",
+    "import-board-trello-instruction": "در Trello-ی خود  به 'Menu'، 'More'، 'Print'، 'Export to JSON رفته و متن نهایی را دراینجا وارد نمایید.",
+    "import-json-placeholder": "اطلاعات Json معتبر خود را اینجا وارد کنید.",
+    "import-map-members": "Map members",
+    "import-members-map": "تخته خود وارد شده دارای برخی از اعضا می باشد. لطفا کاربرانی که باید وارد نرم افزار بشوند را مشخص کنید.",
+    "import-show-user-mapping": "بررسی نقشه کاربران",
+    "import-user-select": "کاربری از نرم افزار را که می خواهید بعنوان این عضو جایگزین شود را انتخاب کنید.",
+    "importMapMembersAddPopup-title": "Select Wekan member",
+    "info": "اطلاعات",
+    "initials": "تخصیصات اولیه",
+    "invalid-date": "Invalid date",
+    "joined": "متصل",
+    "just-invited": "هم اکنون، شما به این تخته دعوت شده اید.",
+    "keyboard-shortcuts": "میانبر کلیدها",
+    "label-create": "ایجاد برچسب جدید",
+    "label-default": "%s برچسب(پیش فرض)",
+    "label-delete-pop": "بدون برگشت. این حذفبرچسب را از هر کارت پاک خواهد کردو تاریخچه آن را نیز ازبین می برد.",
+    "labels": "برچسب ها",
+    "language": "زبان",
+    "last-admin-desc": "شما نمی توانید نقش را تغییر دهید چراکه باید حداقل یک مدیری وجود داشته باشد.",
+    "leave-board": "خروج از برد",
+    "link-card": "ارجاع به این کارت",
+    "list-archive-cards": "بایگانی تمامی کارتهای این لیست",
+    "list-archive-cards-pop": "این همه کارت ها در این لیست از تخته راحذف خواهد کرد. جهت مشاهده کارت های بایگانی و بازگرداندن آنها ، \"Menu\",\"Archived Item\" را کلیک کنید.",
+    "list-move-cards": "انتقال تمام کارت ها در این لیست",
+    "list-select-cards": "انتخاب تمام کارت ها در این لیست",
+    "listActionPopup-title": "لیست اقدامات",
+    "listImportCardPopup-title": "وارد کردن کارت Trello",
+    "lists": "لیست ها",
+    "log-out": "خروج",
+    "log-in": "ورود",
+    "loginPopup-title": "ورود",
+    "memberMenuPopup-title": "تنظیمات اعضا",
+    "members": "اعضا",
+    "menu": "منو",
+    "move-selection": "حرکت مورد انتخاب شده",
+    "moveCardPopup-title": "حرکت کارت",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
+    "moveSelectionPopup-title": "حرکت مورد انتخاب شده",
+    "multi-selection": "چند انتخابی",
+    "multi-selection-on": "چند انتخابی روشن است",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
+    "my-boards": "بردهای من",
+    "name": "نام",
+    "no-archived-cards": "کارتی در بایگانی نیست",
+    "no-archived-lists": "لیستی در بایگانی نیست",
+    "no-results": "نتیجه ای ندارد",
+    "normal": "عادی",
+    "normal-desc": "امکان نمایش و تنظیم کارت بدون امکان تغییر تنظیمات",
+    "not-accepted-yet": "دعوت هنوز پذیرفته نشده است",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+    "optional": "انتخابی",
+    "or": "یا",
+    "page-maybe-private": "این صفحه ممکن است خصوصی باشد.شما با<a href='%s'>ورود</a> می توانید آنرا ملاحظه نمایید.",
+    "page-not-found": "صفحه پیدا نشد.",
+    "password": "کلمه عبور",
+    "paste-or-dragdrop": "جهت چسباندن، یا کشیدن-رهاسازی فایل تصویر به آن (تصویر)",
+    "participating": "Participating",
+    "preview": "نمایش",
+    "previewAttachedImagePopup-title": "نمایش",
+    "previewClipboardImagePopup-title": "نمایش",
+    "private": "خصوصی",
+    "private-desc": "این تخته خصوصی است. فقط تنها افراد اضافه شده به آن  می توانند مشاهده و ویرایش کنند.",
+    "profile": "پروفایل",
+    "public": "عمومی",
+    "public-desc": "این تخته عمومی است. برای هر کسی با لینک ویا جستجو درموتورها مانند گوگل قابل مشاهده است . فقط افرادی که به آن اضافه شده اند  امکان ویرایش دارند.",
+    "quick-access-description": "جهت افزودن یک تخته به اینجا،آنرا ستاره دار نمایید.",
+    "remove-cover": "حذف کاور",
+    "remove-from-board": "حذف از برد",
+    "remove-label": "حذف برچسب",
+    "remove-list": "Remove the list",
+    "remove-member": "حذف عضو",
+    "remove-member-from-card": "حذف از کارت",
+    "remove-member-pop": "آیا می خواهید __Name__ (__username__) را از __boardTitle__ حذف کنید? کاربر از تمام کارت ها در این تخته حذف خواهد شد و به آنها اطلاع رسانی خواهد شد.",
+    "removeMemberPopup-title": "آیا می خواهید کاربر را حذف کنید؟",
+    "rename": "تغغیر نام",
+    "rename-board": "تغییر نام برد",
+    "restore": "بازیابی",
+    "save": "ذخیره",
+    "search": "جستجو",
+    "select-color": "انتخاب رنگ",
+    "shortcut-assign-self": "اختصاص خود به کارت فعلی",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
+    "shortcut-autocomplete-members": "تکمیل خودکار کاربرها",
+    "shortcut-clear-filters": "حذف تمامی فیلترها",
+    "shortcut-close-dialog": "بستن دیالوگ",
+    "shortcut-filter-my-cards": "کارت های من",
+    "shortcut-show-shortcuts": "بالا آوردن میانبر این لیست",
+    "shortcut-toggle-filterbar": "ضامن نوار صافی",
+    "shortcut-toggle-sidebar": "ضامن نوار تخته",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
+    "signupPopup-title": "ایجاد یک اکانت",
+    "star-board-title": "جهت ستاره دار کردن تخته کلیک نمایی.این در بالای لیست تخته های شما نمایش داده خواهد شد.",
+    "starred-boards": "تخته های ستاره دار",
+    "starred-boards-description": "تخته های ستاره دار در بالای لیست تخته ها نمایش داده می شود.",
+    "subscribe": "عضوشدن",
+    "team": "تیم",
+    "this-board": "این برد",
+    "this-card": "این کارت",
+    "time": "Time",
+    "title": "عنوان",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "unassign-member": "عدم انتصاب کاربر",
+    "unsaved-description": "شما توضیحات ذخیره نشده دارید.",
+    "unwatch": "Unwatch",
+    "upload": "ارسال",
+    "upload-avatar": "ارسال یک آواتار",
+    "uploaded-avatar": "آواتار ارسال شد",
+    "username": "نام کاربری",
+    "view-it": "مشاهده",
+    "warn-list-archived": "هشدار: این کارت در یک لیست بایگانی شده است",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
+    "what-to-do": "چه کاری می خواهید انجام دهید؟"
+}

+ 316 - 255
i18n/fi.i18n.json

@@ -1,263 +1,324 @@
 {
-    "accept": "Hyväksy",
-    "actions": "Toimet",
-    "activities": "Toimet",
-    "activity": "Toiminta",
-    "activity-added": "lisätty %s kohteeseen %s",
-    "activity-archived": "arkistoitu %s",
-    "activity-attached": "liitetty %s kohteeseen %s",
-    "activity-created": "luotu %s",
-    "activity-excluded": "poistettu %s kohteesta %s",
-    "activity-imported": "tuotu %s kohteeseen %s lähteestä %s",
-    "activity-imported-board": "tuotu %s lähteestä %s",
-    "activity-joined": "liitytty kohteeseen %s",
-    "activity-moved": "siirretty %s kohteesta %s kohteeseen %s",
-    "activity-on": "kohteessa %s",
-    "activity-removed": "poistettu %s kohteesta %s",
-    "activity-sent": "lähetetty %s kohteeseen %s",
-    "activity-unjoined": "peruttu %s liityminen",
-    "add": "Lisää",
-    "add-attachment": "Lisää liitetiedosto",
-    "add-board": "Lisää uusi taulu",
-    "add-card": "Lisää kortti",
-    "add-cover": "Lisää kansi",
-    "add-label": "Lisää tunniste",
-    "add-list": "Lisää lista",
-    "add-members": "Lisää jäseniä",
-    "added": "Lisätty",
-    "addMemberPopup-title": "Jäsenet",
-    "admin": "Ylläpitäjä",
-    "admin-desc": "Voi nähfä ja muokata kortteja, poistaa jäseniä, ja muuttaa taulun asetuksia.",
-    "all-boards": "Kaikki taulut",
-    "and-n-other-card": "Ja __count__ muu kortti",
-    "and-n-other-card_plural": "Ja __count__ muuta korttia",
-    "archive": "Arkistoi",
-    "archive-all": "Arkistoi kaikki",
-    "archive-board": "Arkistoi taulu",
-    "archive-card": "Arkistoi kortti",
-    "archive-list": "Arkistoi tämä lista",
-    "archive-selection": "Arkistoi valinta",
-    "archiveBoardPopup-title": "Arkistoi taulu?",
-    "archived-items": "Arkistoidut kohteet",
-    "archives": "Arkistot",
-    "assign-member": "Valitse jäsen",
-    "attached": "liitetty",
-    "attachment": "Liitetiedosto",
-    "attachment-delete-pop": "Liitetiedoston poistaminen on lopullista. Tätä ei pysty peruuttamaan.",
-    "attachmentDeletePopup-title": "Poista liitetiedosto?",
-    "attachments": "Liitetiedostot",
-    "avatar-too-big": "Profiilikuva on liian suuri (70Kb maksimi)",
-    "back": "Takaisin",
-    "board-change-color": "Vaihda väri",
-    "board-nb-stars": "%s tähteä",
-    "board-not-found": "Taulua ei löytynyt",
-    "board-private-info": "Tämä taulu tulee olemaan <strong>yksityinen</strong>.",
-    "board-public-info": "Tämä taulu tulee olemaan <strong>julkinen</strong>.",
-    "boardChangeColorPopup-title": "Vaihda taulun tausta",
-    "boardChangeTitlePopup-title": "Nimeä taulu uudelleen",
-    "boardChangeVisibilityPopup-title": "Vaihda näkyvyyttä",
-    "boardImportBoardPopup-title": "Tuo taulu Trellosta",
-    "boardMenuPopup-title": "Taulu valikko",
-    "boards": "Taulut",
-    "bucket-example": "Kuten “Laatikko lista” esimerkiksi",
-    "cancel": "Peruuta",
-    "card-archived": "Tämä kortti on arkistoitu.",
-    "card-comments-title": "Tässä kortissa on %s kommenttia.",
-    "card-delete-notice": "Poistaminen on lopullista. Menetät kaikki toimet jotka on liitetty tähän korttiin.",
-    "card-delete-pop": "Kaikki toimet poistetaan toimintasyötteestä ja et tule pystymään uudelleenavaamaan korttia. Tätä ei voi peruuttaa.",
-    "card-delete-suggest-archive": "Voit arkistoida kortin poistaaksesi sen taululta ja säilyttääksesi toimet.",
-    "card-edit-attachments": "Muokkaa liitetiedostoja",
-    "card-edit-labels": "Muokkaa tunnisteita",
-    "card-edit-members": "Muokkaa jäseniä",
-    "card-labels-title": "Vaihda kortin tunnisteita.",
-    "card-members-title": "Lisää tai poista taulun jäseniä tältä kortilta.",
-    "cardAttachmentsPopup-title": "Liitä mistä",
-    "cardDeletePopup-title": "Poista kortti?",
-    "cardDetailsActionsPopup-title": "Kortti toimet",
-    "cardLabelsPopup-title": "Tunnisteet",
-    "cardMembersPopup-title": "Jäsenet",
-    "cardMorePopup-title": "Lisää",
-    "cards": "Kortit",
-    "change": "Muuta",
-    "change-avatar": "Vaihda profiilikuva",
-    "change-password": "Vaihda salasana",
-    "change-permissions": "Muuta oikeuksia",
-    "changeAvatarPopup-title": "Vaihda profiilikuva",
-    "changeLanguagePopup-title": "Vaihda kieltä",
-    "changePasswordPopup-title": "Vaihda salasana",
-    "changePermissionsPopup-title": "Vaihda oikeuksia",
-    "click-to-star": "Klikkaa merkataksesi tämä taulu tähdellä.",
-    "click-to-unstar": "Klikkaa poistaaksesi tähtimerkintä taululta.",
-    "clipboard": "Leikepöytä tai raahaa ja pudota",
-    "close": "Sulje",
-    "close-board": "Sulje taulu",
-    "close-board-pop": "Voit palauttaa taulun klikkaamalla “Arkistot” painiketta kotiotsikosta.",
-    "color-black": "musta",
-    "color-blue": "sininen",
-    "color-green": "vihreä",
+    "accept": "Accept",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
+    "actions": "Actions",
+    "activities": "Activities",
+    "activity": "Activity",
+    "activity-added": "added %s to %s",
+    "activity-archived": "archived %s",
+    "activity-attached": "attached %s to %s",
+    "activity-created": "created %s",
+    "activity-excluded": "excluded %s from %s",
+    "activity-imported": "imported %s into %s from %s",
+    "activity-imported-board": "imported %s from %s",
+    "activity-joined": "joined %s",
+    "activity-moved": "moved %s from %s to %s",
+    "activity-on": "on %s",
+    "activity-removed": "removed %s from %s",
+    "activity-sent": "sent %s to %s",
+    "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
+    "add": "Add",
+    "add-attachment": "Add an attachment",
+    "add-board": "Add a new board",
+    "add-card": "Add a card",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
+    "add-cover": "Add Cover",
+    "add-label": "Add the label",
+    "add-list": "Add a list",
+    "add-members": "Add Members",
+    "added": "Added",
+    "addMemberPopup-title": "Members",
+    "admin": "Admin",
+    "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
+    "all-boards": "All boards",
+    "and-n-other-card": "And __count__ other card",
+    "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
+    "archive": "Archive",
+    "archive-all": "Archive All",
+    "archive-board": "Archive Board",
+    "archive-card": "Archive Card",
+    "archive-list": "Archive this list",
+    "archive-selection": "Archive selection",
+    "archiveBoardPopup-title": "Archive Board?",
+    "archived-items": "Archived Items",
+    "archives": "Archives",
+    "assign-member": "Assign member",
+    "attached": "attached",
+    "attachment": "Attachment",
+    "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+    "attachmentDeletePopup-title": "Delete Attachment?",
+    "attachments": "Attachments",
+    "auto-watch": "Automatically watch boards when create it",
+    "avatar-too-big": "The avatar is too large (70Kb max)",
+    "back": "Back",
+    "board-change-color": "Change color",
+    "board-nb-stars": "%s stars",
+    "board-not-found": "Board not found",
+    "board-private-info": "This board will be <strong>private</strong>.",
+    "board-public-info": "This board will be <strong>public</strong>.",
+    "boardChangeColorPopup-title": "Change Board Background",
+    "boardChangeTitlePopup-title": "Rename Board",
+    "boardChangeVisibilityPopup-title": "Change Visibility",
+    "boardChangeWatchPopup-title": "Change Watch",
+    "boardMenuPopup-title": "Board Menu",
+    "boards": "Boards",
+    "bucket-example": "Like “Bucket List” for example",
+    "cancel": "Cancel",
+    "card-archived": "This card is archived.",
+    "card-comments-title": "This card has %s comment.",
+    "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
+    "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
+    "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
+    "card-edit-attachments": "Edit attachments",
+    "card-edit-labels": "Edit labels",
+    "card-edit-members": "Edit members",
+    "card-labels-title": "Change the labels for the card.",
+    "card-members-title": "Add or remove members of the board from the card.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
+    "cardAttachmentsPopup-title": "Attach From",
+    "cardDeletePopup-title": "Delete Card?",
+    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardLabelsPopup-title": "Labels",
+    "cardMembersPopup-title": "Members",
+    "cardMorePopup-title": "More",
+    "cards": "Cards",
+    "change": "Change",
+    "change-avatar": "Change Avatar",
+    "change-password": "Change Password",
+    "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
+    "changeAvatarPopup-title": "Change Avatar",
+    "changeLanguagePopup-title": "Change Language",
+    "changePasswordPopup-title": "Change Password",
+    "changePermissionsPopup-title": "Change Permissions",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
+    "click-to-star": "Click to star this board.",
+    "click-to-unstar": "Click to unstar this board.",
+    "clipboard": "Clipboard or drag & drop",
+    "close": "Close",
+    "close-board": "Close Board",
+    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
+    "color-black": "black",
+    "color-blue": "blue",
+    "color-green": "green",
     "color-lime": "lime",
-    "color-orange": "oranssi",
-    "color-pink": "vaaleanpunainen",
-    "color-purple": "violetti",
-    "color-red": "punainen",
-    "color-sky": "taivas",
-    "color-yellow": "keltainen",
-    "comment": "Kommentti",
-    "comment-placeholder": "Kirjoita kommentti",
-    "computer": "Tietokone",
-    "create": "Luo",
-    "createBoardPopup-title": "Luo taulu",
-    "createLabelPopup-title": "Luo tunniste",
-    "current": "nykyinen",
-    "decline": "Kieltäydy",
-    "default-avatar": "Oletus profiilikuva",
-    "delete": "Poista",
-    "deleteLabelPopup-title": "Poista tunniste?",
-    "description": "Kuvaus",
-    "disambiguateMultiLabelPopup-title": "Yksikäsitteistä tunniste toiminta",
-    "disambiguateMultiMemberPopup-title": "Yksikäsitteistä jäsen toiminta",
-    "discard": "Hylkää",
-    "done": "Valmis",
-    "download": "Lataa",
-    "edit": "Muokkaa",
-    "edit-avatar": "Vaihda profiilikuva",
-    "edit-profile": "Muokkaa profiilia",
-    "editLabelPopup-title": "Vaihda tunniste",
-    "editProfilePopup-title": "Muokkaa profiilia",
-    "email": "Sähköposti",
+    "color-orange": "orange",
+    "color-pink": "pink",
+    "color-purple": "purple",
+    "color-red": "red",
+    "color-sky": "sky",
+    "color-yellow": "yellow",
+    "comment": "Comment",
+    "comment-placeholder": "Write a comment",
+    "computer": "Computer",
+    "create": "Create",
+    "createBoardPopup-title": "Create Board",
+    "createLabelPopup-title": "Create Label",
+    "current": "current",
+    "date": "Date",
+    "decline": "Decline",
+    "default-avatar": "Default avatar",
+    "delete": "Delete",
+    "deleteLabelPopup-title": "Delete Label?",
+    "description": "Description",
+    "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+    "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+    "discard": "Discard",
+    "done": "Done",
+    "download": "Download",
+    "edit": "Edit",
+    "edit-avatar": "Change Avatar",
+    "edit-profile": "Edit Profile",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
+    "editLabelPopup-title": "Change Label",
+    "editNotificationPopup-title": "Edit Notification",
+    "editProfilePopup-title": "Edit Profile",
+    "email": "Email",
     "email-enrollAccount-subject": "An account created for you on __siteName__",
-    "email-enrollAccount-text": "Hei __user__,\n\nAlkaaksesi käyttämään palvelua, klikkaa allaolevaa linkkiä.\n\n__url__\n\nKiitos.",
-    "email-fail": "Sähköpostin lähettäminen epäonnistui",
-    "email-invalid": "Virheellinen sähköposti",
-    "email-invite": "Kutsu sähköpostilla",
-    "email-invite-subject": "__inviter__ lähetti sinulle kutsun",
-    "email-invite-text": "Hyvä __user__,\n\n__inviter__ kutsuu sinut liittymään taululle \"__board__\" yhteistyötä varten.\n\nOle hyvä ja seuraa allaolevaa linkkiä:\n\n__url__\n\nKiitos.",
+    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-fail": "Sending email failed",
+    "email-invalid": "Invalid email",
+    "email-invite": "Invite via Email",
+    "email-invite-subject": "__inviter__ sent you an invitation",
+    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
     "email-resetPassword-subject": "Reset your password on __siteName__",
-    "email-resetPassword-text": "Hei __user__,\n\nNollataksesi salasanasi, klikkaa allaolevaa linkkiä.\n\n__url__\n\nKiitos.",
-    "email-sent": "Sähköposti lähetetty",
+    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-sent": "Email sent",
     "email-verifyEmail-subject": "Verify your email address on __siteName__",
-    "email-verifyEmail-text": "Hei __user__,\n\nvahvistaaksesi sähköpostiosoitteesi, klikkaa allaolevaa linkkiä.\n\n__url__\n\nKiitos.",
-    "error-board-doesNotExist": "Tämä taulu ei ole olemassa",
-    "error-board-notAdmin": "Tehdäksesi tämän sinun täytyy olla tämän taulun ylläpitäjä",
-    "error-board-notAMember": "Tehdäksesi tämän sinun täytyy olla tämän taulun jäsen",
-    "error-json-malformed": "Tekstisi ei ole kelvollisessa JSON muodossa",
-    "error-json-schema": "JSON tietosi ei sisällä oikeaa tietoa oikeassa muodossa",
-    "error-list-doesNotExist": "Tätä listaa ei ole olemassa",
-    "error-user-doesNotExist": "Tätä käyttäjää ei ole olemassa",
-    "error-user-notAllowSelf": "Tämä toiminto itseäsi kohtaan ei ole sallittu",
-    "error-user-notCreated": "Tätä käyttäjää ei ole luotu",
+    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
+    "error-board-doesNotExist": "This board does not exist",
+    "error-board-notAdmin": "You need to be admin of this board to do that",
+    "error-board-notAMember": "You need to be a member of this board to do that",
+    "error-json-malformed": "Your text is not valid JSON",
+    "error-json-schema": "Your JSON data does not include the proper information in the correct format",
+    "error-list-doesNotExist": "This list does not exist",
+    "error-user-doesNotExist": "This user does not exist",
+    "error-user-notAllowSelf": "This action on self is not allowed",
+    "error-user-notCreated": "This user is not created",
+    "error-username-taken": "This username is already taken",
     "export-board": "Export board",
-    "filter": "Suodata",
-    "filter-cards": "Suodata kortit",
-    "filter-clear": "Poista suodatin",
-    "filter-on": "Suodatus on päällä",
-    "filter-on-desc": "Suodatat kortteja tällä taululla. Klikkaa tästä muokataksesi suodatinta.",
-    "filter-to-selection": "Suodata valintaan",
-    "fullname": "Koko nimi",
-    "header-logo-title": "Palaa taulut sivullesi.",
-    "home": "Koti",
-    "import": "Tuo",
-    "import-board": "tuo Trellosta",
-    "import-board-trello-instruction": "Trello taulullasi, mene 'Menu', sitten 'More', 'Print and Export', 'Export JSON', ja kopioi tuloksena saamasi teksti",
-    "import-card": "Tuo Trello kortti",
-    "import-card-trello-instruction": "Mene Trello kortille, valitse 'Share and more...' sitten 'Export JSON' ja kopioi tuloksena saamasi teksti",
-    "import-json-placeholder": "Liitä kelvollinen JSON tietosi tähän",
-    "import-members-map": "Tuomallasi taululla on muutamia jäseniä. Ole hyvä ja valitse tuomiasi jäseniä vastaavat  Wekan käyttäjät",
-    "import-show-user-mapping": "Tarkasta vastaavat jäsenet",
-    "import-user-select": "Valitse Wekan käyttäjä jota haluat käyttää tänä käyttäjänä",
-    "info": "Tietoja",
-    "initials": "Nimikirjaimet",
-    "joined": "liittyi",
-    "just-invited": "Sinut on juuri kutsuttu tälle taululle",
-    "keyboard-shortcuts": "Pikanäppäimet",
-    "label-create": "Luo uusi tunniste",
-    "label-default": "%s tunniste (oletus)",
-    "label-delete-pop": "Tätä ei voi peruuttaa. Tämä poistaa tämän tunnisteen kaikista korteista ja tuhoaa sen historian.",
-    "labels": "Tunnisteet",
-    "language": "Kieli",
-    "last-admin-desc": "Et voi vaihtaa rooleja koska täytyy olla olemassa ainakin yksi ylläpitäjä.",
-    "leave-board": "Jää pois taululta",
-    "link-card": "Linkki tähän korttiin",
-    "list-archive-cards": "Arkistoi kaikki kortit tässä listassa",
-    "list-archive-cards-pop": "Tämä poistaa kaikki tämän listan kortit tältä taululta. Nähdäksesi arkistoidut kortit ja tuodaksesi ne takaisin taululle, klikkaa “Valikko” > “Arkistoidut kohteet”.",
-    "list-move-cards": "Siirrä kaikki kortit tässä listassa",
-    "list-select-cards": "Valitse kaikki kortit tässä listassa",
-    "listActionPopup-title": "Listaa toimet",
-    "listImportCardPopup-title": "Tuo Trello kortti",
-    "lists": "Listat",
-    "log-out": "Kirjaudu ulos",
-    "loginPopup-title": "Kirjaudu sisään",
-    "mapMembersAddPopup-title": "Valitse Wekan käyttäjä",
-    "mapMembersPopup-title": "Vastaavat jäsenet",
-    "memberMenuPopup-title": "Jäsen asetukset",
-    "members": "Jäsenet",
-    "menu": "Valikko",
+    "filter": "Filter",
+    "filter-cards": "Filter Cards",
+    "filter-clear": "Clear filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
+    "filter-on": "Filter is on",
+    "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+    "filter-to-selection": "Filter to selection",
+    "fullname": "Full Name",
+    "header-logo-title": "Go back to your boards page.",
+    "hide-system-messages": "Hide system messages",
+    "home": "Home",
+    "import": "Import",
+    "import-board": "import from Trello",
+    "import-board-title": "Import board from Trello",
+    "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
+    "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Map members",
+    "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
+    "import-show-user-mapping": "Review members mapping",
+    "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
+    "info": "Infos",
+    "initials": "Initials",
+    "invalid-date": "Invalid date",
+    "joined": "joined",
+    "just-invited": "You are just invited to this board",
+    "keyboard-shortcuts": "Keyboard shortcuts",
+    "label-create": "Create a new label",
+    "label-default": "%s label (default)",
+    "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
+    "labels": "Labels",
+    "language": "Language",
+    "last-admin-desc": "You can’t change roles because there must be at least one admin.",
+    "leave-board": "Leave Board",
+    "link-card": "Link to this card",
+    "list-archive-cards": "Archive all cards in this list",
+    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
+    "list-move-cards": "Move all cards in this list",
+    "list-select-cards": "Select all cards in this list",
+    "listActionPopup-title": "List Actions",
+    "listImportCardPopup-title": "Import a Trello card",
+    "lists": "Lists",
+    "log-out": "Log Out",
+    "log-in": "Log In",
+    "loginPopup-title": "Log In",
+    "memberMenuPopup-title": "Member Settings",
+    "members": "Members",
+    "menu": "Menu",
     "move-selection": "Move selection",
-    "moveCardPopup-title": "Siirrä kortti",
+    "moveCardPopup-title": "Move Card",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
     "moveSelectionPopup-title": "Move selection",
-    "multi-selection": "Monivalinta",
-    "multi-selection-on": "Monivalinta on päällä",
-    "my-boards": "Tauluni",
-    "name": "Nimi",
-    "no-archived-cards": "Ei arkistoituja kortteja.",
-    "no-archived-lists": "Ei arkistoituja listoja.",
-    "no-results": "Ei tuloksia",
-    "normal": "Normaali",
-    "normal-desc": "Voi nähdä ja muokata kortteja. Ei voi muokata asetuksia.",
-    "not-accepted-yet": "Kutsua ei ole hyväksytty vielä",
-    "optional": "valinnainen",
-    "or": "tai",
-    "page-maybe-private": "Tämä sivu voi olla yksityinen. Voit ehkä pystyä näkemään sen <a href='%s'>kirjautumalla sisään</a>.",
-    "page-not-found": "Sivua ei löytynyt.",
-    "password": "Salasana",
-    "paste-or-dragdrop": "liittääksesi, tai vedä & pudota kuvatiedosto siihen (vain kuva)",
-    "preview": "Esikatsele",
-    "previewAttachedImagePopup-title": "Esikatsele",
-    "previewClipboardImagePopup-title": "Esikatsele",
-    "private": "Yksityinen",
-    "private-desc": "Tämä taulu on yksityinen. Vain taululle lisätyt henkilöt voivat nähdä ja muokata sitä.",
-    "profile": "Profiili",
-    "public": "Julkinen",
-    "public-desc": "Tämä taulu on julkinen. Se näkyy kenelle tahansa jolla on linkki ja näkyy myös hakukoneissa kuten Google. Vain taululle lisätyt henkilöt voivat muokata sitä.",
-    "quick-access-description": "Merkkaa taulu tähdellä lisätäksesi pikavalinta tähän palkkiin.",
-    "remove-cover": "Poista kansi",
-    "remove-from-board": "Poista taululta",
-    "remove-label": "Poista tunniste",
-    "remove-member": "Poista jäsen",
-    "remove-member-from-card": "Poista kortilta",
-    "remove-member-pop": "Poista __name__ (__username__) taululta __boardTitle__? Jäsen poistetaan kaikilta taulun korteilta. Heille lähetetään ilmoitus.",
-    "removeMemberPopup-title": "Poista jäsen?",
-    "rename": "Nimeä uudelleen",
-    "rename-board": "Nimeä taulu uudelleen",
-    "restore": "Palauta",
-    "save": "Tallenna",
-    "search": "Etsi",
-    "select-color": "Valitse väri",
-    "shortcut-assign-self": "Valitse itsesi nykyiselle kortille",
-    "shortcut-autocomplete-emoji": "Automaattinen täydennys emojille",
-    "shortcut-autocomplete-members": "Automaattinen täydennys jäsenille",
-    "shortcut-clear-filters": "Poista kaikki suodattimet",
-    "shortcut-close-dialog": "Sulje valintaikkuna",
-    "shortcut-filter-my-cards": "Suodata korttini",
-    "shortcut-show-shortcuts": "Tuo esiin tämä pikavalinta lista",
-    "shortcut-toggle-filterbar": "Vaihda suodatus sivupalkin näkyvyys",
-    "shortcut-toggle-sidebar": "Vaihda taulu sivupalkin näkyvyys",
-    "signupPopup-title": "Luo tili",
-    "star-board-title": "Klikkaa merkataksesi taulu tähdellä. Se tulee näkymään ylimpänä taululistallasi.",
-    "starred-boards": "Tähdellä merkatut taulut",
-    "starred-boards-description": "Tähdellä merkatut taulut näkyvät ylimpänä taululistallasi.",
-    "subscribe": "Tilaa",
-    "team": "Tiimi",
-    "this-board": "tämä taulu",
-    "this-card": "tämä kortti",
-    "title": "Otsikko",
-    "unassign-member": "Peru jäsenvalinta",
-    "unsaved-description": "Sinulla on tallentamaton kuvaus.",
-    "upload": "Lähetä",
-    "upload-avatar": "Lähetä profiilikuva",
-    "uploaded-avatar": "Profiilikuva lähetetty",
-    "username": "Käyttäjänimi",
-    "view-it": "Näytä se",
-    "warn-list-archived": "varoitus: tämä kortti on arkistoitujen listalla",
-    "what-to-do": "Mitä haluat tehdä?"
-}
+    "multi-selection": "Multi-Selection",
+    "multi-selection-on": "Multi-Selection is on",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
+    "my-boards": "My Boards",
+    "name": "Name",
+    "no-archived-cards": "No archived cards.",
+    "no-archived-lists": "No archived lists.",
+    "no-results": "No results",
+    "normal": "Normal",
+    "normal-desc": "Can view and edit cards. Can't change settings.",
+    "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+    "optional": "optional",
+    "or": "or",
+    "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
+    "page-not-found": "Page not found.",
+    "password": "Password",
+    "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Participating",
+    "preview": "Preview",
+    "previewAttachedImagePopup-title": "Preview",
+    "previewClipboardImagePopup-title": "Preview",
+    "private": "Private",
+    "private-desc": "This board is private. Only people added to the board can view and edit it.",
+    "profile": "Profile",
+    "public": "Public",
+    "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
+    "quick-access-description": "Star a board to add a shortcut in this bar.",
+    "remove-cover": "Remove Cover",
+    "remove-from-board": "Remove from Board",
+    "remove-label": "Remove the label",
+    "remove-list": "Remove the list",
+    "remove-member": "Remove Member",
+    "remove-member-from-card": "Remove from Card",
+    "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
+    "removeMemberPopup-title": "Remove Member?",
+    "rename": "Rename",
+    "rename-board": "Rename Board",
+    "restore": "Restore",
+    "save": "Save",
+    "search": "Search",
+    "select-color": "Select a color",
+    "shortcut-assign-self": "Assign yourself to current card",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
+    "shortcut-autocomplete-members": "Autocomplete members",
+    "shortcut-clear-filters": "Clear all filters",
+    "shortcut-close-dialog": "Close Dialog",
+    "shortcut-filter-my-cards": "Filter my cards",
+    "shortcut-show-shortcuts": "Bring up this shortcuts list",
+    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+    "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
+    "signupPopup-title": "Create an Account",
+    "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+    "starred-boards": "Starred Boards",
+    "starred-boards-description": "Starred boards show up at the top of your boards list.",
+    "subscribe": "Subscribe",
+    "team": "Team",
+    "this-board": "this board",
+    "this-card": "this card",
+    "time": "Time",
+    "title": "Title",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "unassign-member": "Unassign member",
+    "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
+    "upload": "Upload",
+    "upload-avatar": "Upload an avatar",
+    "uploaded-avatar": "Uploaded an avatar",
+    "username": "Username",
+    "view-it": "View it",
+    "warn-list-archived": "warning: this card is in an archived list",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
+    "what-to-do": "What do you want to do?"
+}

+ 70 - 9
i18n/fr.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Accepter",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Actions",
     "activities": "Activités",
     "activity": "Activité",
@@ -16,10 +36,13 @@
     "activity-removed": "a supprimé %s vers %s",
     "activity-sent": "a envoyé %s vers %s",
     "activity-unjoined": "a quitté %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "Ajouter",
     "add-attachment": "Joindre un fichier",
     "add-board": "Ajouter un nouveau tableau",
     "add-card": "Ajouter une carte",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "Ajouter la couverture",
     "add-label": "Ajouter une étiquette",
     "add-list": "Ajouter une liste",
@@ -31,6 +54,8 @@
     "all-boards": "Tous les tableaux",
     "and-n-other-card": "Et __count__ autre carte",
     "and-n-other-card_plural": "Et __count__ autres cartes",
+    "apply": "Appliquer",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Archiver",
     "archive-all": "Tout archiver",
     "archive-board": "Archiver le tableau",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "La suppression d'une pièce jointe est définitive. Elle ne peut être annulée.",
     "attachmentDeletePopup-title": "Supprimer la pièce jointe ?",
     "attachments": "Pièces jointes",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "La taille du fichier de l’avatar est trop importante (70 Ko au maximum)",
     "back": "Retour",
     "board-change-color": "Changer la couleur",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Change la fond du tableau",
     "boardChangeTitlePopup-title": "Renommer le tableau",
     "boardChangeVisibilityPopup-title": "Changer la visibilité",
-    "boardImportBoardPopup-title": "Importer le tableau depuis Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "Menu du tableau",
     "boards": "Tableaux",
     "bucket-example": "Comme « todo list » par exemple",
@@ -66,11 +92,15 @@
     "card-delete-notice": "La suppression est permanente. Vous perdrez toutes les actions associées à cette carte.",
     "card-delete-pop": "Toutes les actions vont être supprimées du suivi d'activités et vous ne pourrez plus utiliser cette carte. Cette action est irréversible.",
     "card-delete-suggest-archive": "Vous pouvez archiver une carte pour la supprimer en préservant le suivi des activités.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Editer les pièces jointes",
     "card-edit-labels": "Editer les étiquettes",
     "card-edit-members": "Modifier les membres",
     "card-labels-title": "Modifier les étiquettes de la carte.",
     "card-members-title": "Ajouter ou supprimer des membres à la carte.",
+    "card-start": "Début",
+    "card-start-on": "Commence le",
     "cardAttachmentsPopup-title": "Joindre depuis",
     "cardDeletePopup-title": "Supprimer la carte ?",
     "cardDetailsActionsPopup-title": "Actions sur la carte",
@@ -82,10 +112,13 @@
     "change-avatar": "Changer l'avatar",
     "change-password": "Changer le mot de passe",
     "change-permissions": "Changer les permissions",
+    "change-settings": "Modifier les paramètres",
     "changeAvatarPopup-title": "Changer l'avatar",
     "changeLanguagePopup-title": "Changer la langue",
     "changePasswordPopup-title": "Changer le mot de passe",
     "changePermissionsPopup-title": "Changer les permissions",
+    "changeSettingsPopup-title": "Modifier les paramètres",
+    "checklists": "Checklists",
     "click-to-star": "Cliquez pour ajouter ce tableau aux favoris.",
     "click-to-unstar": "Cliquez pour retirer ce tableau des favoris.",
     "clipboard": "Presse-papier ou glisser-déposer",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "Créer un tableau",
     "createLabelPopup-title": "Créer un étiquette",
     "current": "courant",
+    "date": "Date",
     "decline": "Refuser",
     "default-avatar": "Avatar par défaut",
     "delete": "Supprimer",
@@ -122,7 +156,10 @@
     "edit": "Éditer",
     "edit-avatar": "Changer l'avatar",
     "edit-profile": "Éditer le profil",
+    "editCardStartDatePopup-title": "Modifier la date de début",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "Changer l'étiquette",
+    "editNotificationPopup-title": "Modifier la Notification",
     "editProfilePopup-title": "Éditer le profil",
     "email": "Email",
     "email-enrollAccount-subject": "Un compte a été créé pour vous sur __siteName__",
@@ -145,28 +182,34 @@
     "error-list-doesNotExist": "Cette liste n’existe pas",
     "error-user-doesNotExist": "Cet utilisateur n’existe pas",
     "error-user-notAllowSelf": "This action on self is not allowed",
-    "error-user-notCreated": "Cet utilisateur n’a pas encore été créé. ",
+    "error-user-notCreated": "Cet utilisateur n’a pas encore été créé.",
+    "error-username-taken": "Ce nom d'utilisateur est déjà pris",
     "export-board": "Exporter le tableau",
     "filter": "Filtrer",
     "filter-cards": "Filtrer les cartes",
     "filter-clear": "Retirer les filtres",
+    "filter-no-label": "Aucun libellé",
+    "filter-no-member": "Aucun membre",
     "filter-on": "Le filtre est actif",
     "filter-on-desc": "Vous êtes en train de filtrer les cartes sur ce tableau. Cliquez ici pour changer les filtres.",
     "filter-to-selection": "Filtre vers la sélection",
     "fullname": "Nom complet",
     "header-logo-title": "Retourner à la page des tableaux",
+    "hide-system-messages": "Masquer les messages système",
     "home": "Accueil",
     "import": "Importer",
     "import-board": "Importer depuis Trello",
+    "import-board-title": "Importer le tableau depuis Trello",
     "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-card": "Importer une carte Trello",
-    "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text",
-    "import-json-placeholder": "Collez ici les données JSON valides. ",
-    "import-members-map": "Le tableau que vous venez d’importer contient des participants. Veuillez associer les participants que vous souhaitez importer à des utilisateurs de Wekan. ",
+    "import-json-placeholder": "Collez ici les données JSON valides.",
+    "import-map-members": "Map members",
+    "import-members-map": "Le tableau que vous venez d’importer contient des participants. Veuillez associer les participants que vous souhaitez importer à des utilisateurs de Wekan.",
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Sélectionner le membre Wekan",
     "info": "Infos",
     "initials": "Initiales",
+    "invalid-date": "Date invalide",
     "joined": "a joint",
     "just-invited": "You are just invited to this board",
     "keyboard-shortcuts": "Raccourcis clavier",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "Importer une carte Trello",
     "lists": "Listes",
     "log-out": "Déconnexion",
+    "log-in": "Connexion",
     "loginPopup-title": "Connexion",
-    "mapMembersAddPopup-title": "Sélectioner le membre Wekan",
-    "mapMembersPopup-title": "Associer les membres",
     "memberMenuPopup-title": "Préférence de membre",
     "members": "Membres",
     "menu": "Menu",
     "move-selection": "Déplacer la sélection",
     "moveCardPopup-title": "Déplacer la carte",
+    "moveCardToBottom-title": "Aller en bas",
+    "moveCardToTop-title": "Aller en haut",
     "moveSelectionPopup-title": "Déplacer la sélection",
     "multi-selection": "Sélection multiple",
     "multi-selection-on": "Multi-Selection active",
+    "muted": "Muted",
+    "muted-info": "Vous ne serez jamais averti des modifications effectuées dans ce tableau",
     "my-boards": "Mes tableaux",
     "name": "Nom",
     "no-archived-cards": "Pas de carte archivée.",
@@ -205,12 +251,15 @@
     "normal": "Normal",
     "normal-desc": "Peut voir et éditer les cartes. Ne peut pas changer les paramètres.",
     "not-accepted-yet": "L’invitation n’a pas encore été acceptée",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "optionnel",
     "or": "ou",
     "page-maybe-private": "Cette page est peut-être privée. Vous pourrez peut-être la voir en vous <a href='%s'>connectant</a>.",
     "page-not-found": "Page non trouvée",
     "password": "Mot de passe",
     "paste-or-dragdrop": "pour coller, ou glissez-déposez une image ici (seulement une image)",
+    "participating": "Participating",
     "preview": "Prévisualiser",
     "previewAttachedImagePopup-title": "Prévisualiser",
     "previewClipboardImagePopup-title": "Prévisualiser",
@@ -223,6 +272,7 @@
     "remove-cover": "Enlever la couverture",
     "remove-from-board": "Retirer du tableau",
     "remove-label": "Retirer cette étiquette",
+    "remove-list": "Supprimer la liste",
     "remove-member": "Supprimer le membre",
     "remove-member-from-card": "Supprimer de la carte",
     "remove-member-pop": "Supprimer __name__ (__username__) de __boardTitle__ ? Ce membre sera supprimé de toutes les cartes du tableau et recevra une notification.",
@@ -234,7 +284,7 @@
     "search": "Chercher",
     "select-color": "Choisissez une couleur",
     "shortcut-assign-self": "Assign yourself to current card",
-    "shortcut-autocomplete-emojies": "Auto-complétion des emojies",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-members": "Auto-complétion des membres",
     "shortcut-clear-filters": "Retirer tous les filtres",
     "shortcut-close-dialog": "Fermer le dialogue",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "Afficher cette liste de raccourcis",
     "shortcut-toggle-filterbar": "Afficher/Cacher la barre latérale des filtres",
     "shortcut-toggle-sidebar": "Afficher/Cacher la barre latérale du tableau",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Créer un compe",
     "star-board-title": "Cliquer pour ajouter ce tableau aux favoris. Il sera affiché en haut de votre liste de tableaux.",
     "starred-boards": "Tableaux favoris",
@@ -250,14 +301,24 @@
     "team": "Équipe",
     "this-board": "ce tableau",
     "this-card": "cette carte",
+    "time": "Time",
     "title": "Titre",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Retirer le membre",
     "unsaved-description": "Vous avez une description non sauvegardée",
+    "unwatch": "Unwatch",
     "upload": "Télécharger",
     "upload-avatar": "Télécharger un avatar",
     "uploaded-avatar": "Avatar téléchargé",
     "username": "Nom d'utilisateur",
     "view-it": "Le voir",
     "warn-list-archived": "Attention : cette carte est dans une liste archivée",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "Que voulez-vous faire ?"
 }

+ 69 - 8
i18n/he.i18n.json

@@ -1,10 +1,30 @@
 {
     "accept": "אישור",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": " __attachment__ שוייך ל- __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "הלוח __board__ נוצר",
+    "act-createCard": "הכרטיס __card__ התווסף לרשימה __list__",
+    "act-createList": "הרשימה __list__ התווספה ללוח __board__",
+    "act-addBoardMember": "המשתמש __member__ שויך ללוח __board__",
+    "act-archivedBoard": "הלוח  __board__ הועבר לארכיון",
+    "act-archivedCard": "הכרטיס __card__ הועבר לארכיון",
+    "act-archivedList": "הרשימה __card__ הועברה לארכיון",
+    "act-importBoard": "הלוח __board__ יובא",
+    "act-importCard": "הכרטיס __card__ יובא",
+    "act-importList": "הרשימה  __list__ יובאה",
+    "act-joinMember": "המשתמש  __member__ שוייך לכרטיס __card__",
+    "act-moveCard": "הכרטיס __card__ הועבר מהרשימה __oldList__ לרשימה __list__",
+    "act-removeBoardMember": "המשתמש __member__ הוסר מהלוח __board__",
+    "act-restoredCard": "הכרטיס __card__ שוחזר ללוח __board__",
+    "act-unjoinMember": "המשתמש __member__ הוסר מהכרטיס __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "פעולות",
     "activities": "פעילויות",
     "activity": "פעילות",
     "activity-added": "%s נוסף ל%s",
-    "activity-archived": "%s בארכיון",
+    "activity-archived": "%s אורכב",
     "activity-attached": "%s צורף ל%s",
     "activity-created": "%s נוצר",
     "activity-excluded": "%s לא נכלל ב%s",
@@ -16,10 +36,13 @@
     "activity-removed": "%s הוסר מ%s",
     "activity-sent": "%s נשלח ל%s",
     "activity-unjoined": "בטל צירוף %s",
+    "activity-checklist-added": "רשימת משימות התווספה ל- %s",
     "add": "הוסף",
     "add-attachment": "הוסף קובץ",
     "add-board": "הוסף לוח חדש",
     "add-card": "הוסף כרטיס",
+    "add-checklist": "הוסף רשימת משימות",
+    "add-checklist-item": "הוסף פריט לרשימת משימות",
     "add-cover": "הוסף כיסוי",
     "add-label": "הוסף תווית",
     "add-list": "הוסף רשימה",
@@ -31,6 +54,8 @@
     "all-boards": "כל הלוחות",
     "and-n-other-card": "ו __count__ כרטיס אחר",
     "and-n-other-card_plural": "ו __count__ כרטיסים אחרים",
+    "apply": "אשר שינויים",
+    "app-is-offline": "המערכת למטה כרגע, ריענון של הדף יגרום לאבדן מידע",
     "archive": "אחסן בארכיון",
     "archive-all": "אחסן הכל בארכיון",
     "archive-board": "אחסן לוח בארכיון",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "מחיקת קובץ מצורף הינה סופית. אין דרך חזרה.",
     "attachmentDeletePopup-title": "למחוק קובץ מצורף?",
     "attachments": "קבצים מצורפים",
+    "auto-watch": "עקוב באופן אוטומטי אחרי לוחות אחרי שהם נוצרים",
     "avatar-too-big": "האווטאר גדול מידי (מקס 70Kb)",
     "back": "חזור",
     "board-change-color": "שנה צבע",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "שנה רקע ללוח",
     "boardChangeTitlePopup-title": "שנה שם ללוח",
     "boardChangeVisibilityPopup-title": "שנה תצוגה",
-    "boardImportBoardPopup-title": "ייבא לוח מטרלו",
+    "boardChangeWatchPopup-title": "שנה את הגדרת המעקב",
     "boardMenuPopup-title": "תפריט לוח",
     "boards": "לוחות",
     "bucket-example": "כמו “Bucket List” לדוגמא",
@@ -66,11 +92,15 @@
     "card-delete-notice": "מחיקה היא סופית. תאבדו את כל הפעולות המשויכות לכרטיס זה.",
     "card-delete-pop": "כל הפעולות יוסרו מלוח הפעילות ולא תוכלו לפתוח מחדש את הכרטיס. אין דרך חזרה.",
     "card-delete-suggest-archive": "באפשרותך לאחסן בארכיון כרטיס כדי להסירו מהלוח ולשמר את הפעילות.",
+    "card-due": "תאריך יעד",
+    "card-due-on": "תאריך יעד",
     "card-edit-attachments": "ערוך קבצים מצורפים",
-    "card-edit-labels": "ערוך תוויות ",
+    "card-edit-labels": "ערוך תוויות",
     "card-edit-members": "ערוך חברים",
     "card-labels-title": "שנה תוויות לכרטיס.",
     "card-members-title": "הוסף או הסר את חברי הלוח מהכרטיס",
+    "card-start": "התחל",
+    "card-start-on": "מתחיל ב-",
     "cardAttachmentsPopup-title": "צרף מ",
     "cardDeletePopup-title": "למחוק כרטיס?",
     "cardDetailsActionsPopup-title": "פעולות על הכרטיס",
@@ -82,10 +112,13 @@
     "change-avatar": "שנה אווטאר",
     "change-password": "שנה סיסמא",
     "change-permissions": "שנה הרשאות",
+    "change-settings": "שנה הגדרות",
     "changeAvatarPopup-title": "שנה אווטאר",
     "changeLanguagePopup-title": "שנה שפה",
     "changePasswordPopup-title": "שנה סיסמא",
     "changePermissionsPopup-title": "שנה הרשאות",
+    "changeSettingsPopup-title": "שנה הגדרות",
+    "checklists": "רשימות",
     "click-to-star": "לחץ להוספת הלוח למועדפים",
     "click-to-unstar": "לחץ להסרת הלוח מהמועדפים.",
     "clipboard": "Clipboard or drag & drop",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "צור לוח",
     "createLabelPopup-title": "צור תווית",
     "current": "נוכחי",
+    "date": "תאריך",
     "decline": "סרב",
     "default-avatar": "אווטאר דיפולטי",
     "delete": "מחק",
@@ -122,7 +156,10 @@
     "edit": "ערוך",
     "edit-avatar": "שנה אווטאר",
     "edit-profile": "ערוך פרופיל",
+    "editCardStartDatePopup-title": "שנה זמן התחלה",
+    "editCardDueDatePopup-title": "שנה זמן סיום",
     "editLabelPopup-title": "שנה תווית",
+    "editNotificationPopup-title": "שנה התראה",
     "editProfilePopup-title": "ערוך פרופיל",
     "email": "אמייל",
     "email-enrollAccount-subject": "חשבון נוצר עבורך ב __siteName__",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "משתמש זה לא קיים",
     "error-user-notAllowSelf": "פעולה זו איננה מותרת",
     "error-user-notCreated": "משתמש זה לא נוצר",
+    "error-username-taken": "המשתמש כבר קיים במערכת",
     "export-board": "ייצא לוח",
     "filter": "מסנן",
     "filter-cards": "סנן כרטיסים",
     "filter-clear": "נקה מסנן",
+    "filter-no-label": "אין תווית",
+    "filter-no-member": "המשתמש לא קיים",
     "filter-on": "מסנן פועל",
     "filter-on-desc": "מסנן כרטיסים בלוח זה פועל. יש ללחוץ כאן לעריכת המסנן.",
     "filter-to-selection": "סנן את הבחירה",
     "fullname": "שם מלא",
     "header-logo-title": "חזור לדף הלוחות שלך.",
+    "hide-system-messages": "הסתר הודעות מערכת",
     "home": "בית",
     "import": "ייבא",
     "import-board": "ייבא מטרלו",
+    "import-board-title": "ייבא לוח מטרלו",
     "import-board-trello-instruction": "בלוח הטרלו שלך, עבור ל 'Menu', ואז ל 'More', 'Print and Export', 'Export JSON' והעתק את הטקסט שנוצר",
-    "import-card": "ייבא כרטיס מטרלו",
-    "import-card-trello-instruction": "עבור לכרטיס טרלו, בחר \"Share and more...\" ואז \"Export JSON\" והעתק את הטקסט שנוצר",
     "import-json-placeholder": "הדבק נתוני JSON תקינים כאן",
+    "import-map-members": "מפֱה חברים",
     "import-members-map": "הלוחות המיובאים שלך מכילים חברים. בבקשה מפה את החברים שתרצה לייבא כמשתמשים",
     "import-show-user-mapping": "צפה במיפוי חברים",
     "import-user-select": "בחר במשתמש עבור חבר זה",
+    "importMapMembersAddPopup-title": "בחר משתמש",
     "info": "אינפורמציה",
     "initials": "ראשי תיבות",
+    "invalid-date": "תאריך שגוי",
     "joined": "הצטרף",
     "just-invited": "הוזמנת ללוח זה",
     "keyboard-shortcuts": "קיצורי מקלדת",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "ייבא כרטיס מטרלו",
     "lists": "רשימות",
     "log-out": "התנתק",
+    "log-in": "התחבר",
     "loginPopup-title": "התחבר",
-    "mapMembersAddPopup-title": "בחר חבר",
-    "mapMembersPopup-title": "מפה חברים",
     "memberMenuPopup-title": "הגדרות חבר",
     "members": "חברים",
     "menu": "תפריט",
     "move-selection": "הזז בחירה",
     "moveCardPopup-title": "הזז כרטיס",
+    "moveCardToBottom-title": "העבר כרטיס לתחתית הרשימה",
+    "moveCardToTop-title": "העבר כרטיס לראש הרשימה ",
     "moveSelectionPopup-title": "הזז בחירה",
     "multi-selection": "בחירה מרובה",
     "multi-selection-on": "בחירה מרובה פועלת",
+    "muted": "השתק",
+    "muted-info": "מעתה אתה לא תקבל עוד התראות על שינויים בלוח זה",
     "my-boards": "הלוחות שלי",
     "name": "שם",
     "no-archived-cards": "אין כרטיסים מאוחסנים בארכיון.",
@@ -205,12 +251,15 @@
     "normal": "נורמלי",
     "normal-desc": "יכול לצפות ולערוך כרטיסים. לא יכול לשנות הגדרות.",
     "not-accepted-yet": "הזמנה לא התקבלה עדיין",
+    "notify-participate": "קבל התראות על שינויים בכרטיסים שיצרת או שבהם אתה חבר",
+    "notify-watch": "קבל התראות על עדכונים בכל לוח, רשימה או כרטיס שבהם אתה חבר",
     "optional": "אופציונלי",
     "or": "או",
     "page-maybe-private": "יתכן שדף זה פרטי. תוכלו לצפות על ידי <a href='%s'>התחברות למערכת</a>",
     "page-not-found": "דף לא נמצא.",
     "password": "סיסמא",
     "paste-or-dragdrop": "בכדי להדביק או drag & drop קובץ תמונה (תמונה בלבד)",
+    "participating": "Participating",
     "preview": "תצוגה מקדימה",
     "previewAttachedImagePopup-title": "תצוגה מקדימה",
     "previewClipboardImagePopup-title": "תצוגה מקדימה",
@@ -223,6 +272,7 @@
     "remove-cover": "הסר כיסוי",
     "remove-from-board": "הסר מהלוח",
     "remove-label": "הסר תווית",
+    "remove-list": "הסר מהרשימה",
     "remove-member": "הסר חבר",
     "remove-member-from-card": "הסר מהכרטיס",
     "remove-member-pop": "הסר __name__ (__username__) מ __boardTitle__? החבר יוסר מכל הכרטיסים בלוח זה. הוא יקבל על כך הודעה.",
@@ -234,7 +284,7 @@
     "search": "חפש",
     "select-color": "בחר צבע",
     "shortcut-assign-self": "הקצה את עצמך לכרטיס הנוכחי",
-    "shortcut-autocomplete-emojies": "השלמה אוטומטית של אימוג'יז",
+    "shortcut-autocomplete-emoji": "השלמה אוטומטית לפרצופונים (Emoji)",
     "shortcut-autocomplete-members": "השלמה אוטומטית של חברים",
     "shortcut-clear-filters": "נקה את כל המסננים",
     "shortcut-close-dialog": "סגור חלון",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "הבא רשימת קיצורי דרך זו",
     "shortcut-toggle-filterbar": "החלף מצבי מסנן",
     "shortcut-toggle-sidebar": "החלף מצבי מסנן",
+    "show-cards-minimum-count": "הצג מספר כרטיסים אם הרשימה מכיל יותר כרטיסים מ-",
     "signupPopup-title": "צור חשבון",
     "star-board-title": "בלחיצה על הכווכב של הלוח יתווסף הלוח לראש רשימת הלוחות שלך.",
     "starred-boards": "לוחות שסומנו בכוכב",
@@ -250,14 +301,24 @@
     "team": "צוות",
     "this-board": "לוח זה",
     "this-card": "כרטיס זה",
+    "time": "זמן",
     "title": "כותרת",
+    "tracking": "Tracking",
+    "tracking-info": "אתה תקבל התראות על שינויים בכרטיסים שיצרת או שאתה חבר בהם",
     "unassign-member": "בטל הקצאת חבר",
     "unsaved-description": "יש לך תיאור לא שמור.",
+    "unwatch": "הספק מעקב",
     "upload": "העלה/טען",
     "upload-avatar": "העלה/ טען אווטאר",
     "uploaded-avatar": "אווטאר הועלה/נטען",
     "username": "שם משתמש",
     "view-it": "צפה",
     "warn-list-archived": "אזהרה: הכרטיס נמצא ברשימה שהועברה לארכיון",
+    "watch": "עקוב",
+    "watching": "עוקב",
+    "watching-info": "מעתה אתה תקבל התראות על עדכונים בלוח זה",
+    "welcome-board": "ברוך הבא ללוח",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "מה תרצה לעשות?"
 }

+ 256 - 195
i18n/it.i18n.json

@@ -1,25 +1,48 @@
 {
-    "accept": "Accept",
+    "accept": "Accetta",
+    "act-activity-notify": "[Wekan] Notifiche attività",
+    "act-addAttachment": "ha allegato __attachment__ a __card__",
+    "act-addComment": "ha commentato su __card__: __comment__",
+    "act-createBoard": "ha creato __board__",
+    "act-createCard": "ha aggiunto __card__ a __list__",
+    "act-createList": "ha aggiunto __list__ a __board__",
+    "act-addBoardMember": "ha aggiunto __member__ a __board__",
+    "act-archivedBoard": "ha archiviato __board__",
+    "act-archivedCard": "ha archiviato __card__",
+    "act-archivedList": "ha archiviato __list__",
+    "act-importBoard": "ha importato __board__",
+    "act-importCard": "ha importato __card__",
+    "act-importList": "ha importato __list__",
+    "act-joinMember": "ha aggiunto __member__ a __card__",
+    "act-moveCard": "ha spostato __card__ da __oldList__ a __list__",
+    "act-removeBoardMember": "ha rimosso __member__ da __board__",
+    "act-restoredCard": "ha ripristinato __card__ su __board__",
+    "act-unjoinMember": "ha rimosso __member__ da __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Azioni",
     "activities": "Attività",
     "activity": "Attività",
-    "activity-added": "aggiunto %s a %s",
+    "activity-added": "ha aggiunto %s a %s",
     "activity-archived": "archiviato %s",
     "activity-attached": "allegato %s a %s",
     "activity-created": "creato %s",
     "activity-excluded": "escluso %s da %s",
-    "activity-imported": "imported %s into %s from %s",
-    "activity-imported-board": "imported %s from %s",
-    "activity-joined": "è stato unito %s",
+    "activity-imported": "importato %s in %s da %s",
+    "activity-imported-board": "importato %s da %s",
+    "activity-joined": "si è unito a %s",
     "activity-moved": "spostato %s da %s a %s",
     "activity-on": "su %s",
     "activity-removed": "rimosso %s da %s",
     "activity-sent": "inviato %s a %s",
-    "activity-unjoined": "unjoined %s",
+    "activity-unjoined": "ha abbandonato %s",
+    "activity-checklist-added": "aggiunta checklist a %s",
     "add": "Aggiungere",
     "add-attachment": "Aggiungi allegato",
     "add-board": "Aggiungi una nuova bachecha",
     "add-card": "Aggiungi una scheda",
+    "add-checklist": "Aggiungi una checklist",
+    "add-checklist-item": "Aggiungi un elemento alla checklist",
     "add-cover": "Aggiungi copertina",
     "add-label": "Aggiungi l'etichetta",
     "add-list": "Aggiungi una lista",
@@ -31,21 +54,24 @@
     "all-boards": "Tutte le bacheche",
     "and-n-other-card": "E __count__ altra scheda",
     "and-n-other-card_plural": "E __count__ altre schede",
+    "apply": "Applica",
+    "app-is-offline": "L'applicazione è al momento offline, ricaricando la pagina perderai i dati.",
     "archive": "Archivia",
     "archive-all": "Archivia tutto",
     "archive-board": "Archivia bacheca",
     "archive-card": "Archivia scheda",
     "archive-list": "Archivia questa lista",
     "archive-selection": "Archivia selezione",
-    "archiveBoardPopup-title": "Archive Board?",
+    "archiveBoardPopup-title": "Archivia Bacheca?",
     "archived-items": "Elementi archiviati",
-    "archives": "Archives",
-    "assign-member": "Assegna membri",
+    "archives": "Archivi",
+    "assign-member": "Aggiungi membro",
     "attached": "allegato",
     "attachment": "Allegato",
     "attachment-delete-pop": "L'eliminazione di un allegato è permanente. Non è possibile annullare.",
     "attachmentDeletePopup-title": "Eliminare l'allegato?",
     "attachments": "Allegati",
+    "auto-watch": "Segui automaticamente le bacheche quando le crei",
     "avatar-too-big": "L'avatar è troppo grande (max 70Kb)",
     "back": "Indietro",
     "board-change-color": "Cambia colore",
@@ -56,208 +82,243 @@
     "boardChangeColorPopup-title": "Cambia sfondo della bacheca",
     "boardChangeTitlePopup-title": "Rinomina bacheca",
     "boardChangeVisibilityPopup-title": "Cambia visibilità",
-    "boardImportBoardPopup-title": "Import board from Trello",
+    "boardChangeWatchPopup-title": "Cambia faccia",
     "boardMenuPopup-title": "Menu bacheca",
     "boards": "Bacheche",
-    "bucket-example": "Like “Bucket List” for example",
+    "bucket-example": "Per esempio come \"una lista di cose da fare\"",
     "cancel": "Cancella",
     "card-archived": "Questa scheda è archiviata.",
     "card-comments-title": "Questa scheda ha %s commenti.",
     "card-delete-notice": "L'eliminazione è permanente. Tutte le azioni associate a questa scheda andranno perse.",
-    "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
-    "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
-    "card-edit-attachments": "Edit attachments",
-    "card-edit-labels": "Edit labels",
-    "card-edit-members": "Edit members",
-    "card-labels-title": "Change the labels for the card.",
-    "card-members-title": "Add or remove members of the board from the card.",
-    "cardAttachmentsPopup-title": "Attach From",
-    "cardDeletePopup-title": "Delete Card?",
-    "cardDetailsActionsPopup-title": "Card Actions",
-    "cardLabelsPopup-title": "Labels",
-    "cardMembersPopup-title": "Membr",
-    "cardMorePopup-title": "More",
-    "cards": "Cards",
-    "change": "Change",
-    "change-avatar": "Change Avatar",
-    "change-password": "Change Password",
-    "change-permissions": "Change permissions",
-    "changeAvatarPopup-title": "Change Avatar",
-    "changeLanguagePopup-title": "Change Language",
-    "changePasswordPopup-title": "Change Password",
-    "changePermissionsPopup-title": "Change Permissions",
-    "click-to-star": "Click to star this board.",
-    "click-to-unstar": "Click to unstar this board.",
-    "clipboard": "Clipboard or drag & drop",
-    "close": "Close",
-    "close-board": "Close Board",
-    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
-    "color-black": "black",
-    "color-blue": "blue",
-    "color-green": "green",
+    "card-delete-pop": "Tutte le azioni saranno rimosse dal flusso attività e non sarai in grado di riaprire la scheda. Non potrai tornare indietro.",
+    "card-delete-suggest-archive": "Puoi archiviare una scheda per rimuoverla dalla bacheca e preservare la sua attività.",
+    "card-due": "Scadenza",
+    "card-due-on": "Scade",
+    "card-edit-attachments": "Modifica allegati",
+    "card-edit-labels": "Modifica etichette",
+    "card-edit-members": "Modifica membri",
+    "card-labels-title": "Cambia le etichette per questa scheda.",
+    "card-members-title": "Aggiungi o rimuovi membri della bacheca da questa scheda",
+    "card-start": "Inizio",
+    "card-start-on": "Inizia",
+    "cardAttachmentsPopup-title": "Allega da",
+    "cardDeletePopup-title": "Elimina scheda?",
+    "cardDetailsActionsPopup-title": "Azioni scheda",
+    "cardLabelsPopup-title": "Etichette",
+    "cardMembersPopup-title": "Membri",
+    "cardMorePopup-title": "Altro",
+    "cards": "Schede",
+    "change": "Cambia",
+    "change-avatar": "Cambia avatar",
+    "change-password": "Cambia password",
+    "change-permissions": "Cambia permessi",
+    "change-settings": "Cambia impostazioni",
+    "changeAvatarPopup-title": "Cambia avatar",
+    "changeLanguagePopup-title": "Cambia lingua",
+    "changePasswordPopup-title": "Cambia password",
+    "changePermissionsPopup-title": "Cambia permessi",
+    "changeSettingsPopup-title": "Cambia impostazioni",
+    "checklists": "Checklist",
+    "click-to-star": "Clicca per stellare questa bacheca",
+    "click-to-unstar": "Clicca per togliere la stella da questa bacheca",
+    "clipboard": "Clipboard o drag & drop",
+    "close": "Chiudi",
+    "close-board": "Chiudi bacheca",
+    "close-board-pop": "Sarai in grado di ripristinare la bacheca cliccando il tasto \"Archivi\" dall'intestazione della pagina principale.",
+    "color-black": "nero",
+    "color-blue": "blu",
+    "color-green": "verde",
     "color-lime": "lime",
-    "color-orange": "orange",
-    "color-pink": "pink",
-    "color-purple": "purple",
-    "color-red": "red",
-    "color-sky": "sky",
-    "color-yellow": "yellow",
-    "comment": "Comment",
-    "comment-placeholder": "Write a comment",
+    "color-orange": "arancione",
+    "color-pink": "rosa",
+    "color-purple": "viola",
+    "color-red": "rosso",
+    "color-sky": "azzurro",
+    "color-yellow": "giallo",
+    "comment": "Commento",
+    "comment-placeholder": "Scrivi un commento",
     "computer": "Computer",
-    "create": "Create",
-    "createBoardPopup-title": "Create Board",
-    "createLabelPopup-title": "Create Label",
-    "current": "current",
-    "decline": "Decline",
-    "default-avatar": "Default avatar",
-    "delete": "Delete",
-    "deleteLabelPopup-title": "Delete Label?",
-    "description": "Description",
-    "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
-    "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
-    "discard": "Discard",
-    "done": "Done",
+    "create": "Crea",
+    "createBoardPopup-title": "Crea bacheca",
+    "createLabelPopup-title": "Crea etichetta",
+    "current": "corrente",
+    "date": "Data",
+    "decline": "Declina",
+    "default-avatar": "Avatar predefinito",
+    "delete": "Elimina",
+    "deleteLabelPopup-title": "Eliminare etichetta?",
+    "description": "Descrizione",
+    "disambiguateMultiLabelPopup-title": "Disambiguare l'azione Etichetta",
+    "disambiguateMultiMemberPopup-title": "Disambiguare l'azione Membro",
+    "discard": "Scarta",
+    "done": "Fatto",
     "download": "Download",
-    "edit": "Edit",
-    "edit-avatar": "Change Avatar",
-    "edit-profile": "Edit Profile",
-    "editLabelPopup-title": "Change Label",
-    "editProfilePopup-title": "Edit Profile",
+    "edit": "Modifica",
+    "edit-avatar": "Cambia avatar",
+    "edit-profile": "Modifica profilo",
+    "editCardStartDatePopup-title": "Cambia data di inizio",
+    "editCardDueDatePopup-title": "Cambia data di scadenza",
+    "editLabelPopup-title": "Cambia etichetta",
+    "editNotificationPopup-title": "Modifica notifiche",
+    "editProfilePopup-title": "Modifica profilo",
     "email": "Email",
-    "email-enrollAccount-subject": "An account created for you on __siteName__",
-    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
-    "email-fail": "Sending email failed",
-    "email-invalid": "Invalid email",
-    "email-invite": "Invite via Email",
-    "email-invite-subject": "__inviter__ sent you an invitation",
-    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
-    "email-resetPassword-subject": "Reset your password on __siteName__",
-    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
-    "email-sent": "Email sent",
-    "email-verifyEmail-subject": "Verify your email address on __siteName__",
-    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
-    "error-board-doesNotExist": "This board does not exist",
-    "error-board-notAdmin": "You need to be admin of this board to do that",
-    "error-board-notAMember": "You need to be a member of this board to do that",
-    "error-json-malformed": "Your text is not valid JSON",
-    "error-json-schema": "Your JSON data does not include the proper information in the correct format",
-    "error-list-doesNotExist": "This list does not exist",
-    "error-user-doesNotExist": "This user does not exist",
-    "error-user-notAllowSelf": "This action on self is not allowed",
-    "error-user-notCreated": "This user is not created",
-    "export-board": "Export board",
-    "filter": "Filter",
-    "filter-cards": "Filter Cards",
-    "filter-clear": "Clear filter",
-    "filter-on": "Filter is on",
-    "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
-    "filter-to-selection": "Filter to selection",
-    "fullname": "Full Name",
-    "header-logo-title": "Go back to your boards page.",
+    "email-enrollAccount-subject": "Creato un account per te su __siteName__",
+    "email-enrollAccount-text": "Ciao __user__,\n\nPer iniziare ad usare il servizio, clicca sul link seguente:\n\n__url__\n\nGrazie.",
+    "email-fail": "Invio email fallito",
+    "email-invalid": "Email non valida",
+    "email-invite": "Invita via email",
+    "email-invite-subject": "__inviter__ ti ha inviato un invito",
+    "email-invite-text": "Caro __user__,\n\n__inviter__ ti ha invitato ad unirti alla bacheca \"__board__\" per le collaborazioni.\n\nPer favore clicca sul link seguente:\n\n__url__\n\nGrazie.",
+    "email-resetPassword-subject": "Ripristina la tua password su on __siteName__",
+    "email-resetPassword-text": "Ciao __user__,\n\nPer ripristinare la tua password, clicca sul link seguente:\n\n__url__\n\nGrazie.",
+    "email-sent": "Email inviata",
+    "email-verifyEmail-subject": "Verifica il tuo indirizzo email su on __siteName__",
+    "email-verifyEmail-text": "Ciao __user__,\n\nPer verificare il tuo account email, clicca sul link seguente:\n\n__url__\n\nGrazie.",
+    "error-board-doesNotExist": "Questa bacheca non esiste",
+    "error-board-notAdmin": "Devi essere admin di questa bacheca per poterlo fare",
+    "error-board-notAMember": "Devi essere un membro di questa bacheca per poterlo fare",
+    "error-json-malformed": "Il tuo testo non è un JSON valido",
+    "error-json-schema": "Il tuo file JSON non contiene le giuste informazioni nel formato corretto",
+    "error-list-doesNotExist": "Questa lista non esiste",
+    "error-user-doesNotExist": "Questo utente non esiste",
+    "error-user-notAllowSelf": "Questa azione su se stessa non è permessa",
+    "error-user-notCreated": "L'utente non è stato creato",
+    "error-username-taken": "Questo username è già utilizzato",
+    "export-board": "Esporta bacheca",
+    "filter": "Filtra",
+    "filter-cards": "Filtra schede",
+    "filter-clear": "Pulisci filtri",
+    "filter-no-label": "Nessuna etichetta",
+    "filter-no-member": "Nessun membro",
+    "filter-on": "Il filtro è attivo",
+    "filter-on-desc": "Stai filtrando le schede su questa bacheca. Clicca qui per modificare il filtro,",
+    "filter-to-selection": "Seleziona",
+    "fullname": "Nome completo",
+    "header-logo-title": "Torna alla tua bacheca.",
+    "hide-system-messages": "Nascondi i messaggi di sistema",
     "home": "Home",
-    "import": "Import",
-    "import-board": "import from Trello",
-    "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-card": "Import a Trello card",
-    "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text",
-    "import-json-placeholder": "Paste your valid JSON data here",
-    "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
-    "import-show-user-mapping": "Review members mapping",
-    "import-user-select": "Pick the Wekan user you want to use as this member",
-    "info": "Infos",
-    "initials": "Initials",
-    "joined": "joined",
-    "just-invited": "You are just invited to this board",
-    "keyboard-shortcuts": "Keyboard shortcuts",
-    "label-create": "Create a new label",
-    "label-default": "%s label (default)",
-    "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
-    "labels": "Labels",
-    "language": "Language",
-    "last-admin-desc": "You can’t change roles because there must be at least one admin.",
-    "leave-board": "Leave Board",
-    "link-card": "Link to this card",
-    "list-archive-cards": "Archive all cards in this list",
-    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
-    "list-move-cards": "Move all cards in this list",
-    "list-select-cards": "Select all cards in this list",
-    "listActionPopup-title": "List Actions",
-    "listImportCardPopup-title": "Import a Trello card",
-    "lists": "Lists",
+    "import": "Importa",
+    "import-board": "importa da Trello",
+    "import-board-title": "Importa una bacheca da Trello",
+    "import-board-trello-instruction": "Nella tua bacheca Trello vai a 'Menu', poi 'Altro', 'Stampa ed esporta', 'Esporta JSON', e copia il testo che compare.",
+    "import-json-placeholder": "Incolla un JSON valido qui",
+    "import-map-members": "Mappatura dei membri",
+    "import-members-map": "La bacheca che hai importato ha alcuni membri. Per favore scegli i membri che vuoi vengano importati negli utenti di Wekan",
+    "import-show-user-mapping": "Rivedi la mappatura dei membri",
+    "import-user-select": "Scegli l'utente Wekan che vuoi utilizzare come questo membro",
+    "importMapMembersAddPopup-title": "Seleziona i membri di Wekan",
+    "info": "Info",
+    "initials": "Iniziali",
+    "invalid-date": "Data non valida",
+    "joined": "si è unito a",
+    "just-invited": "Sei stato appena invitato a questa bacheca",
+    "keyboard-shortcuts": "Scorciatoie da tastiera",
+    "label-create": "Crea una nuova etichetta",
+    "label-default": "%s etichetta (default)",
+    "label-delete-pop": "Non potrai tornare indietro. Procedendo, rimuoverai questa etichetta da tutte le schede e distruggerai la sua cronologia.",
+    "labels": "Etichette",
+    "language": "Lingua",
+    "last-admin-desc": "Non puoi cambiare i ruoli perché deve esserci almeno un admin.",
+    "leave-board": "Abbandona bacheca",
+    "link-card": "Link a questa scheda",
+    "list-archive-cards": "Archivia tutte le schede in questa lista",
+    "list-archive-cards-pop": "Questo rimuoverà dalla bacheca tutte le schede in questa lista. Per vedere le schede archiviate e portarle indietro alla bacheca, clicca “Menu” > “Elementi archiviati”",
+    "list-move-cards": "Sposta tutte le schede in questa lista",
+    "list-select-cards": "Selezione tutte le schede in questa lista",
+    "listActionPopup-title": "Azioni disponibili",
+    "listImportCardPopup-title": "Importa una scheda di Trello",
+    "lists": "Liste",
     "log-out": "Log Out",
+    "log-in": "Log In",
     "loginPopup-title": "Log In",
-    "mapMembersAddPopup-title": "Select Wekan member",
-    "mapMembersPopup-title": "Map members",
-    "memberMenuPopup-title": "Member Settings",
-    "members": "Membr",
+    "memberMenuPopup-title": "Impostazioni membri",
+    "members": "Membri",
     "menu": "Menu",
-    "move-selection": "Move selection",
-    "moveCardPopup-title": "Move Card",
-    "moveSelectionPopup-title": "Move selection",
-    "multi-selection": "Multi-Selection",
-    "multi-selection-on": "Multi-Selection is on",
-    "my-boards": "My Boards",
-    "name": "Name",
-    "no-archived-cards": "No archived cards.",
-    "no-archived-lists": "No archived lists.",
-    "no-results": "No results",
-    "normal": "Normal",
-    "normal-desc": "Can view and edit cards. Can't change settings.",
-    "not-accepted-yet": "Invitation not accepted yet",
-    "optional": "optional",
-    "or": "or",
-    "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
-    "page-not-found": "Page not found.",
+    "move-selection": "Sposta selezione",
+    "moveCardPopup-title": "Sposta scheda",
+    "moveCardToBottom-title": "Sposta in fondo",
+    "moveCardToTop-title": "Sposta in alto",
+    "moveSelectionPopup-title": "Sposta selezione",
+    "multi-selection": "Multi-Selezione",
+    "multi-selection-on": "Multi-Selezione attiva",
+    "muted": "Silenziato",
+    "muted-info": "Non sarai mai notificato delle modifiche in questa bacheca",
+    "my-boards": "Le mie bacheche",
+    "name": "Nome",
+    "no-archived-cards": "Nessuna scheda archiviata.",
+    "no-archived-lists": "Nessuna lista archiviata.",
+    "no-results": "Nessun risultato",
+    "normal": "Normale",
+    "normal-desc": "Può visionare e modificare le schede. Non può cambiare le impostazioni.",
+    "not-accepted-yet": "Invitato non ancora accettato",
+    "notify-participate": "Ricevi aggiornamenti per qualsiasi scheda a cui partecipi come creatore o membro",
+    "notify-watch": "Ricevi aggiornamenti per tutte le bacheche, liste o schede che stai seguendo",
+    "optional": "opzionale",
+    "or": "o",
+    "page-maybe-private": "Questa pagina potrebbe essere privata. Potresti essere in grado di vederla <a href='%s'>facendo il log-in</a>.",
+    "page-not-found": "Pagina non trovata.",
     "password": "Password",
-    "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
-    "preview": "Preview",
-    "previewAttachedImagePopup-title": "Preview",
-    "previewClipboardImagePopup-title": "Preview",
-    "private": "Private",
-    "private-desc": "This board is private. Only people added to the board can view and edit it.",
-    "profile": "Profile",
-    "public": "Public",
-    "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
-    "quick-access-description": "Star a board to add a shortcut in this bar.",
-    "remove-cover": "Remove Cover",
-    "remove-from-board": "Remove from Board",
-    "remove-label": "Remove the label",
-    "remove-member": "Remove Member",
-    "remove-member-from-card": "Remove from Card",
-    "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
-    "removeMemberPopup-title": "Remove Member?",
-    "rename": "Rename",
+    "paste-or-dragdrop": "per incollare, oppure trascina & rilascia il file immagine (solo immagini)",
+    "participating": "Partecipando",
+    "preview": "Anteprima",
+    "previewAttachedImagePopup-title": "Anteprima",
+    "previewClipboardImagePopup-title": "Anteprima",
+    "private": "Privata",
+    "private-desc": "Questa bacheca è privata. Solo le persone aggiunte alla bacheca possono vederla e modificarla.",
+    "profile": "Profilo",
+    "public": "Pubblica",
+    "public-desc": "Questa bacheca è pubblica. È visibile a chiunque abbia il link e sarà mostrata dai motori di ricerca come Google. Solo le persone aggiunte alla bacheca possono modificarla.",
+    "quick-access-description": "Stella una bacheca per aggiungere una scorciatoia in questa barra.",
+    "remove-cover": "Rimuovi cover",
+    "remove-from-board": "Rimuovi dalla bacheca",
+    "remove-label": "Rimuovi l'etichetta",
+    "remove-list": "Rimuovi la lista",
+    "remove-member": "Rimuovi utente",
+    "remove-member-from-card": "Rimuovi dalla scheda",
+    "remove-member-pop": "Rimuovere __name__ (__username__) da __boardTitle__? L'utente sarà rimosso da tutte le schede in questa bacheca. Riceveranno una notifica.",
+    "removeMemberPopup-title": "Rimuovere membro?",
+    "rename": "Rinomina",
     "rename-board": "Rinomina bacheca",
-    "restore": "Restore",
-    "save": "Save",
-    "search": "Search",
-    "select-color": "Select a color",
-    "shortcut-assign-self": "Assign yourself to current card",
-    "shortcut-autocomplete-emoji": "Autocomplete emoji",
-    "shortcut-autocomplete-members": "Autocomplete members",
-    "shortcut-clear-filters": "Clear all filters",
-    "shortcut-close-dialog": "Close Dialog",
-    "shortcut-filter-my-cards": "Filter my cards",
-    "shortcut-show-shortcuts": "Bring up this shortcuts list",
-    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
-    "shortcut-toggle-sidebar": "Toggle Board Sidebar",
-    "signupPopup-title": "Create an Account",
-    "star-board-title": "Click to star this board. It will show up at top of your boards list.",
-    "starred-boards": "Starred Boards",
-    "starred-boards-description": "Starred boards show up at the top of your boards list.",
-    "subscribe": "Subscribe",
+    "restore": "Ripristina",
+    "save": "Salva",
+    "search": "Cerca",
+    "select-color": "Seleziona un colore",
+    "shortcut-assign-self": "Aggiungi te stesso alla scheda corrente",
+    "shortcut-autocomplete-emoji": "Autocompletamento emoji",
+    "shortcut-autocomplete-members": "Autocompletamento membri",
+    "shortcut-clear-filters": "Pulisci tutti i filtri",
+    "shortcut-close-dialog": "Chiudi finestra di dialogo",
+    "shortcut-filter-my-cards": "Filtra le mie schede",
+    "shortcut-show-shortcuts": "Porta in alto questa lista di scorciatoie",
+    "shortcut-toggle-filterbar": "Attiva il filtro nella barra laterale",
+    "shortcut-toggle-sidebar": "Attiva la bacheca nella barra laterale",
+    "show-cards-minimum-count": "Mostra il contatore delle schede se la lista ne contiene più di",
+    "signupPopup-title": "Crea un account",
+    "star-board-title": "Clicca per stellare questa bacheca. Sarà mostrata all'inizio della tua lista bacheche.",
+    "starred-boards": "Bacheche stellate",
+    "starred-boards-description": "Le bacheche stellate vengono mostrato all'inizio della tua lista bacheche.",
+    "subscribe": "Sottoscrivi",
     "team": "Team",
-    "this-board": "this board",
-    "this-card": "this card",
-    "title": "Title",
-    "unassign-member": "Unassign member",
-    "unsaved-description": "You have an unsaved description.",
+    "this-board": "questa bacheca",
+    "this-card": "questa scheda",
+    "time": "Ora",
+    "title": "Titolo",
+    "tracking": "Monitoraggio",
+    "tracking-info": "Sarai notificato per tutte le modifiche alle schede delle quali sei creatore o membro.",
+    "unassign-member": "Rimuovi membro",
+    "unsaved-description": "Hai una descrizione non salvata",
+    "unwatch": "Non seguire",
     "upload": "Upload",
-    "upload-avatar": "Upload an avatar",
-    "uploaded-avatar": "Uploaded an avatar",
+    "upload-avatar": "Carica un avatar",
+    "uploaded-avatar": "Avatar caricato",
     "username": "Username",
-    "view-it": "View it",
-    "warn-list-archived": "warning: this card is in an archived list",
-    "what-to-do": "What do you want to do?"
-}
+    "view-it": "Vedi",
+    "warn-list-archived": "attenzione: questa scheda è in una lista archiviata",
+    "watch": "Segui",
+    "watching": "Stai seguendo",
+    "watching-info": "Sarai notificato per tutte le modifiche in questa bacheca",
+    "welcome-board": "Bacheca di benvenuto",
+    "welcome-list1": "Basi",
+    "welcome-list2": "Avanzate",
+    "what-to-do": "Cosa vuoi fare?"
+}

+ 156 - 95
i18n/ja.i18n.json

@@ -1,7 +1,27 @@
 {
-    "accept": "Accept",
+    "accept": "受け入れ",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "操作",
-    "activities": "Activities",
+    "activities": "アクティビティ",
     "activity": "アクティビティ",
     "activity-added": "%s を %s に追加しました",
     "activity-archived": "%s をアーカイブしました",
@@ -15,49 +35,55 @@
     "activity-on": "%s",
     "activity-removed": "%s を %s から削除しました",
     "activity-sent": "%s を %s に送りました",
-    "activity-unjoined": "unjoined %s",
+    "activity-unjoined": "%s への参加を止めました",
+    "activity-checklist-added": "%s にチェックリストを追加しました",
     "add": "追加",
-    "add-attachment": "Add an attachment",
+    "add-attachment": "添付ファイルの追加",
     "add-board": "ボード追加",
-    "add-card": "Add a card",
+    "add-card": "カードの追加",
+    "add-checklist": "チェックリストの追加",
+    "add-checklist-item": "チェックリストに項目を追加",
     "add-cover": "カバーの追加",
-    "add-label": "Add the label",
-    "add-list": "Add a list",
-    "add-members": "Add Members",
+    "add-label": "ラベルの追加",
+    "add-list": "リストの追加",
+    "add-members": "メンバーの追加",
     "added": "追加しました",
     "addMemberPopup-title": "メンバー",
     "admin": "管理",
     "admin-desc": "カードの閲覧と編集、メンバーの削除、ボードの設定変更が可能",
-    "all-boards": "All boards",
+    "all-boards": "全てのボード",
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "適用",
+    "app-is-offline": "現在オフラインです。ページを更新すると保存していないデータは失われます。",
     "archive": "アーカイブ",
     "archive-all": "すべてをアーカイブ",
-    "archive-board": "Archive Board",
-    "archive-card": "Archive Card",
+    "archive-board": "ボードをアーカイブ",
+    "archive-card": "カードをアーカイブ",
     "archive-list": "このリストをアーカイブ",
-    "archive-selection": "Archive selection",
-    "archiveBoardPopup-title": "Archive Board?",
+    "archive-selection": "選択したものをアーカイブ",
+    "archiveBoardPopup-title": "ボードをアーカイブしますか?",
     "archived-items": "アーカイブされたアイテム",
-    "archives": "Archives",
-    "assign-member": "Assign member",
+    "archives": "アーカイブ",
+    "assign-member": "メンバーの割当",
     "attached": "添付されました",
     "attachment": "添付ファイル",
     "attachment-delete-pop": "添付ファイルの削除をすると取り消しできません。",
     "attachmentDeletePopup-title": "添付ファイルを削除しますか?",
     "attachments": "添付ファイル",
-    "avatar-too-big": "The avatar is too large (70Kb max)",
+    "auto-watch": "作成したボードは自動的に監視する",
+    "avatar-too-big": "アバターが大きすぎます(最大70KB)",
     "back": "戻る",
-    "board-change-color": "Change color",
+    "board-change-color": "色の変更",
     "board-nb-stars": "%s stars",
     "board-not-found": "ボードが見つかりません",
     "board-private-info": "This board will be <strong>private</strong>.",
     "board-public-info": "ボードは公開されます。",
-    "boardChangeColorPopup-title": "Change Board Background",
+    "boardChangeColorPopup-title": "ボードの背景を変更",
     "boardChangeTitlePopup-title": "ボード名の変更",
     "boardChangeVisibilityPopup-title": "公開範囲の変更",
-    "boardImportBoardPopup-title": "Import board from Trello",
-    "boardMenuPopup-title": "Board Menu",
+    "boardChangeWatchPopup-title": "Change Watch",
+    "boardMenuPopup-title": "ボードメニュー",
     "boards": "ボード",
     "bucket-example": "Like “Bucket List” for example",
     "cancel": "キャンセル",
@@ -66,70 +92,81 @@
     "card-delete-notice": "削除は取り消しできません。このカードに関係するすべてのアクションがなくなります。",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
-    "card-edit-attachments": "Edit attachments",
-    "card-edit-labels": "Edit labels",
-    "card-edit-members": "Edit members",
+    "card-due": "期限",
+    "card-due-on": "Due on",
+    "card-edit-attachments": "添付ファイルの編集",
+    "card-edit-labels": "ラベルの編集",
+    "card-edit-members": "メンバーの編集",
     "card-labels-title": "カードのラベルを変更する",
     "card-members-title": "カードからボードメンバーを追加・削除する",
+    "card-start": "開始",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardDeletePopup-title": "カードを削除しますか?",
-    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardDetailsActionsPopup-title": "カード操作",
     "cardLabelsPopup-title": "ラベル",
     "cardMembersPopup-title": "メンバー",
     "cardMorePopup-title": "さらに見る",
-    "cards": "Cards",
-    "change": "Change",
+    "cards": "カード",
+    "change": "変更",
     "change-avatar": "アバターの変更",
     "change-password": "パスワードの変更",
-    "change-permissions": "Change permissions",
+    "change-permissions": "権限の変更",
+    "change-settings": "設定の変更",
     "changeAvatarPopup-title": "アバターの変更",
     "changeLanguagePopup-title": "言語の変更",
     "changePasswordPopup-title": "パスワードの変更",
     "changePermissionsPopup-title": "パーミッションの変更",
+    "changeSettingsPopup-title": "設定の変更",
+    "checklists": "チェックリスト",
     "click-to-star": "ボードにスターをつける",
     "click-to-unstar": "ボードからスターを外す",
-    "clipboard": "Clipboard or drag & drop",
+    "clipboard": "クリップボードもしくはドラッグ&ドロップ",
     "close": "閉じる",
-    "close-board": "Close Board",
+    "close-board": "ボードを閉じる",
     "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
-    "color-black": "black",
-    "color-blue": "blue",
-    "color-green": "green",
-    "color-lime": "lime",
-    "color-orange": "orange",
-    "color-pink": "pink",
-    "color-purple": "purple",
-    "color-red": "red",
-    "color-sky": "sky",
-    "color-yellow": "yellow",
+    "color-black": "",
+    "color-blue": "",
+    "color-green": "",
+    "color-lime": "ライム",
+    "color-orange": "オレンジ",
+    "color-pink": "ピンク",
+    "color-purple": "",
+    "color-red": "",
+    "color-sky": "",
+    "color-yellow": "",
     "comment": "コメント",
-    "comment-placeholder": "Write a comment",
+    "comment-placeholder": "コメントを書く",
     "computer": "コンピューター",
     "create": "作成",
     "createBoardPopup-title": "ボードの作成",
     "createLabelPopup-title": "ラベルの作成",
-    "current": "current",
-    "decline": "Decline",
-    "default-avatar": "Default avatar",
+    "current": "現在",
+    "date": "日付",
+    "decline": "拒否",
+    "default-avatar": "デフォルトのアバター",
     "delete": "削除",
     "deleteLabelPopup-title": "ラベルを削除しますか?",
     "description": "詳細",
     "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
     "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
-    "discard": "Discard",
-    "done": "Done",
+    "discard": "捨てる",
+    "done": "完了",
     "download": "ダウンロード",
     "edit": "編集",
     "edit-avatar": "アバターの変更",
-    "edit-profile": "Edit Profile",
+    "edit-profile": "プロフィールの編集",
+    "editCardStartDatePopup-title": "開始日の変更",
+    "editCardDueDatePopup-title": "期限の変更",
     "editLabelPopup-title": "ラベルの変更",
-    "editProfilePopup-title": "Edit Profile",
+    "editNotificationPopup-title": "通知の変更",
+    "editProfilePopup-title": "プロフィールの編集",
     "email": "メールアドレス",
     "email-enrollAccount-subject": "An account created for you on __siteName__",
     "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
-    "email-fail": "Sending email failed",
-    "email-invalid": "Invalid email",
-    "email-invite": "Invite via Email",
+    "email-fail": "メールの送信に失敗しました",
+    "email-invalid": "無効なメールアドレス",
+    "email-invite": "メールで招待",
     "email-invite-subject": "__inviter__ sent you an invitation",
     "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
     "email-resetPassword-subject": "Reset your password on __siteName__",
@@ -137,83 +174,95 @@
     "email-sent": "Email sent",
     "email-verifyEmail-subject": "Verify your email address on __siteName__",
     "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
-    "error-board-doesNotExist": "This board does not exist",
+    "error-board-doesNotExist": "ボードがありません",
     "error-board-notAdmin": "You need to be admin of this board to do that",
     "error-board-notAMember": "You need to be a member of this board to do that",
     "error-json-malformed": "Your text is not valid JSON",
     "error-json-schema": "Your JSON data does not include the proper information in the correct format",
     "error-list-doesNotExist": "This list does not exist",
-    "error-user-doesNotExist": "This user does not exist",
-    "error-user-notAllowSelf": "This action on self is not allowed",
-    "error-user-notCreated": "This user is not created",
-    "export-board": "Export board",
-    "filter": "Filter",
+    "error-user-doesNotExist": "ユーザーが存在しません",
+    "error-user-notAllowSelf": "この操作は許可されていません",
+    "error-user-notCreated": "ユーザーが作成されていません",
+    "error-username-taken": "このユーザ名は既に使用されています",
+    "export-board": "ボードのエクスポート",
+    "filter": "フィルター",
     "filter-cards": "カードをフィルターする",
-    "filter-clear": "Clear filter",
-    "filter-on": "Filter is on",
+    "filter-clear": "フィルターの解除",
+    "filter-no-label": "ラベルなし",
+    "filter-no-member": "メンバーなし",
+    "filter-on": "フィルター有効",
     "filter-on-desc": "このボードのカードをフィルターしています。フィルターを編集するにはこちらをクリックしてください。",
     "filter-to-selection": "Filter to selection",
     "fullname": "フルネーム",
     "header-logo-title": "自分のボードページに戻る。",
+    "hide-system-messages": "システムメッセージを隠す",
     "home": "ホーム",
-    "import": "Import",
-    "import-board": "import from Trello",
+    "import": "インポート",
+    "import-board": "Trelloからインポート",
+    "import-board-title": "Trelloからボードをインポート",
     "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-card": "Import a Trello card",
-    "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text",
     "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Map members",
     "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "情報",
     "initials": "Initials",
+    "invalid-date": "無効な日付",
     "joined": "参加しました",
     "just-invited": "You are just invited to this board",
-    "keyboard-shortcuts": "Keyboard shortcuts",
+    "keyboard-shortcuts": "キーボード・ショートカット",
     "label-create": "ラベル作成",
     "label-default": "%s ラベル(デフォルト)",
     "label-delete-pop": "この操作は取り消しできません。このラベルはすべてのカードから外され履歴からも見えなくなります。",
     "labels": "ラベル",
     "language": "言語",
     "last-admin-desc": "最低でも1人以上の管理者が必要なためロールを変更できません。",
-    "leave-board": "Leave Board",
+    "leave-board": "ボードから退出する",
     "link-card": "このカードへのリンク",
-    "list-archive-cards": "Archive all cards in this list",
+    "list-archive-cards": "リストの全カードをアーカイブする",
     "list-archive-cards-pop": "ボードのこのリスト内のすべてのカードを取り除きます。アーカイブされたカードの確認やそれをボードに戻すには、メニューをクリックし、\"アーカイブされたアイテム\"をクリックしてください。",
-    "list-move-cards": "Move all cards in this list",
-    "list-select-cards": "Select all cards in this list",
+    "list-move-cards": "リストの全カードを移動する",
+    "list-select-cards": "リストの全カードを選択",
     "listActionPopup-title": "操作一覧",
-    "listImportCardPopup-title": "Import a Trello card",
-    "lists": "Lists",
+    "listImportCardPopup-title": "Trelloのカードをインポート",
+    "lists": "リスト",
     "log-out": "ログアウト",
+    "log-in": "ログイン",
     "loginPopup-title": "ログイン",
-    "mapMembersAddPopup-title": "Select Wekan member",
-    "mapMembersPopup-title": "Map members",
-    "memberMenuPopup-title": "Member Settings",
+    "memberMenuPopup-title": "メンバー設定",
     "members": "メンバー",
     "menu": "メニュー",
     "move-selection": "Move selection",
-    "moveCardPopup-title": "Move Card",
-    "moveSelectionPopup-title": "Move selection",
-    "multi-selection": "Multi-Selection",
-    "multi-selection-on": "Multi-Selection is on",
+    "moveCardPopup-title": "カードの移動",
+    "moveCardToBottom-title": "最下部に移動",
+    "moveCardToTop-title": "先頭に移動",
+    "moveSelectionPopup-title": "選択箇所に移動",
+    "multi-selection": "複数選択",
+    "multi-selection-on": "複数選択有効",
+    "muted": "ミュート",
+    "muted-info": "このボードの変更は通知されません",
     "my-boards": "自分のボード",
     "name": "名前",
-    "no-archived-cards": "No archived cards.",
-    "no-archived-lists": "No archived lists.",
+    "no-archived-cards": "アーカイブされたボードはありません",
+    "no-archived-lists": "アーカイブされたリストはありません",
     "no-results": "該当するものはありません",
     "normal": "通常",
     "normal-desc": "カードの閲覧と編集が可能。設定変更不可。",
-    "not-accepted-yet": "Invitation not accepted yet",
+    "not-accepted-yet": "招待はアクセプトされていません",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "任意",
     "or": "or",
     "page-maybe-private": "このページはプライベートです。<a href='%s'>ログイン</a>して見てください。",
     "page-not-found": "ページが見つかりません。",
     "password": "パスワード",
     "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
-    "preview": "Preview",
-    "previewAttachedImagePopup-title": "Preview",
-    "previewClipboardImagePopup-title": "Preview",
+    "participating": "参加",
+    "preview": "プレビュー",
+    "previewAttachedImagePopup-title": "プレビュー",
+    "previewClipboardImagePopup-title": "プレビュー",
     "private": "プライベート",
     "private-desc": "このボードはプライベートです。ボードメンバーのみが閲覧・編集可能です。",
     "profile": "プロフィール",
@@ -221,10 +270,11 @@
     "public-desc": "このボードはパブリックです。リンクを知っていれば誰でもアクセス可能でGoogleのような検索エンジンの結果に表示されます。このボードに追加されている人だけがカード追加が可能です。",
     "quick-access-description": "Star a board to add a shortcut in this bar.",
     "remove-cover": "カバーの削除",
-    "remove-from-board": "Remove from Board",
-    "remove-label": "Remove the label",
+    "remove-from-board": "ボードから外す",
+    "remove-label": "ラベルを外す",
+    "remove-list": "リストの除去",
     "remove-member": "メンバーを外す",
-    "remove-member-from-card": "カードから取り除く",
+    "remove-member-from-card": "カードから外す",
     "remove-member-pop": "__boardTitle__ から __name__ (__username__) を外しますか?メンバーはこのボードのすべてのカードから外れ、通知を受けます。",
     "removeMemberPopup-title": "メンバーを外しますか?",
     "rename": "名前変更",
@@ -233,15 +283,16 @@
     "save": "保存",
     "search": "検索",
     "select-color": "色を選択",
-    "shortcut-assign-self": "Assign yourself to current card",
+    "shortcut-assign-self": "自分をこのカードに割り当てる",
     "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-members": "Autocomplete members",
-    "shortcut-clear-filters": "Clear all filters",
-    "shortcut-close-dialog": "Close Dialog",
+    "shortcut-clear-filters": "すべてのフィルターを解除する",
+    "shortcut-close-dialog": "ダイアログを閉じる",
     "shortcut-filter-my-cards": "Filter my cards",
     "shortcut-show-shortcuts": "Bring up this shortcuts list",
-    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
-    "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "shortcut-toggle-filterbar": "フィルターサイドバーの切り替え",
+    "shortcut-toggle-sidebar": "ボードサイドバーの切り替え",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "アカウント作成",
     "star-board-title": "ボードにスターをつけると自分のボード一覧のトップに表示されます。",
     "starred-boards": "スターのついたボード",
@@ -250,14 +301,24 @@
     "team": "チーム",
     "this-board": "このボード",
     "this-card": "このカード",
+    "time": "時間",
     "title": "タイトル",
+    "tracking": "トラッキング",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
-    "upload": "Upload",
-    "upload-avatar": "Upload an avatar",
-    "uploaded-avatar": "Uploaded an avatar",
+    "unwatch": "アンウォッチ",
+    "upload": "アップロード",
+    "upload-avatar": "アバターのアップロード",
+    "uploaded-avatar": "アップロードされたアバター",
     "username": "ユーザー名",
     "view-it": "View it",
     "warn-list-archived": "warning: this card is in an archived list",
-    "what-to-do": "What do you want to do?"
-}
+    "watch": "ウォッチ",
+    "watching": "ウォッチしています",
+    "watching-info": "このボードの変更が通知されます",
+    "welcome-board": "ウェルカムボード",
+    "welcome-list1": "基本",
+    "welcome-list2": "高度",
+    "what-to-do": "何をしたいですか?"
+}

+ 68 - 7
i18n/ko.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Accept",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "동작",
     "activities": "Activities",
     "activity": "활동 상태",
@@ -16,10 +36,13 @@
     "activity-removed": "%s를 %s에서 삭제함",
     "activity-sent": "%s를 %s로 보냄",
     "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "추가",
     "add-attachment": "Add an attachment",
     "add-board": "새로운 보드를 추가",
     "add-card": "Add a card",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "커버 추가",
     "add-label": "Add the label",
     "add-list": "Add a list",
@@ -31,6 +54,8 @@
     "all-boards": "All boards",
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "보관",
     "archive-all": "모두 보관",
     "archive-board": "Archive Board",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "영구 첨부파일을 삭제합니다. 되돌릴 수 없습니다.",
     "attachmentDeletePopup-title": "첨부 파일을 삭제합니까?",
     "attachments": "첨부 파일",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "The avatar is too large (70Kb max)",
     "back": "뒤로",
     "board-change-color": "Change color",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Change Board Background",
     "boardChangeTitlePopup-title": "보드 이름 바꾸기",
     "boardChangeVisibilityPopup-title": "표시 여부 변경",
-    "boardImportBoardPopup-title": "Import board from Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "Board Menu",
     "boards": "보드",
     "bucket-example": "Like “Bucket List” for example",
@@ -66,11 +92,15 @@
     "card-delete-notice": "영구 삭제입니다. 이 카드와 관련된 모든 작업들을 잃게됩니다.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Edit attachments",
     "card-edit-labels": "Edit labels",
     "card-edit-members": "Edit members",
     "card-labels-title": "카드의 라벨 변경.",
     "card-members-title": "카드에서 보드의 멤버를 추가하거나 삭제합니다.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardDeletePopup-title": "카드를 삭제합니까?",
     "cardDetailsActionsPopup-title": "Card Actions",
@@ -82,10 +112,13 @@
     "change-avatar": "아바타 변경",
     "change-password": "암호 변경",
     "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "아바타 변경",
     "changeLanguagePopup-title": "언어 변경",
     "changePasswordPopup-title": "암호 변경",
     "changePermissionsPopup-title": "권한 변경",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
     "click-to-star": "보드 별 추가.",
     "click-to-unstar": "보드 별 삭제.",
     "clipboard": "Clipboard or drag & drop",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "보드 생성",
     "createLabelPopup-title": "라벨 생성",
     "current": "current",
+    "date": "Date",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "delete": "삭제",
@@ -122,7 +156,10 @@
     "edit": "수정",
     "edit-avatar": "아바타 변경",
     "edit-profile": "Edit Profile",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "라벨 변경",
+    "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "Edit Profile",
     "email": "이메일",
     "email-enrollAccount-subject": "An account created for you on __siteName__",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "This user does not exist",
     "error-user-notAllowSelf": "This action on self is not allowed",
     "error-user-notCreated": "This user is not created",
+    "error-username-taken": "This username is already taken",
     "export-board": "Export board",
     "filter": "Filter",
     "filter-cards": "카드 필터",
     "filter-clear": "Clear filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "Filter is on",
     "filter-on-desc": "보드에서 카드를 필터링합니다. 여기를 클릭하여 필터를 수정합니다.",
     "filter-to-selection": "Filter to selection",
     "fullname": "전체 이름",
     "header-logo-title": "보드 페이지로 돌아가기.",
+    "hide-system-messages": "Hide system messages",
     "home": "홈",
     "import": "Import",
     "import-board": "import from Trello",
+    "import-board-title": "Import board from Trello",
     "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-card": "Import a Trello card",
-    "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text",
     "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Map members",
     "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "정보",
     "initials": "Initials",
+    "invalid-date": "Invalid date",
     "joined": "참가함",
     "just-invited": "You are just invited to this board",
     "keyboard-shortcuts": "Keyboard shortcuts",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "Import a Trello card",
     "lists": "Lists",
     "log-out": "로그아웃",
+    "log-in": "로그인",
     "loginPopup-title": "로그인",
-    "mapMembersAddPopup-title": "Select Wekan member",
-    "mapMembersPopup-title": "Map members",
     "memberMenuPopup-title": "Member Settings",
     "members": "멤버",
     "menu": "메뉴",
     "move-selection": "Move selection",
     "moveCardPopup-title": "Move Card",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
     "moveSelectionPopup-title": "Move selection",
     "multi-selection": "Multi-Selection",
     "multi-selection-on": "Multi-Selection is on",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "내 보드",
     "name": "이름",
     "no-archived-cards": "No archived cards.",
@@ -205,12 +251,15 @@
     "normal": "표준",
     "normal-desc": "카드를 보거나 수정할 수 있습니다. 설정값은 변경할 수 없습니다.",
     "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "옴션",
     "or": "or",
     "page-maybe-private": "이 페이지를 비공개일 수 있습니다. 이것을 보고 싶으면 <a href='%s'>로그인</a>을 하십시오.",
     "page-not-found": "페이지를 찾지 못 했습니다",
     "password": "암호",
     "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Participating",
     "preview": "Preview",
     "previewAttachedImagePopup-title": "Preview",
     "previewClipboardImagePopup-title": "Preview",
@@ -223,6 +272,7 @@
     "remove-cover": "커버 제거",
     "remove-from-board": "Remove from Board",
     "remove-label": "Remove the label",
+    "remove-list": "Remove the list",
     "remove-member": "멤버 제거",
     "remove-member-from-card": "카드에서 제거",
     "remove-member-pop": "__boardTitle__에서 __name__(__username__) 을 제거합니까? 그 멤버는 이 보드의 모든 카드에서 제거됩니다. 그에대한 알람을 받게됩니다.",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "Bring up this shortcuts list",
     "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
     "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "계정 생성",
     "star-board-title": "보드에 별을 클릭합니다. 보드 목록에서 최상위로 둘 수 있습니다.",
     "starred-boards": "별표된 보드",
@@ -250,14 +301,24 @@
     "team": "팀",
     "this-board": "보드",
     "this-card": "카드",
+    "time": "Time",
     "title": "제목",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
     "upload": "Upload",
     "upload-avatar": "Upload an avatar",
     "uploaded-avatar": "Uploaded an avatar",
     "username": "사용자 이름",
     "view-it": "View it",
     "warn-list-archived": "warning: this card is in an archived list",
-    "what-to-do": "What do you want to do?"
-}
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
+    "what-to-do": "무엇을 원하나요?"
+}

+ 68 - 7
i18n/pl.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Akceptuj",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Akcje",
     "activities": "Aktywności",
     "activity": "Aktywność",
@@ -16,10 +36,13 @@
     "activity-removed": "usunięto %s z %s",
     "activity-sent": "wysłano %s z %s",
     "activity-unjoined": "odłączono %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "Dodaj",
     "add-attachment": "Dodaj załącznik",
     "add-board": "Dodaj nową tablicę",
     "add-card": "Dodaj kartę",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "Dodaj okładkę",
     "add-label": "Dodaj etykietę",
     "add-list": "Dodaj listę",
@@ -31,6 +54,8 @@
     "all-boards": "Wszystkie tablice",
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Zarchiwizuj",
     "archive-all": "Zarchiwizuj wszystkie",
     "archive-board": "Zarchiwizuj tablicę",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "Usunięcie załącznika jest nieodwracalne.",
     "attachmentDeletePopup-title": "Usunąć załącznik?",
     "attachments": "Załączniki",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "Avatar jest za duży (maksymalnie 70Kb)",
     "back": "Wstecz",
     "board-change-color": "Zmień kolor",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Zmień tło tablicy",
     "boardChangeTitlePopup-title": "Zmień nazwę tablicy",
     "boardChangeVisibilityPopup-title": "Zmień widoczność",
-    "boardImportBoardPopup-title": "Zaimportuj tablicę z Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "Menu tablicy",
     "boards": "Tablice",
     "bucket-example": "Like “Bucket List” for example",
@@ -64,13 +90,17 @@
     "card-archived": "Ta karta jest zarchiwizowana.",
     "card-comments-title": "Ta karta ma %s komentarzy.",
     "card-delete-notice": "Usunięcie jest trwałe. Stracisz wszystkie akcje powiązane z tą kartą.",
-    "card-delete-pop": "Wszystkie akcje będą usunięte z widoku aktywności, nie można będzie ponownie otworzyć karty.  Usunięcie jest nieodwracalne. ",
+    "card-delete-pop": "Wszystkie akcje będą usunięte z widoku aktywności, nie można będzie ponownie otworzyć karty.  Usunięcie jest nieodwracalne.",
     "card-delete-suggest-archive": "Możesz zarchiwizować kartę w celu usunięcia jej z tablicy oraz zachowania jej aktywności.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Edytuj załączniki",
     "card-edit-labels": "Edytuj etykiety",
     "card-edit-members": "Edytuj członków",
     "card-labels-title": "Zmień etykiety karty",
     "card-members-title": "Dodaj lub usuń członków tablicy z karty.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Załącz z",
     "cardDeletePopup-title": "Usunąć kartę?",
     "cardDetailsActionsPopup-title": "Card Actions",
@@ -82,10 +112,13 @@
     "change-avatar": "Zmień Avatar",
     "change-password": "Zmień hasło",
     "change-permissions": "Zmień uprawnienia",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "Zmień Avatar",
     "changeLanguagePopup-title": "Zmień język",
     "changePasswordPopup-title": "Zmień hasło",
     "changePermissionsPopup-title": "Zmień uprawnienia",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
     "click-to-star": "Kliknij by odznaczyć tę tablicę.",
     "click-to-unstar": "Kliknij by usunąć odznaczenie tej tablicy.",
     "clipboard": "Schowek lub przeciągnij & upuść",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "Utwórz tablicę",
     "createLabelPopup-title": "Utwórz etykietę",
     "current": "obecny",
+    "date": "Date",
     "decline": "Odrzuć",
     "default-avatar": "Domyślny avatar",
     "delete": "Usuń",
@@ -122,7 +156,10 @@
     "edit": "Edytuj",
     "edit-avatar": "Zmień Avatar",
     "edit-profile": "Edytuj profil",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "Zmień etykietę",
+    "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "Edytuj profil",
     "email": "Email",
     "email-enrollAccount-subject": "Konto zostało utworzone na __siteName__",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "Ten użytkownik nie istnieje",
     "error-user-notAllowSelf": "Ta akcje nie jest dozwolona",
     "error-user-notCreated": "Ten użytkownik nie został stworzony",
+    "error-username-taken": "This username is already taken",
     "export-board": "Eksportuj tablicę",
     "filter": "Filtr",
     "filter-cards": "Odfiltruj karty",
     "filter-clear": "Usuń filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "Filtr jest włączony",
     "filter-on-desc": "Filtrujesz karty na tej tablicy. Kliknij tutaj by edytować filtr.",
     "filter-to-selection": "Odfiltruj zaznaczenie",
     "fullname": "Full Name",
     "header-logo-title": "Wróć do swojej strony z tablicami.",
+    "hide-system-messages": "Hide system messages",
     "home": "Strona główna",
     "import": "Importu",
     "import-board": "zaimportuj z Trello",
+    "import-board-title": "Import board from Trello",
     "import-board-trello-instruction": "W twojej tablicy na Trello, idź do 'Menu', następnie 'More', 'Print and Export', 'Export JSON' i skopiuj wynik",
-    "import-card": "Zaimportuj kartę z Trello",
-    "import-card-trello-instruction": "Idź do karty Trello, wybierz 'Share and more...', następnie 'Export JSON' i skopiuj wynik",
     "import-json-placeholder": "Wklej twój JSON tutaj",
+    "import-map-members": "Map members",
     "import-members-map": "Twoje zaimportowane tablice mają kilku członków. Proszę wybierz członków których chcesz zaimportować do Wekan",
     "import-show-user-mapping": "Przejrzyj wybranych członków",
     "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "Informacje",
     "initials": "Initials",
+    "invalid-date": "Invalid date",
     "joined": "dołączył",
     "just-invited": "Właśnie zostałeś zaproszony do tej tablicy",
     "keyboard-shortcuts": "Skróty klawiaturowe",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "Zaimportuj kartę z Trello",
     "lists": "Listy",
     "log-out": "Wyloguj",
+    "log-in": "Zaloguj",
     "loginPopup-title": "Zaloguj",
-    "mapMembersAddPopup-title": "Wybierz członka Wekan",
-    "mapMembersPopup-title": "Map members",
     "memberMenuPopup-title": "Member Settings",
     "members": "Członkowie",
     "menu": "Menu",
     "move-selection": "Przenieś zaznaczone",
     "moveCardPopup-title": "Przenieś kartę",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
     "moveSelectionPopup-title": "Przenieś zaznaczone",
     "multi-selection": "Wielokrotne zaznaczenie",
     "multi-selection-on": "Wielokrotne zaznaczenie jest włączone",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "Moje tablice",
     "name": "Nazwa",
     "no-archived-cards": "Brak zarchiwizowanych kart.",
@@ -205,12 +251,15 @@
     "normal": "Normal",
     "normal-desc": "Może widzieć i edytować karty. Nie może zmieniać ustawiań.",
     "not-accepted-yet": "Zaproszenie jeszcze nie zaakceptowane",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "opcjonalny",
     "or": "lub",
     "page-maybe-private": "Ta strona może być prywatna. Możliwe, że możesz ją zobaczyć po <a href='%s'>zalogowaniu</a>.",
     "page-not-found": "Strona nie znaleziona.",
     "password": "Hasło",
     "paste-or-dragdrop": "wklej lub przeciągnij & upuść obrazek",
+    "participating": "Participating",
     "preview": "Podgląd",
     "previewAttachedImagePopup-title": "Podgląd",
     "previewClipboardImagePopup-title": "Podgląd",
@@ -223,6 +272,7 @@
     "remove-cover": "Usuń okładkę",
     "remove-from-board": "Usuń z tablicy",
     "remove-label": "Usuń etykietę",
+    "remove-list": "Remove the list",
     "remove-member": "Usuń członka",
     "remove-member-from-card": "Usuń z karty",
     "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
@@ -234,7 +284,7 @@
     "search": "Wyszukaj",
     "select-color": "Wybierz kolor",
     "shortcut-assign-self": "Przypisz siebie do obecnej karty",
-    "shortcut-autocomplete-emojies": "Autocomplete emojies",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-members": "Autocomplete members",
     "shortcut-clear-filters": "Usuń wszystkie filtry",
     "shortcut-close-dialog": "Zamknij okno",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "Przypnij do listy skrótów",
     "shortcut-toggle-filterbar": "Przełącz boczny pasek filtru",
     "shortcut-toggle-sidebar": "Przełącz boczny pasek tablicy",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Utwórz konto",
     "star-board-title": "Click to star this board. It will show up at top of your boards list.",
     "starred-boards": "Odznaczone tablice",
@@ -250,14 +301,24 @@
     "team": "Zespół",
     "this-board": "ta tablica",
     "this-card": "ta karta",
+    "time": "Time",
     "title": "Tytuł",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Nieprzypisany członek",
     "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
     "upload": "Wyślij",
     "upload-avatar": "Wyślij avatar",
     "uploaded-avatar": "Wysłany avatar",
     "username": "Nazwa użytkownika",
     "view-it": "Zobacz",
     "warn-list-archived": "ostrzeżenie: ta karta jest na zarchiwizowanej liście",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "Co chcesz zrobić?"
 }

+ 67 - 6
i18n/pt-BR.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Aceitar",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Ações",
     "activities": "Atividades",
     "activity": "Atividade",
@@ -16,10 +36,13 @@
     "activity-removed": "removeu %s de %s",
     "activity-sent": "enviou %s de %s",
     "activity-unjoined": "saiu de %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "Novo",
     "add-attachment": "Adicionar um anexo",
     "add-board": "Criar um quadro novo",
     "add-card": "Adicionar um cartão",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "Adicionar Capa",
     "add-label": "Adicionar a Etiqueta",
     "add-list": "Adicionar uma lista",
@@ -31,6 +54,8 @@
     "all-boards": "Todos os quadros",
     "and-n-other-card": "E __count__ outro cartão",
     "and-n-other-card_plural": "E __count__ outros cartões",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Arquivar",
     "archive-all": "Arquivar Tudo",
     "archive-board": "Arquivar Quadro",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "Excluir um anexo é permanente. Não será possível recuperá-lo.",
     "attachmentDeletePopup-title": "Excluir Anexo?",
     "attachments": "Anexos",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "Imagem de avatar muito grande (máx 70KB)",
     "back": "Voltar",
     "board-change-color": "Alterar cor",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Alterar Tela de Fundo",
     "boardChangeTitlePopup-title": "Renomear Quadro",
     "boardChangeVisibilityPopup-title": "Alterar Visibilidade",
-    "boardImportBoardPopup-title": "Importar quadro do Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "Menu do Quadro",
     "boards": "Quadros",
     "bucket-example": "\"Bucket List\", por exemplo",
@@ -66,11 +92,15 @@
     "card-delete-notice": "A exclusão será permanente. Você perderá todas as ações associadas a este cartão.",
     "card-delete-pop": "Todas as ações serão removidas da lista de Atividades e vocês não poderá re-abrir o cartão. Não há como desfazer.",
     "card-delete-suggest-archive": "Você pode arquivar um cartão para removê-lo do quadro e preservar suas atividades.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Editar anexos",
     "card-edit-labels": "Editar etiquetas",
     "card-edit-members": "Editar membros",
     "card-labels-title": "Alterar etiquetas do cartão.",
     "card-members-title": "Acrescentar ou remover membros do quadro deste cartão.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Anexar a partir de",
     "cardDeletePopup-title": "Excluir Cartão?",
     "cardDetailsActionsPopup-title": "Ações do cartão",
@@ -82,10 +112,13 @@
     "change-avatar": "Alterar Avatar",
     "change-password": "Alterar Senha",
     "change-permissions": "Alterar permissões",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "Alterar Avatar",
     "changeLanguagePopup-title": "Alterar Idioma",
     "changePasswordPopup-title": "Alterar Senha",
     "changePermissionsPopup-title": "Alterar Permissões",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
     "click-to-star": "Marcar quadro como favorito.",
     "click-to-unstar": "Remover quadro dos favoritos.",
     "clipboard": "Área de Transferência ou arraste e solte",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "Criar Quadro",
     "createLabelPopup-title": "Criar Etiqueta",
     "current": "atual",
+    "date": "Date",
     "decline": "Rejeitar",
     "default-avatar": "Avatar padrão",
     "delete": "Excluir",
@@ -122,7 +156,10 @@
     "edit": "Editar",
     "edit-avatar": "Alterar Avatar",
     "edit-profile": "Editar Perfil",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "Alterar Etiqueta",
+    "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "Editar Perfil",
     "email": "E-mail",
     "email-enrollAccount-subject": "Uma conta foi criada para você em __siteName__",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "Este usuário não existe",
     "error-user-notAllowSelf": "Esta ação em você mesmo não é permitida",
     "error-user-notCreated": "Este usuário não foi criado",
+    "error-username-taken": "This username is already taken",
     "export-board": "Exportar quadro",
     "filter": "Filtrar",
     "filter-cards": "Filtrar Cartões",
     "filter-clear": "Limpar filtro",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "Filtro está ativo",
     "filter-on-desc": "Você está filtrando cartões neste quadro. Clique aqui para editar o filtro.",
     "filter-to-selection": "Filtrar esta seleção",
     "fullname": "Nome Completo",
     "header-logo-title": "Voltar para a lista de quadros.",
+    "hide-system-messages": "Hide system messages",
     "home": "Início",
     "import": "Importar",
     "import-board": "Importar do Trello",
+    "import-board-title": "Import board from Trello",
     "import-board-trello-instruction": "No seu quadro do Trello, vá em 'Menu', depois em 'Mais', 'Imprimir e Exportar', 'Exportar JSON', então copie o texto emitido",
-    "import-card": "Importe um cartão do Trello",
-    "import-card-trello-instruction": "Vá para um cartão do Trello, selecione 'Compartilhar e mais...' então 'Exporte JSON' e copie o texto resultante",
     "import-json-placeholder": "Cole seus dados JSON válidos aqui",
+    "import-map-members": "Map members",
     "import-members-map": "O seu quadro importado tem alguns membros. Por favor determine os membros que você deseja importar para os usuários Wekan",
     "import-show-user-mapping": "Revisar mapeamento dos membros",
     "import-user-select": "Selecione o usuário Wekan que você gostaria de usar como este membro",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "Informações",
     "initials": "Iniciais",
+    "invalid-date": "Invalid date",
     "joined": "juntou-se",
     "just-invited": "Você já foi convidado para este quadro",
     "keyboard-shortcuts": "Atalhos do teclado",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "Importe um cartão do Trello",
     "lists": "Listas",
     "log-out": "Sair",
+    "log-in": "Entrar",
     "loginPopup-title": "Entrar",
-    "mapMembersAddPopup-title": "Selecione um membro Wekan",
-    "mapMembersPopup-title": "Mapear membros",
     "memberMenuPopup-title": "Configuração de Membros",
     "members": "Membros",
     "menu": "Menu",
     "move-selection": "Mover seleção",
     "moveCardPopup-title": "Mover Cartão",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
     "moveSelectionPopup-title": "Mover seleção",
     "multi-selection": "Multi-Seleção",
     "multi-selection-on": "Multi-seleção está ativo",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "Meus Quadros",
     "name": "Nome",
     "no-archived-cards": "Nenhum cartão arquivado",
@@ -205,12 +251,15 @@
     "normal": "Normal",
     "normal-desc": "Pode ver e editar cartões. Não pode alterar configurações.",
     "not-accepted-yet": "Convite ainda não aceito",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "opcional",
     "or": "ou",
     "page-maybe-private": "Esta página pode ser privada. Você poderá vê-la se estiver <a href='%s'>logado</a>.",
     "page-not-found": "Página não encontrada.",
     "password": "Senha",
     "paste-or-dragdrop": "para colar, ou arraste e solte o arquivo da imagem para ca (somente imagens)",
+    "participating": "Participating",
     "preview": "Previsualizar",
     "previewAttachedImagePopup-title": "Previsualizar",
     "previewClipboardImagePopup-title": "Previsualizar",
@@ -223,6 +272,7 @@
     "remove-cover": "Remover Capa",
     "remove-from-board": "Remover do Quadro",
     "remove-label": "Remover Etiqueta",
+    "remove-list": "Remove the list",
     "remove-member": "Remover Membro",
     "remove-member-from-card": "Remover do Cartão",
     "remove-member-pop": "Remover __name__ (__username__) de __boardTitle__? O membro será removido de todos os cartões neste quadro e será notificado.",
@@ -234,7 +284,7 @@
     "search": "Buscar",
     "select-color": "Selecione uma cor",
     "shortcut-assign-self": "Atribuir a si o cartão atual",
-    "shortcut-autocomplete-emojies": "Preenchimento automático de emojies",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-members": "Preenchimento automático de membros",
     "shortcut-clear-filters": "Limpar todos filtros",
     "shortcut-close-dialog": "Fechar dialogo",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "Mostrar lista de atalhos",
     "shortcut-toggle-filterbar": "Alternar barra de filtro",
     "shortcut-toggle-sidebar": "Fechar barra lateral.",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Criar uma Conta",
     "star-board-title": "Clique para marcar este quadro como favorito. Ele aparecerá no topo na lista dos seus quadros.",
     "starred-boards": "Quadros Favoritos",
@@ -250,14 +301,24 @@
     "team": "Equipe",
     "this-board": "este quadro",
     "this-card": "este cartão",
+    "time": "Time",
     "title": "Título",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Membro não associado",
     "unsaved-description": "Você possui uma descrição não salva",
+    "unwatch": "Unwatch",
     "upload": "Upload",
     "upload-avatar": "Carregar um avatar",
     "uploaded-avatar": "Avatar carregado",
     "username": "Nome de usuário",
     "view-it": "Visualizar",
     "warn-list-archived": "aviso: este cartão está em uma lista arquivada",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "O que você gostaria de fazer?"
 }

+ 324 - 0
i18n/ro.i18n.json

@@ -0,0 +1,324 @@
+{
+    "accept": "Accept",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
+    "actions": "Actions",
+    "activities": "Activities",
+    "activity": "Activity",
+    "activity-added": "added %s to %s",
+    "activity-archived": "archived %s",
+    "activity-attached": "attached %s to %s",
+    "activity-created": "created %s",
+    "activity-excluded": "excluded %s from %s",
+    "activity-imported": "imported %s into %s from %s",
+    "activity-imported-board": "imported %s from %s",
+    "activity-joined": "joined %s",
+    "activity-moved": "moved %s from %s to %s",
+    "activity-on": "on %s",
+    "activity-removed": "removed %s from %s",
+    "activity-sent": "sent %s to %s",
+    "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
+    "add": "Add",
+    "add-attachment": "Add an attachment",
+    "add-board": "Add a new board",
+    "add-card": "Add a card",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
+    "add-cover": "Add Cover",
+    "add-label": "Add the label",
+    "add-list": "Add a list",
+    "add-members": "Add Members",
+    "added": "Added",
+    "addMemberPopup-title": "Members",
+    "admin": "Admin",
+    "admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
+    "all-boards": "All boards",
+    "and-n-other-card": "And __count__ other card",
+    "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
+    "archive": "Archive",
+    "archive-all": "Archive All",
+    "archive-board": "Archive Board",
+    "archive-card": "Archive Card",
+    "archive-list": "Archive this list",
+    "archive-selection": "Archive selection",
+    "archiveBoardPopup-title": "Archive Board?",
+    "archived-items": "Archived Items",
+    "archives": "Arhive",
+    "assign-member": "Assign member",
+    "attached": "attached",
+    "attachment": "Ataşament",
+    "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
+    "attachmentDeletePopup-title": "Delete Attachment?",
+    "attachments": "Ataşamente",
+    "auto-watch": "Automatically watch boards when create it",
+    "avatar-too-big": "The avatar is too large (70Kb max)",
+    "back": "Înapoi",
+    "board-change-color": "Change color",
+    "board-nb-stars": "%s stars",
+    "board-not-found": "Board not found",
+    "board-private-info": "This board will be <strong>private</strong>.",
+    "board-public-info": "This board will be <strong>public</strong>.",
+    "boardChangeColorPopup-title": "Change Board Background",
+    "boardChangeTitlePopup-title": "Rename Board",
+    "boardChangeVisibilityPopup-title": "Change Visibility",
+    "boardChangeWatchPopup-title": "Change Watch",
+    "boardMenuPopup-title": "Board Menu",
+    "boards": "Boards",
+    "bucket-example": "Like “Bucket List” for example",
+    "cancel": "Cancel",
+    "card-archived": "This card is archived.",
+    "card-comments-title": "This card has %s comment.",
+    "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
+    "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
+    "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
+    "card-edit-attachments": "Edit attachments",
+    "card-edit-labels": "Edit labels",
+    "card-edit-members": "Edit members",
+    "card-labels-title": "Change the labels for the card.",
+    "card-members-title": "Add or remove members of the board from the card.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
+    "cardAttachmentsPopup-title": "Attach From",
+    "cardDeletePopup-title": "Delete Card?",
+    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardLabelsPopup-title": "Labels",
+    "cardMembersPopup-title": "Members",
+    "cardMorePopup-title": "More",
+    "cards": "Cards",
+    "change": "Change",
+    "change-avatar": "Change Avatar",
+    "change-password": "Change Password",
+    "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
+    "changeAvatarPopup-title": "Change Avatar",
+    "changeLanguagePopup-title": "Change Language",
+    "changePasswordPopup-title": "Change Password",
+    "changePermissionsPopup-title": "Change Permissions",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
+    "click-to-star": "Click to star this board.",
+    "click-to-unstar": "Click to unstar this board.",
+    "clipboard": "Clipboard or drag & drop",
+    "close": "Închide",
+    "close-board": "Close Board",
+    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
+    "color-black": "black",
+    "color-blue": "blue",
+    "color-green": "green",
+    "color-lime": "lime",
+    "color-orange": "orange",
+    "color-pink": "pink",
+    "color-purple": "purple",
+    "color-red": "red",
+    "color-sky": "sky",
+    "color-yellow": "yellow",
+    "comment": "Comment",
+    "comment-placeholder": "Write a comment",
+    "computer": "Computer",
+    "create": "Create",
+    "createBoardPopup-title": "Create Board",
+    "createLabelPopup-title": "Create Label",
+    "current": "current",
+    "date": "Date",
+    "decline": "Decline",
+    "default-avatar": "Default avatar",
+    "delete": "Delete",
+    "deleteLabelPopup-title": "Delete Label?",
+    "description": "Description",
+    "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+    "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+    "discard": "Discard",
+    "done": "Done",
+    "download": "Download",
+    "edit": "Edit",
+    "edit-avatar": "Change Avatar",
+    "edit-profile": "Edit Profile",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
+    "editLabelPopup-title": "Change Label",
+    "editNotificationPopup-title": "Edit Notification",
+    "editProfilePopup-title": "Edit Profile",
+    "email": "Email",
+    "email-enrollAccount-subject": "An account created for you on __siteName__",
+    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-fail": "Sending email failed",
+    "email-invalid": "Invalid email",
+    "email-invite": "Invite via Email",
+    "email-invite-subject": "__inviter__ sent you an invitation",
+    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
+    "email-resetPassword-subject": "Reset your password on __siteName__",
+    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-sent": "Email sent",
+    "email-verifyEmail-subject": "Verify your email address on __siteName__",
+    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
+    "error-board-doesNotExist": "This board does not exist",
+    "error-board-notAdmin": "You need to be admin of this board to do that",
+    "error-board-notAMember": "You need to be a member of this board to do that",
+    "error-json-malformed": "Your text is not valid JSON",
+    "error-json-schema": "Your JSON data does not include the proper information in the correct format",
+    "error-list-doesNotExist": "This list does not exist",
+    "error-user-doesNotExist": "This user does not exist",
+    "error-user-notAllowSelf": "This action on self is not allowed",
+    "error-user-notCreated": "This user is not created",
+    "error-username-taken": "This username is already taken",
+    "export-board": "Export board",
+    "filter": "Filter",
+    "filter-cards": "Filter Cards",
+    "filter-clear": "Clear filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
+    "filter-on": "Filter is on",
+    "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+    "filter-to-selection": "Filter to selection",
+    "fullname": "Full Name",
+    "header-logo-title": "Go back to your boards page.",
+    "hide-system-messages": "Hide system messages",
+    "home": "Home",
+    "import": "Import",
+    "import-board": "import from Trello",
+    "import-board-title": "Import board from Trello",
+    "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
+    "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Map members",
+    "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
+    "import-show-user-mapping": "Review members mapping",
+    "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
+    "info": "Infos",
+    "initials": "Iniţiale",
+    "invalid-date": "Invalid date",
+    "joined": "joined",
+    "just-invited": "You are just invited to this board",
+    "keyboard-shortcuts": "Keyboard shortcuts",
+    "label-create": "Create a new label",
+    "label-default": "%s label (default)",
+    "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
+    "labels": "Labels",
+    "language": "Language",
+    "last-admin-desc": "You can’t change roles because there must be at least one admin.",
+    "leave-board": "Leave Board",
+    "link-card": "Link to this card",
+    "list-archive-cards": "Archive all cards in this list",
+    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
+    "list-move-cards": "Move all cards in this list",
+    "list-select-cards": "Select all cards in this list",
+    "listActionPopup-title": "List Actions",
+    "listImportCardPopup-title": "Import a Trello card",
+    "lists": "Liste",
+    "log-out": "Log Out",
+    "log-in": "Log In",
+    "loginPopup-title": "Log In",
+    "memberMenuPopup-title": "Member Settings",
+    "members": "Members",
+    "menu": "Meniu",
+    "move-selection": "Move selection",
+    "moveCardPopup-title": "Move Card",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
+    "moveSelectionPopup-title": "Move selection",
+    "multi-selection": "Multi-Selection",
+    "multi-selection-on": "Multi-Selection is on",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
+    "my-boards": "My Boards",
+    "name": "Nume",
+    "no-archived-cards": "No archived cards.",
+    "no-archived-lists": "No archived lists.",
+    "no-results": "No results",
+    "normal": "Normal",
+    "normal-desc": "Can view and edit cards. Can't change settings.",
+    "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+    "optional": "optional",
+    "or": "or",
+    "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
+    "page-not-found": "Page not found.",
+    "password": "Parolă",
+    "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Participating",
+    "preview": "Preview",
+    "previewAttachedImagePopup-title": "Preview",
+    "previewClipboardImagePopup-title": "Preview",
+    "private": "Privat",
+    "private-desc": "This board is private. Only people added to the board can view and edit it.",
+    "profile": "Profil",
+    "public": "Public",
+    "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
+    "quick-access-description": "Star a board to add a shortcut in this bar.",
+    "remove-cover": "Remove Cover",
+    "remove-from-board": "Remove from Board",
+    "remove-label": "Remove the label",
+    "remove-list": "Remove the list",
+    "remove-member": "Remove Member",
+    "remove-member-from-card": "Remove from Card",
+    "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
+    "removeMemberPopup-title": "Remove Member?",
+    "rename": "Rename",
+    "rename-board": "Rename Board",
+    "restore": "Restore",
+    "save": "Salvează",
+    "search": "Caută",
+    "select-color": "Select a color",
+    "shortcut-assign-self": "Assign yourself to current card",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
+    "shortcut-autocomplete-members": "Autocomplete members",
+    "shortcut-clear-filters": "Clear all filters",
+    "shortcut-close-dialog": "Close Dialog",
+    "shortcut-filter-my-cards": "Filter my cards",
+    "shortcut-show-shortcuts": "Bring up this shortcuts list",
+    "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
+    "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
+    "signupPopup-title": "Create an Account",
+    "star-board-title": "Click to star this board. It will show up at top of your boards list.",
+    "starred-boards": "Starred Boards",
+    "starred-boards-description": "Starred boards show up at the top of your boards list.",
+    "subscribe": "Subscribe",
+    "team": "Team",
+    "this-board": "this board",
+    "this-card": "this card",
+    "time": "Time",
+    "title": "Titlu",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "unassign-member": "Unassign member",
+    "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
+    "upload": "Upload",
+    "upload-avatar": "Upload an avatar",
+    "uploaded-avatar": "Uploaded an avatar",
+    "username": "Username",
+    "view-it": "View it",
+    "warn-list-archived": "warning: this card is in an archived list",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
+    "what-to-do": "Ce ai vrea sa faci?"
+}

+ 80 - 16
i18n/ru.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Принять",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "Действия",
     "activities": "История действия",
     "activity": "Активность",
@@ -16,10 +36,13 @@
     "activity-removed": "удалено %s из %s",
     "activity-sent": "отправлено %s в %s",
     "activity-unjoined": "вышел из %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "Создать",
     "add-attachment": "Добавить вложение",
     "add-board": "Создать новую доску",
     "add-card": "Добавить карточку",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "Прикрепить",
     "add-label": "Добавить метку",
     "add-list": "Добавить список",
@@ -31,6 +54,8 @@
     "all-boards": "Все доски",
     "and-n-other-card": "И __count__ другая карточка",
     "and-n-other-card_plural": "И __count__ другие карточки",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Архивировать",
     "archive-all": "Архивировать все",
     "archive-board": "Архивировать доску",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "Если удалить вложение, его нельзя будет восстановить.",
     "attachmentDeletePopup-title": "Удалить вложение?",
     "attachments": "Вложения",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "Аватар слишком большой (максимум 70кб)",
     "back": "Назад",
     "board-change-color": "Изменить цвет",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Изменить фон доски",
     "boardChangeTitlePopup-title": "Переименовать доску",
     "boardChangeVisibilityPopup-title": "Изменить настройки видимости",
-    "boardImportBoardPopup-title": "Импортировать доску с Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "Меню доски",
     "boards": "Доски",
     "bucket-example": "Например “Список дел”",
@@ -66,11 +92,15 @@
     "card-delete-notice": "Это действие невозможно будет отменить. Все изменения, которые вы вносили в карточку будут потеряны.",
     "card-delete-pop": "Все действия будут удалены из ленты активности и вы не сможете заново открыть карточку. Действие необратимо",
     "card-delete-suggest-archive": "Вы можете заархивировать карточку, чтобы удалить ее с доски и сохранить активность .",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Изменить вложения",
     "card-edit-labels": "Изменить метку",
     "card-edit-members": "Изменить пользователей",
     "card-labels-title": "Редактировать метки.",
     "card-members-title": "Добавить или удалить участника.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Прикрепить из",
     "cardDeletePopup-title": "Удалить карточку?",
     "cardDetailsActionsPopup-title": "Действия в карточке",
@@ -82,26 +112,29 @@
     "change-avatar": "Изменить аватар",
     "change-password": "Изменить пароль",
     "change-permissions": "Изменить права доступа",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "Изменить аватар",
     "changeLanguagePopup-title": "Сменить язык",
     "changePasswordPopup-title": "Изменить пароль",
     "changePermissionsPopup-title": "Изменить настройки доступа",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
     "click-to-star": "Добавить в  «Избранное»",
     "click-to-unstar": "Удалить из «Избранного»",
     "clipboard": "Буфер обмена или drag & drop",
     "close": "Закрыть",
     "close-board": "Закрыть доску",
     "close-board-pop": "Вы можете восстановить доску, нажав  “Архивы” в заголовке.",
+    "color-black": "черный",
+    "color-blue": "синий",
     "color-green": "зеленый",
-    "color-yellow": "желтый",
+    "color-lime": "лимоновый",
     "color-orange": "оранджевый",
-    "color-red": "красный",
+    "color-pink": "зорозвый",
     "color-purple": "фиолетовый",
-    "color-blue": "синий",
+    "color-red": "красный",
     "color-sky": "голубой",
-    "color-lime": "лимоновый",
-    "color-pink": "зорозвый",
-    "color-black": "черный",
+    "color-yellow": "желтый",
     "comment": "Отправить",
     "comment-placeholder": "Написать комментарий",
     "computer": "Загрузить с компьютера",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "Создать доску",
     "createLabelPopup-title": "Создать метку",
     "current": "Текущий",
+    "date": "Date",
     "decline": "Понизить",
     "default-avatar": "Стандартный аватар",
     "delete": "Удалить",
@@ -122,7 +156,10 @@
     "edit": "Редактировать",
     "edit-avatar": "Изменить аватар",
     "edit-profile": "Изменить профиль",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "Редактирование метки",
+    "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "Изменить профиль",
     "email": "Эл.почта",
     "email-enrollAccount-subject": "Аккаунт создан для вас здесь __url__",
@@ -134,9 +171,9 @@
     "email-invite-text": "Дорогой __user__,\n\n__inviter__ пригласил вас на доску \"__board__\" для сотрудничества.\n\nПожайлуйста проследуйте по ссылке:\n\n__url__\n\nСпасибо.",
     "email-resetPassword-subject": "Перейдите по ссылке, чтобы сбросить пароль __url__",
     "email-resetPassword-text": "Привет __user__,\n\nДля сброса пароля перейдите по ссылке.\n\n__url__\n\nThanks.",
+    "email-sent": "Email отправлен",
     "email-verifyEmail-subject": "Подтвердите Email перейдя по ссылке __url__",
     "email-verifyEmail-text": "Привет __user__,\n\nДля подтверждения Email перейдите по ссылке.\n\n__url__\n\nСпасибо.",
-    "email-sent": "Email отправлен",
     "error-board-doesNotExist": "Доска не найдена",
     "error-board-notAdmin": "Вы должны обладать правами админстратора, чтобы сделать это",
     "error-board-notAMember": "Вы должны быть пользователем доски, чтобы сделать это",
@@ -146,26 +183,33 @@
     "error-user-doesNotExist": "Пользователь не найден",
     "error-user-notAllowSelf": "Нельзя выполнить это действие на себе",
     "error-user-notCreated": "Пользователь не создан",
+    "error-username-taken": "This username is already taken",
+    "export-board": "Export board",
     "filter": "Фильтр",
     "filter-cards": "Фильтр карточек",
     "filter-clear": "Очистить фильтр",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "Filter is on",
     "filter-on-desc": "Показываются карточки, соответствующие настройкам фильтра. Нажмите для редактирования.",
     "filter-to-selection": "Filter to selection",
     "fullname": "Полное имя",
     "header-logo-title": "Вернуться к доскам.",
+    "hide-system-messages": "Hide system messages",
     "home": "Главная",
     "import": "Импорт",
     "import-board": "Импорт с Trello",
+    "import-board-title": "Import board from Trello",
     "import-board-trello-instruction": "На вашей Trello доске нажмите “Menu” - “More” - “Print and export - “Export JSON” и скопируйте полученный текст",
-    "import-card": "Импортировать карточку Trello",
-    "import-card-trello-instruction": "Перейдите в карточку Trello, выбирите “Share and more” - “Export JSON” и скопируйте полученный текст",
     "import-json-placeholder": "Вставьте JSON сюда",
-    "import-members-map": "Вы ипортировали доску с пользователями. Пожалуйста, составьте карту пользователей, которых вы хотите импортировать в Wekan пользователей ",
+    "import-map-members": "Map members",
+    "import-members-map": "Вы ипортировали доску с пользователями. Пожалуйста, составьте карту пользователей, которых вы хотите импортировать в Wekan пользователей",
     "import-show-user-mapping": "Пересмотреть карту пользователей",
     "import-user-select": "Выберите Wekan-пользователя, которого вы хотите использовать в качестве пользователя",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "Информация",
     "initials": "Инициалы",
+    "invalid-date": "Invalid date",
     "joined": "вступил",
     "just-invited": "Вы только пригласили на эту доску",
     "keyboard-shortcuts": "Сочетания клавиш",
@@ -185,15 +229,20 @@
     "listImportCardPopup-title": "Импортировать Trello карточку",
     "lists": "Списки",
     "log-out": "Выйти",
+    "log-in": "Войти",
     "loginPopup-title": "Войти",
-    "mapMembersPopup-title": "Карта пользователей",
-    "mapMembersAddPopup-title": "Выбрать Wekan пользователя",
     "memberMenuPopup-title": "Настройки пользователя",
     "members": "Участники",
     "menu": "Меню",
+    "move-selection": "Move selection",
     "moveCardPopup-title": "Переместить карточку",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
+    "moveSelectionPopup-title": "Move selection",
     "multi-selection": "Выбрать несколько",
     "multi-selection-on": "Выбрать несколько из",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "Мои доски",
     "name": "Имя",
     "no-archived-cards": "Нет карточек в архиве.",
@@ -202,15 +251,18 @@
     "normal": "Обычный",
     "normal-desc": "Может редактировать карточки. Не может управлять настройками.",
     "not-accepted-yet": "Приглашение еще не принято",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "не обязательно",
     "or": "или",
     "page-maybe-private": "Возможно, эта страница скрыта от незарегистрированных пользователей. Попробуйте <a href='%s'>войти на сайт</a>.",
     "page-not-found": "Страница не найдена.",
     "password": "Пароль",
     "paste-or-dragdrop": "вставьте, или перетащите файл с изображением сюда (только графический фай)",
+    "participating": "Participating",
     "preview": "Предпросмотр",
-    "previewClipboardImagePopup-title": "Предпросмотр",
     "previewAttachedImagePopup-title": "Предпросмотр",
+    "previewClipboardImagePopup-title": "Предпросмотр",
     "private": "Закрытая",
     "private-desc": "Эта доска с ограниченным доступом. Только участники могут работать с ней.",
     "profile": "Профиль",
@@ -220,6 +272,7 @@
     "remove-cover": "Открепить",
     "remove-from-board": "Удалить с доски",
     "remove-label": "Удалить метку",
+    "remove-list": "Remove the list",
     "remove-member": "Удалить участника",
     "remove-member-from-card": "Удалить из карточки",
     "remove-member-pop": "Удалить участника __name__ (__username__) из доски __boardTitle__? Участник будет удален из всех карточек. Также он получит уведомление о совершаемом действии.",
@@ -239,22 +292,33 @@
     "shortcut-show-shortcuts": "Поднять список ярлыков",
     "shortcut-toggle-filterbar": "Переместить фильтр на бововую панель",
     "shortcut-toggle-sidebar": "Переместить доску на боковую панель",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Создать учетную запись",
     "star-board-title": "Добавить в «Избранное». Эта доска будет всегда на виду.",
     "starred-boards": "Добавленные в «Избранное»",
-    "starred-boards-description": "",
+    "starred-boards-description": "Starred boards show up at the top of your boards list.",
     "subscribe": "Подписаться",
     "team": "Участники",
     "this-board": "эту доску",
     "this-card": "текущая карточка",
+    "time": "Time",
     "title": "Название",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Отменить назначение пользователя",
     "unsaved-description": "У вас есть несохраненное описание.",
+    "unwatch": "Unwatch",
     "upload": "Загрзуить",
     "upload-avatar": "Загрузить аватар",
     "uploaded-avatar": "Загруженный аватар",
     "username": "Имя пользователя",
     "view-it": "Просмотреть",
     "warn-list-archived": "Внимание: Данная карточка находится в списке архива",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "Что вы хотите сделать?"
-}
+}

+ 324 - 0
i18n/sr.i18n.json

@@ -0,0 +1,324 @@
+{
+    "accept": "Prihvati",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
+    "actions": "Akcije",
+    "activities": "Aktivnosti",
+    "activity": "Aktivnost",
+    "activity-added": "dodao %s u %s",
+    "activity-archived": "arhivirao %s",
+    "activity-attached": "prikačio %s u %s",
+    "activity-created": "kreirao %s",
+    "activity-excluded": "izuzmi %s iz %s",
+    "activity-imported": "uvezao %s u %s iz %s",
+    "activity-imported-board": "uvezao %s iz %s",
+    "activity-joined": "spojio %s",
+    "activity-moved": "premestio %s iz %s u %s",
+    "activity-on": "na %s",
+    "activity-removed": "uklonio %s iz %s",
+    "activity-sent": "poslao %s %s-u",
+    "activity-unjoined": "rastavio %s",
+    "activity-checklist-added": "added checklist to %s",
+    "add": "Dodaj",
+    "add-attachment": "Dodaj dokument",
+    "add-board": "Dodaj novu tablu",
+    "add-card": "Dodaj karticu",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
+    "add-cover": "Dodaj zaglavlje",
+    "add-label": "Dodaj natpis",
+    "add-list": "Dodaj listu",
+    "add-members": "Dodaj Članove",
+    "added": "Dodao",
+    "addMemberPopup-title": "Članovi",
+    "admin": "Administrator",
+    "admin-desc": "Može da pregleda i menja kartice, uklanja članove i menja podešavanja table",
+    "all-boards": "Sve table",
+    "and-n-other-card": "And __count__ other card",
+    "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Primeni",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
+    "archive": "Arhiviraj",
+    "archive-all": "Arhiviraj sve",
+    "archive-board": "Arhiviraj tablu",
+    "archive-card": "Arhiviraj karticu",
+    "archive-list": "Arhiviraj ovu listu",
+    "archive-selection": "Arhiviraj izabrano",
+    "archiveBoardPopup-title": "Da arhiviram tablu ?",
+    "archived-items": "Arhivirane stavke",
+    "archives": "Arhive",
+    "assign-member": "Dodeli člana",
+    "attached": "Prikačeno",
+    "attachment": "Prikačeni dokument",
+    "attachment-delete-pop": "Brisanje prikačenog dokumenta je trajno. Ne postoji vraćanje obrisanog.",
+    "attachmentDeletePopup-title": "Obrisati prikačeni dokument ?",
+    "attachments": "Prikačeni dokumenti",
+    "auto-watch": "Automatically watch boards when create it",
+    "avatar-too-big": "Avatar je prevelik (maksimum je 70Kb)",
+    "back": "Nazad",
+    "board-change-color": "Promeni boju",
+    "board-nb-stars": "%s zvezdice",
+    "board-not-found": "Tabla nije pronađena",
+    "board-private-info": "Ova tabla će biti <strong>privatna<strong>.",
+    "board-public-info": "Ova tabla će biti <strong>javna<strong>.",
+    "boardChangeColorPopup-title": "Promeni pozadinu table",
+    "boardChangeTitlePopup-title": "Preimenuj tablu",
+    "boardChangeVisibilityPopup-title": "Promeni Vidljivost",
+    "boardChangeWatchPopup-title": "Change Watch",
+    "boardMenuPopup-title": "Meni table",
+    "boards": "Table",
+    "bucket-example": "Na primer \"Lista zadataka\"",
+    "cancel": "Otkaži",
+    "card-archived": "Ova kartica je arhivirana",
+    "card-comments-title": "Ova kartica ima %s komentar.",
+    "card-delete-notice": "Brisanje je trajno. Izgubićeš sve akcije povezane sa ovom karticom.",
+    "card-delete-pop": "Sve akcije će biti uklonjene sa liste aktivnosti i kartica neće moći biti ponovo otvorena. Nema vraćanja unazad.",
+    "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Krajnji datum",
+    "card-due-on": "Završava se",
+    "card-edit-attachments": "Uredi priloge",
+    "card-edit-labels": "Uredi natpise",
+    "card-edit-members": "Uredi članove",
+    "card-labels-title": "Promeni natpis na kartici.",
+    "card-members-title": "Dodaj ili ukloni članove table sa kartice.",
+    "card-start": "Početak",
+    "card-start-on": "Počinje",
+    "cardAttachmentsPopup-title": "Attach From",
+    "cardDeletePopup-title": "Delete Card?",
+    "cardDetailsActionsPopup-title": "Card Actions",
+    "cardLabelsPopup-title": "Labels",
+    "cardMembersPopup-title": "Članovi",
+    "cardMorePopup-title": "More",
+    "cards": "Cards",
+    "change": "Change",
+    "change-avatar": "Change Avatar",
+    "change-password": "Change Password",
+    "change-permissions": "Change permissions",
+    "change-settings": "Izmeni podešavanja",
+    "changeAvatarPopup-title": "Change Avatar",
+    "changeLanguagePopup-title": "Change Language",
+    "changePasswordPopup-title": "Change Password",
+    "changePermissionsPopup-title": "Change Permissions",
+    "changeSettingsPopup-title": "Izmeni podešavanja",
+    "checklists": "Checklists",
+    "click-to-star": "Click to star this board.",
+    "click-to-unstar": "Click to unstar this board.",
+    "clipboard": "Clipboard or drag & drop",
+    "close": "Close",
+    "close-board": "Close Board",
+    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
+    "color-black": "black",
+    "color-blue": "blue",
+    "color-green": "green",
+    "color-lime": "lime",
+    "color-orange": "orange",
+    "color-pink": "pink",
+    "color-purple": "purple",
+    "color-red": "red",
+    "color-sky": "sky",
+    "color-yellow": "yellow",
+    "comment": "Comment",
+    "comment-placeholder": "Write a comment",
+    "computer": "Computer",
+    "create": "Create",
+    "createBoardPopup-title": "Create Board",
+    "createLabelPopup-title": "Create Label",
+    "current": "current",
+    "date": "Datum",
+    "decline": "Decline",
+    "default-avatar": "Default avatar",
+    "delete": "Delete",
+    "deleteLabelPopup-title": "Delete Label?",
+    "description": "Description",
+    "disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
+    "disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
+    "discard": "Discard",
+    "done": "Done",
+    "download": "Download",
+    "edit": "Edit",
+    "edit-avatar": "Change Avatar",
+    "edit-profile": "Edit Profile",
+    "editCardStartDatePopup-title": "Izmeni početni datum",
+    "editCardDueDatePopup-title": "Izmeni krajnji datum",
+    "editLabelPopup-title": "Change Label",
+    "editNotificationPopup-title": "Izmeni notifikaciju",
+    "editProfilePopup-title": "Edit Profile",
+    "email": "Email",
+    "email-enrollAccount-subject": "An account created for you on __siteName__",
+    "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-fail": "Sending email failed",
+    "email-invalid": "Invalid email",
+    "email-invite": "Invite via Email",
+    "email-invite-subject": "__inviter__ sent you an invitation",
+    "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
+    "email-resetPassword-subject": "Reset your password on __siteName__",
+    "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
+    "email-sent": "Email sent",
+    "email-verifyEmail-subject": "Verify your email address on __siteName__",
+    "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
+    "error-board-doesNotExist": "This board does not exist",
+    "error-board-notAdmin": "You need to be admin of this board to do that",
+    "error-board-notAMember": "You need to be a member of this board to do that",
+    "error-json-malformed": "Your text is not valid JSON",
+    "error-json-schema": "Your JSON data does not include the proper information in the correct format",
+    "error-list-doesNotExist": "This list does not exist",
+    "error-user-doesNotExist": "This user does not exist",
+    "error-user-notAllowSelf": "This action on self is not allowed",
+    "error-user-notCreated": "This user is not created",
+    "error-username-taken": "Korisničko ime je već zauzeto",
+    "export-board": "Export board",
+    "filter": "Filter",
+    "filter-cards": "Filter Cards",
+    "filter-clear": "Clear filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "Nema člana",
+    "filter-on": "Filter is on",
+    "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
+    "filter-to-selection": "Filter to selection",
+    "fullname": "Full Name",
+    "header-logo-title": "Go back to your boards page.",
+    "hide-system-messages": "Sakrij sistemske poruke",
+    "home": "Home",
+    "import": "Import",
+    "import-board": "import from Trello",
+    "import-board-title": "Import board from Trello",
+    "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
+    "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Mapiraj članove",
+    "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
+    "import-show-user-mapping": "Review members mapping",
+    "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Izaberi člana Wekan-a",
+    "info": "Infos",
+    "initials": "Initials",
+    "invalid-date": "Neispravan datum",
+    "joined": "joined",
+    "just-invited": "You are just invited to this board",
+    "keyboard-shortcuts": "Keyboard shortcuts",
+    "label-create": "Create a new label",
+    "label-default": "%s label (default)",
+    "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
+    "labels": "Labels",
+    "language": "Language",
+    "last-admin-desc": "You can’t change roles because there must be at least one admin.",
+    "leave-board": "Leave Board",
+    "link-card": "Link to this card",
+    "list-archive-cards": "Archive all cards in this list",
+    "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
+    "list-move-cards": "Move all cards in this list",
+    "list-select-cards": "Select all cards in this list",
+    "listActionPopup-title": "List Actions",
+    "listImportCardPopup-title": "Import a Trello card",
+    "lists": "Lists",
+    "log-out": "Log Out",
+    "log-in": "Log In",
+    "loginPopup-title": "Log In",
+    "memberMenuPopup-title": "Member Settings",
+    "members": "Članovi",
+    "menu": "Menu",
+    "move-selection": "Move selection",
+    "moveCardPopup-title": "Move Card",
+    "moveCardToBottom-title": "Premesti na dno",
+    "moveCardToTop-title": "Premesti na vrh",
+    "moveSelectionPopup-title": "Move selection",
+    "multi-selection": "Multi-Selection",
+    "multi-selection-on": "Multi-Selection is on",
+    "muted": "Utišano",
+    "muted-info": "You will never be notified of any changes in this board",
+    "my-boards": "My Boards",
+    "name": "Name",
+    "no-archived-cards": "No archived cards.",
+    "no-archived-lists": "No archived lists.",
+    "no-results": "Nema rezultata",
+    "normal": "Normalno",
+    "normal-desc": "Can view and edit cards. Can't change settings.",
+    "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
+    "optional": "opciono",
+    "or": "ili",
+    "page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
+    "page-not-found": "Stranica nije pronađena.",
+    "password": "Lozinka",
+    "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Učestvujem",
+    "preview": "Prikaz",
+    "previewAttachedImagePopup-title": "Prikaz",
+    "previewClipboardImagePopup-title": "Prikaz",
+    "private": "Privatno",
+    "private-desc": "This board is private. Only people added to the board can view and edit it.",
+    "profile": "Profil",
+    "public": "Javno",
+    "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
+    "quick-access-description": "Star a board to add a shortcut in this bar.",
+    "remove-cover": "Remove Cover",
+    "remove-from-board": "Ukloni iz table",
+    "remove-label": "Ukloni natpis",
+    "remove-list": "Ukloni listu",
+    "remove-member": "Ukloni člana",
+    "remove-member-from-card": "Ukloni iz kartice",
+    "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
+    "removeMemberPopup-title": "Ukloni člana ?",
+    "rename": "Preimenuj",
+    "rename-board": "Preimenuj tablu",
+    "restore": "Oporavi",
+    "save": "Snimi",
+    "search": "Pretraga",
+    "select-color": "Izaberi boju",
+    "shortcut-assign-self": "Pridruži sebe trenutnoj kartici",
+    "shortcut-autocomplete-emoji": "Autocomplete emoji",
+    "shortcut-autocomplete-members": "Sam popuni članove",
+    "shortcut-clear-filters": "Očisti sve filtere",
+    "shortcut-close-dialog": "Zatvori dijalog",
+    "shortcut-filter-my-cards": "Filtriraj kartice",
+    "shortcut-show-shortcuts": "Prikaži ovu listu prečica",
+    "shortcut-toggle-filterbar": "Uključi ili isključi bočni meni filtera",
+    "shortcut-toggle-sidebar": "Uključi ili isključi bočni meni table",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
+    "signupPopup-title": "Kreiraj nalog",
+    "star-board-title": "Klikni da označiš zvezdicom ovu tablu. Pokazaće se na vrhu tvoje liste tabli.",
+    "starred-boards": "Table sa zvezdicom",
+    "starred-boards-description": "Table sa zvezdicom se pokazuju na vrhu liste tabli.",
+    "subscribe": "Pretplati se",
+    "team": "Tim",
+    "this-board": "ova tabla",
+    "this-card": "ova kartica",
+    "time": "Vreme",
+    "title": "Naslov",
+    "tracking": "Praćenje",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
+    "unassign-member": "Unassign member",
+    "unsaved-description": "Imaš nesnimljen opis.",
+    "unwatch": "Ne posmatraj",
+    "upload": "Upload",
+    "upload-avatar": "Upload an avatar",
+    "uploaded-avatar": "Uploaded an avatar",
+    "username": "Korisničko ime",
+    "view-it": "Pregledaj je",
+    "warn-list-archived": "upozorenje: ova kartica je u arhiviranoj listi",
+    "watch": "Posmatraj",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Osnove",
+    "welcome-list2": "Napredno",
+    "what-to-do": "Šta želiš da uradiš ?"
+}

+ 67 - 6
i18n/tr.i18n.json

@@ -1,5 +1,25 @@
 {
     "accept": "Accept",
+    "act-activity-notify": "[Wekan] Activity Notification",
+    "act-addAttachment": "attached __attachment__ to __card__",
+    "act-addComment": "commented on __card__: __comment__",
+    "act-createBoard": "created __board__",
+    "act-createCard": "added __card__ to __list__",
+    "act-createList": "added __list__ to __board__",
+    "act-addBoardMember": "added __member__ to __board__",
+    "act-archivedBoard": "archived __board__",
+    "act-archivedCard": "archived __card__",
+    "act-archivedList": "archived __list__",
+    "act-importBoard": "imported __board__",
+    "act-importCard": "imported __card__",
+    "act-importList": "imported __list__",
+    "act-joinMember": "added __member__ to __card__",
+    "act-moveCard": "moved __card__ from __oldList__ to __list__",
+    "act-removeBoardMember": "removed __member__ from __board__",
+    "act-restoredCard": "restored __card__ to __board__",
+    "act-unjoinMember": "removed __member__ from __card__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "İşlemler",
     "activities": "Aktiviteler",
     "activity": "Etkinlik",
@@ -16,10 +36,13 @@
     "activity-removed": "removed %s from %s",
     "activity-sent": "sent %s to %s",
     "activity-unjoined": "unjoined %s",
+    "activity-checklist-added": "added checklist to %s",
     "add": "Ekle",
     "add-attachment": "Add an attachment",
     "add-board": "Yeni bir pano ekle",
     "add-card": "Add a card",
+    "add-checklist": "Add a checklist",
+    "add-checklist-item": "Add an item to checklist",
     "add-cover": "Add Cover",
     "add-label": "Add the label",
     "add-list": "Add a list",
@@ -31,6 +54,8 @@
     "all-boards": "All boards",
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
+    "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Arşiv",
     "archive-all": "Tümünü Arşivle",
     "archive-board": "Archive Board",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "Ek dosya silme işlemi kalıcıdır. Geri dönüşü yok",
     "attachmentDeletePopup-title": "Ek Dosya Silinsin Mi?",
     "attachments": "Ek Dosyalar",
+    "auto-watch": "Automatically watch boards when create it",
     "avatar-too-big": "The avatar is too large (70Kb max)",
     "back": "Geri",
     "board-change-color": "Change color",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "Change Board Background",
     "boardChangeTitlePopup-title": "Pano Adı Değiştirme",
     "boardChangeVisibilityPopup-title": "Görünebilirliği Değiştir",
-    "boardImportBoardPopup-title": "Import board from Trello",
+    "boardChangeWatchPopup-title": "Change Watch",
     "boardMenuPopup-title": "Board Menu",
     "boards": "Panolar",
     "bucket-example": "Like “Bucket List” for example",
@@ -66,11 +92,15 @@
     "card-delete-notice": "Silme işlemi kalıcıdır. Bu kartla ilişkili tüm eylemleri kaybedersiniz.",
     "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
     "card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
+    "card-due": "Due",
+    "card-due-on": "Due on",
     "card-edit-attachments": "Edit attachments",
     "card-edit-labels": "Edit labels",
     "card-edit-members": "Edit members",
     "card-labels-title": "Change the labels for the card.",
     "card-members-title": "Add or remove members of the board from the card.",
+    "card-start": "Start",
+    "card-start-on": "Starts on",
     "cardAttachmentsPopup-title": "Attach From",
     "cardDeletePopup-title": "Kart Silinsin mi?",
     "cardDetailsActionsPopup-title": "Card Actions",
@@ -82,10 +112,13 @@
     "change-avatar": "Avatar Değiştir",
     "change-password": "Parola Değiştir",
     "change-permissions": "Change permissions",
+    "change-settings": "Change Settings",
     "changeAvatarPopup-title": "Avatar Değiştir",
     "changeLanguagePopup-title": "Dil Değiştir",
     "changePasswordPopup-title": "Parola Değiştir",
     "changePermissionsPopup-title": "Yetkileri Değiştirme",
+    "changeSettingsPopup-title": "Change Settings",
+    "checklists": "Checklists",
     "click-to-star": "Bu panoyu yıldızlamak için tıkla.",
     "click-to-unstar": "Bu panunun yıldızını kaldırmak için tıkla.",
     "clipboard": "Clipboard or drag & drop",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "Pano Oluşturma",
     "createLabelPopup-title": "Etiket Oluşturma",
     "current": "current",
+    "date": "Date",
     "decline": "Decline",
     "default-avatar": "Default avatar",
     "delete": "Sil",
@@ -122,7 +156,10 @@
     "edit": "Düzenle",
     "edit-avatar": "Avatar Değiştir",
     "edit-profile": "Profili Düzenle",
+    "editCardStartDatePopup-title": "Change start date",
+    "editCardDueDatePopup-title": "Change due date",
     "editLabelPopup-title": "Etiket Değiştirme",
+    "editNotificationPopup-title": "Edit Notification",
     "editProfilePopup-title": "Profili Düzenle",
     "email": "E-posta",
     "email-enrollAccount-subject": "An account created for you on __siteName__",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "This user does not exist",
     "error-user-notAllowSelf": "This action on self is not allowed",
     "error-user-notCreated": "This user is not created",
+    "error-username-taken": "This username is already taken",
     "export-board": "Export board",
     "filter": "Filter",
     "filter-cards": "Kartları Süz",
     "filter-clear": "Clear filter",
+    "filter-no-label": "No label",
+    "filter-no-member": "No member",
     "filter-on": "Filter is on",
     "filter-on-desc": "Bu panodaki kartları süzüyorsunuz. Süzgeci düzenlemek için tıklayın.",
     "filter-to-selection": "Filter to selection",
     "fullname": "Ad Soyad",
     "header-logo-title": "Panolar sayfanıza geri dön.",
+    "hide-system-messages": "Hide system messages",
     "home": "Home",
     "import": "Import",
     "import-board": "import from Trello",
+    "import-board-title": "Import board from Trello",
     "import-board-trello-instruction": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-card": "Import a Trello card",
-    "import-card-trello-instruction": "Go to a Trello card, select 'Share and more...' then 'Export JSON' and copy the resulting text",
     "import-json-placeholder": "Paste your valid JSON data here",
+    "import-map-members": "Map members",
     "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
     "import-show-user-mapping": "Review members mapping",
     "import-user-select": "Pick the Wekan user you want to use as this member",
+    "importMapMembersAddPopup-title": "Select Wekan member",
     "info": "Infos",
     "initials": "Initials",
+    "invalid-date": "Invalid date",
     "joined": "joined",
     "just-invited": "You are just invited to this board",
     "keyboard-shortcuts": "Keyboard shortcuts",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "Import a Trello card",
     "lists": "Lists",
     "log-out": "Oturum Kapat",
+    "log-in": "Oturum Aç",
     "loginPopup-title": "Oturum Aç",
-    "mapMembersAddPopup-title": "Select Wekan member",
-    "mapMembersPopup-title": "Map members",
     "memberMenuPopup-title": "Member Settings",
     "members": "Üyeler",
     "menu": "Menü",
     "move-selection": "Move selection",
     "moveCardPopup-title": "Move Card",
+    "moveCardToBottom-title": "Move to Bottom",
+    "moveCardToTop-title": "Move to Top",
     "moveSelectionPopup-title": "Move selection",
     "multi-selection": "Multi-Selection",
     "multi-selection-on": "Multi-Selection is on",
+    "muted": "Muted",
+    "muted-info": "You will never be notified of any changes in this board",
     "my-boards": "Panolarım",
     "name": "Adı",
     "no-archived-cards": "No archived cards.",
@@ -205,12 +251,15 @@
     "normal": "Normal",
     "normal-desc": "Kartları görüntüler ve düzenler. Ayarları değiştiremez.",
     "not-accepted-yet": "Invitation not accepted yet",
+    "notify-participate": "Receive updates to any cards you participate as creater or member",
+    "notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
     "optional": "isteğe bağlı",
     "or": "or",
     "page-maybe-private": "Bu sayfa özel olabilir. <a href='%s'>Oturum açarak</a> görülebilir.",
     "page-not-found": "Sayda bulunamadı.",
     "password": "Parola",
     "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
+    "participating": "Participating",
     "preview": "Preview",
     "previewAttachedImagePopup-title": "Preview",
     "previewClipboardImagePopup-title": "Preview",
@@ -223,6 +272,7 @@
     "remove-cover": "Remove Cover",
     "remove-from-board": "Remove from Board",
     "remove-label": "Remove the label",
+    "remove-list": "Remove the list",
     "remove-member": "Üyeyi Çıkar",
     "remove-member-from-card": "Karttan Çıkar",
     "remove-member-pop": "__boardTitle__ panosundan __name__ (__username__) çıkarılsın mı? Üye, bu panodaki tüm kartlardan çıkarılacak ve bir bildirim alacak.",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "Bring up this shortcuts list",
     "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
     "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Bir Hesap Oluştur",
     "star-board-title": "Bu panoyu yıldızlamak için tıkla. Pano listesinin en üstünde gösterilir.",
     "starred-boards": "Yıldızlı Panolar",
@@ -250,14 +301,24 @@
     "team": "Takım",
     "this-board": "bu panoyu",
     "this-card": "bu kart",
+    "time": "Time",
     "title": "Başlık",
+    "tracking": "Tracking",
+    "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
     "unassign-member": "Unassign member",
     "unsaved-description": "You have an unsaved description.",
+    "unwatch": "Unwatch",
     "upload": "Upload",
     "upload-avatar": "Upload an avatar",
     "uploaded-avatar": "Uploaded an avatar",
     "username": "Kullanıcı adı",
     "view-it": "View it",
     "warn-list-archived": "warning: this card is in an archived list",
+    "watch": "Watch",
+    "watching": "Watching",
+    "watching-info": "You will be notified of any change in this board",
+    "welcome-board": "Welcome Board",
+    "welcome-list1": "Basics",
+    "welcome-list2": "Advanced",
     "what-to-do": "What do you want to do?"
-}
+}

+ 72 - 11
i18n/zh-CN.i18n.json

@@ -1,25 +1,48 @@
 {
     "accept": "接受",
+    "act-activity-notify": "[Wekan] 活动通知",
+    "act-addAttachment": "添加附件 __attachment__ 至卡片 __card__",
+    "act-addComment": "在 __card__ 发布评论: __comment__",
+    "act-createBoard": "创建看板 __board__",
+    "act-createCard": "添加卡片 __card__  至列表 __list__",
+    "act-createList": "添加列表 __list__  至看板 __board__",
+    "act-addBoardMember": "添加成员 __member__  至看板 __board__",
+    "act-archivedBoard": "归档看板 __board__",
+    "act-archivedCard": "归档卡片 __card__",
+    "act-archivedList": "归档列表 __list__",
+    "act-importBoard": "导入看板 __board__",
+    "act-importCard": "导入卡片 __card__",
+    "act-importList": "导入列表 __list__",
+    "act-joinMember": "添加成员 __member__  至卡片 __card__",
+    "act-moveCard": "从列表 __oldList__  移动卡片 __card__  至列表 __list__",
+    "act-removeBoardMember": "从看板 __board__ 移除成员 __member__",
+    "act-restoredCard": "恢复卡片 __card__  至看板 __board__",
+    "act-unjoinMember": "从卡片 __card__ 移除成员 __member__",
+    "act-withBoardTitle": "[Wekan] 看板 __board__",
+    "act-withCardTitle": "[看板 __board__] 卡片 __card__",
     "actions": "操作",
     "activities": "活动",
     "activity": "活动",
     "activity-added": "添加 %s 至 %s",
-    "activity-archived": "删除 %s",
+    "activity-archived": "归档 %s",
     "activity-attached": "添加附件 %s 至 %s",
     "activity-created": "创建 %s",
     "activity-excluded": "排除 %s 从 %s",
     "activity-imported": "导入 %s 至 %s 从 %s 中",
     "activity-imported-board": "已导入 %s 从 %s 中",
-    "activity-joined": "关联 %s",
+    "activity-joined": "关联 %s",
     "activity-moved": "将 %s 从 %s 移动到 %s",
     "activity-on": "在 %s",
-    "activity-removed": "移除 %s 从 %s 中",
+    "activity-removed": "从 %s 中移除 %s",
     "activity-sent": "发送 %s 至 %s",
-    "activity-unjoined": "解除关联 %s",
+    "activity-unjoined": "已解除 %s 关联",
+    "activity-checklist-added": "已经将清单添加到 %s",
     "add": "添加",
     "add-attachment": "添加附件",
     "add-board": "添加新看板",
     "add-card": "添加卡片",
+    "add-checklist": "添加清单",
+    "add-checklist-item": "扩充清单",
     "add-cover": "添加封面",
     "add-label": "添加标签",
     "add-list": "添加清单",
@@ -31,6 +54,8 @@
     "all-boards": "全部看板",
     "and-n-other-card": "和其他 __count__ 个卡片",
     "and-n-other-card_plural": "和其他 __count__ 个卡片",
+    "apply": "应用",
+    "app-is-offline": "处于离线状态,刷新页面将导致数据丢失。",
     "archive": "归档",
     "archive-all": "全部归档",
     "archive-board": "归档看板",
@@ -46,6 +71,7 @@
     "attachment-delete-pop": "删除附件的操作不可逆。",
     "attachmentDeletePopup-title": "删除附件?",
     "attachments": "附件",
+    "auto-watch": "创建看板时自动关注",
     "avatar-too-big": "头像太大 (最大 70 Kb)",
     "back": "返回",
     "board-change-color": "更改颜色",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "修改看板背景",
     "boardChangeTitlePopup-title": "重命名看板",
     "boardChangeVisibilityPopup-title": "更改可视级别",
-    "boardImportBoardPopup-title": "从 Trello 导入看板",
+    "boardChangeWatchPopup-title": "更改关注状态",
     "boardMenuPopup-title": "看板菜单",
     "boards": "看板",
     "bucket-example": "例如 “目标清单”",
@@ -66,11 +92,15 @@
     "card-delete-notice": "彻底删除的操作不可恢复,你将会丢失该卡片相关的所有操作记录。",
     "card-delete-pop": "所有的动作将从活动动态中被移除且您将无法重新打开该卡片。此操作无法撤销。",
     "card-delete-suggest-archive": "你可以将卡片从看板中归档至回收箱,但保留相关活动。",
+    "card-due": "到期",
+    "card-due-on": "期限",
     "card-edit-attachments": "编辑附件",
     "card-edit-labels": "编辑标签",
     "card-edit-members": "编辑成员",
     "card-labels-title": "更改该卡片上的标签",
     "card-members-title": "在该卡片中添加或移除看板成员",
+    "card-start": "开始",
+    "card-start-on": "始于",
     "cardAttachmentsPopup-title": "附件来源",
     "cardDeletePopup-title": "彻底删除卡片?",
     "cardDetailsActionsPopup-title": "卡片动作",
@@ -82,10 +112,13 @@
     "change-avatar": "更改头像",
     "change-password": "更改密码",
     "change-permissions": "更改权限",
+    "change-settings": "更改设置",
     "changeAvatarPopup-title": "更改头像",
     "changeLanguagePopup-title": "更改语言",
     "changePasswordPopup-title": "更改密码",
     "changePermissionsPopup-title": "更改权限",
+    "changeSettingsPopup-title": "更改设置",
+    "checklists": "清单",
     "click-to-star": "点此来标记该看板",
     "click-to-unstar": "点此来去除该看板的标记",
     "clipboard": "剪贴板或者拖放文件",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "创建看板",
     "createLabelPopup-title": "创建标签",
     "current": "当前",
+    "date": "日期",
     "decline": "拒绝",
     "default-avatar": "默认头像",
     "delete": "删除",
@@ -122,7 +156,10 @@
     "edit": "编辑",
     "edit-avatar": "更改头像",
     "edit-profile": "编辑资料",
+    "editCardStartDatePopup-title": "修改起始日期",
+    "editCardDueDatePopup-title": "修改截止日期",
     "editLabelPopup-title": "更改标签",
+    "editNotificationPopup-title": "编辑通知",
     "editProfilePopup-title": "编辑资料",
     "email": "邮箱",
     "email-enrollAccount-subject": "已为您在 __siteName__ 创建帐号",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "该用户不存在",
     "error-user-notAllowSelf": "不允许对自己执行此操作",
     "error-user-notCreated": "该用户未能成功创建",
+    "error-username-taken": "此用户名已存在",
     "export-board": "导出看板",
     "filter": "过滤",
     "filter-cards": "过滤卡片",
     "filter-clear": "清空过滤器",
+    "filter-no-label": "无标签",
+    "filter-no-member": "无成员",
     "filter-on": "过滤器启用",
     "filter-on-desc": "你正在过滤该看板上的卡片,点此编辑过滤。",
     "filter-to-selection": "要选择的过滤器",
     "fullname": "全称",
     "header-logo-title": "返回您的看板页",
+    "hide-system-messages": "隐藏系统消息",
     "home": "首页",
     "import": "导入",
     "import-board": "从 Trello 导入",
+    "import-board-title": "从Trello导入看板",
     "import-board-trello-instruction": "在你的Trello看板中,点击“菜单”,然后选择“更多”,“打印与导出”,“导出为 JSON” 并拷贝结果文本",
-    "import-card": "导入 Trello 卡片",
-    "import-card-trello-instruction": "进入一个 Trello 卡片,选择“分享与更多”,然后选择 “导出为 JSON” 并且拷贝结果文本",
     "import-json-placeholder": "粘贴您有效的 JSON 数据至此",
+    "import-map-members": "映射成员",
     "import-members-map": "您导入的看板有一些成员。请将您想导入的成员映射到 Wekan 用户。",
     "import-show-user-mapping": "核对成员映射",
     "import-user-select": "选择您想将此成员映射到的 Wekan 用户",
+    "importMapMembersAddPopup-title": "选择Wekan成员",
     "info": "信息",
     "initials": "缩写",
+    "invalid-date": "无效日期",
     "joined": "关联",
     "just-invited": "您刚刚被邀请加入此看板",
     "keyboard-shortcuts": "键盘快捷键",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "导入 Trello 卡片",
     "lists": "清单",
     "log-out": "登出",
+    "log-in": "登录",
     "loginPopup-title": "登录",
-    "mapMembersAddPopup-title": "选择 Wekan 成员",
-    "mapMembersPopup-title": "映射成员",
     "memberMenuPopup-title": "成员设置",
     "members": "成员",
     "menu": "菜单",
     "move-selection": "移动选择",
     "moveCardPopup-title": "移动卡片",
+    "moveCardToBottom-title": "移动至底端",
+    "moveCardToTop-title": "移动至顶端",
     "moveSelectionPopup-title": "移动选择",
     "multi-selection": "多选",
     "multi-selection-on": "多选启用",
+    "muted": "静默",
+    "muted-info": "你将不会收到此看板的任何变更通知",
     "my-boards": "我的看板",
     "name": "名称",
     "no-archived-cards": "没有已归档的卡片",
@@ -205,12 +251,15 @@
     "normal": "普通",
     "normal-desc": "可以创建以及编辑卡片,无法更改设置。",
     "not-accepted-yet": "邀请尚未接受",
+    "notify-participate": "接收以创建者或成员身份参与的卡片的更新",
+    "notify-watch": "接收所有关注的面板、列表、及卡片的更新",
     "optional": "可选",
     "or": "或",
     "page-maybe-private": "本页面被设为私有. 您必须 <a href='%s'>登录</a>以浏览其中内容。",
     "page-not-found": "页面不存在。",
     "password": "密码",
     "paste-or-dragdrop": "从剪贴板粘贴,或者拖放文件到它上面 (仅限于图片)",
+    "participating": "参与",
     "preview": "预览",
     "previewAttachedImagePopup-title": "预览",
     "previewClipboardImagePopup-title": "预览",
@@ -223,6 +272,7 @@
     "remove-cover": "移除封面",
     "remove-from-board": "从看板中删除",
     "remove-label": "移除标签",
+    "remove-list": "删除清单",
     "remove-member": "移除成员",
     "remove-member-from-card": "从该卡片中移除",
     "remove-member-pop": "确定从 __boardTitle__ 中移除 __name__ (__username__) 吗? 该成员将被从该看板的所有卡片中移除,同时他会收到一条提醒。",
@@ -234,7 +284,7 @@
     "search": "搜索",
     "select-color": "选择颜色",
     "shortcut-assign-self": "分配当前卡片给自己",
-    "shortcut-autocomplete-emojies": "自动补全表情",
+    "shortcut-autocomplete-emoji": "表情符号自动补全",
     "shortcut-autocomplete-members": "自动补全成员",
     "shortcut-clear-filters": "清空全部过滤器",
     "shortcut-close-dialog": "关闭对话框",
@@ -242,7 +292,8 @@
     "shortcut-show-shortcuts": "显示此快捷键列表",
     "shortcut-toggle-filterbar": "切换过滤器边栏",
     "shortcut-toggle-sidebar": "切换面板边栏",
-    "signupPopup-title": " 创建账户",
+    "show-cards-minimum-count": "当列表中的卡片多于此阈值时将显示数量",
+    "signupPopup-title": "创建账户",
     "star-board-title": "点此来标记该看板,它将会出现在您的看板列表顶部。",
     "starred-boards": "已标记看板",
     "starred-boards-description": "已标记看板将会出现在您的看板列表顶部。",
@@ -250,14 +301,24 @@
     "team": "团队",
     "this-board": "该看板",
     "this-card": "该卡片",
+    "time": "时间",
     "title": "标题",
+    "tracking": "跟踪",
+    "tracking-info": "当任何包含您(作为创建者或成员)的卡片发生变更时,您将得到通知。",
     "unassign-member": "取消分配成员",
     "unsaved-description": "存在未保存的描述",
+    "unwatch": "取消关注",
     "upload": "上传",
     "upload-avatar": "上传头像",
     "uploaded-avatar": "头像已经上传",
     "username": "用户名",
     "view-it": "查看",
     "warn-list-archived": "警告: 该卡片位于已归档清单中",
+    "watch": "关注",
+    "watching": "已关注",
+    "watching-info": "当此看板发生变更时会通知你",
+    "welcome-board": "“欢迎”看板",
+    "welcome-list1": "基本",
+    "welcome-list2": "高阶",
     "what-to-do": "要做什么?"
 }

+ 73 - 12
i18n/zh-TW.i18n.json

@@ -1,10 +1,30 @@
 {
     "accept": "接受",
+    "act-activity-notify": "[Wekan] 活動通知",
+    "act-addAttachment": "新增附件__attachment__至__card__",
+    "act-addComment": "評論__card__: __comment__",
+    "act-createBoard": "完成新增 __board__",
+    "act-createCard": "將__card__加入__list__",
+    "act-createList": "新增__list__至__board__",
+    "act-addBoardMember": "在__board__中新增成員__member__",
+    "act-archivedBoard": "封存__board__",
+    "act-archivedCard": "封存__card__",
+    "act-archivedList": "封存__list__",
+    "act-importBoard": "匯入__board__",
+    "act-importCard": "匯入__card__",
+    "act-importList": "匯入__list__",
+    "act-joinMember": "在__card__中新增成員__member__",
+    "act-moveCard": "將__card__從__oldList__移動至__list__",
+    "act-removeBoardMember": "從__board__中移除成員__member__",
+    "act-restoredCard": "將__card__回復至__board__",
+    "act-unjoinMember": "從__card__中移除成員__member__",
+    "act-withBoardTitle": "[Wekan] __board__",
+    "act-withCardTitle": "[__board__] __card__",
     "actions": "操作",
     "activities": "活動",
     "activity": "活動",
     "activity-added": "新增 %s 至 %s",
-    "activity-archived": "刪除 %s",
+    "activity-archived": "封存 %s",
     "activity-attached": "新增附件 %s 至 %s",
     "activity-created": "建立 %s",
     "activity-excluded": "排除 %s 從 %s",
@@ -16,10 +36,13 @@
     "activity-removed": "移除 %s 從 %s 中",
     "activity-sent": "寄送 %s 至 %s",
     "activity-unjoined": "解除關聯 %s",
+    "activity-checklist-added": "新增待辦清單至 %s",
     "add": "新增",
     "add-attachment": "新增附件",
     "add-board": "新增看板",
     "add-card": "新增卡片",
+    "add-checklist": "新增待辦清單",
+    "add-checklist-item": "新增項目",
     "add-cover": "新增封面",
     "add-label": "新增標籤",
     "add-list": "新增清單",
@@ -31,6 +54,8 @@
     "all-boards": "全部看板",
     "and-n-other-card": "和其他 __count__ 個卡片",
     "and-n-other-card_plural": "和其他 __count__ 個卡片",
+    "apply": "送出",
+    "app-is-offline": "目前狀態為離線,若整重將會造成資料遺失",
     "archive": "刪除",
     "archive-all": "全部刪除",
     "archive-board": "刪除看板",
@@ -38,14 +63,15 @@
     "archive-list": "刪除該清單",
     "archive-selection": "刪除所選內容",
     "archiveBoardPopup-title": "確定要刪除看板嗎?",
-    "archived-items": "回收筒",
-    "archives": "回收筒",
+    "archived-items": "封存",
+    "archives": "封存",
     "assign-member": "分配成員",
     "attached": "附加",
     "attachment": "附件",
     "attachment-delete-pop": "刪除附件的操作無法還原。",
     "attachmentDeletePopup-title": "刪除附件?",
     "attachments": "附件",
+    "auto-watch": "新增看板時自動加入觀察",
     "avatar-too-big": "大頭貼太大 (最大 70 Kb)",
     "back": "返回",
     "board-change-color": "更改顏色",
@@ -56,7 +82,7 @@
     "boardChangeColorPopup-title": "修改看板背景",
     "boardChangeTitlePopup-title": "重新命名看板",
     "boardChangeVisibilityPopup-title": "更改可視級別",
-    "boardImportBoardPopup-title": "從 Trello 匯入看板",
+    "boardChangeWatchPopup-title": "更改觀察",
     "boardMenuPopup-title": "看板選單",
     "boards": "看板",
     "bucket-example": "例如 “目標清單”",
@@ -66,11 +92,15 @@
     "card-delete-notice": "徹底刪除的操作不可復原,你將會遺失該卡片相關的所有操作記錄。",
     "card-delete-pop": "所有的動作將從活動動態中被移除且您將無法重新打開該卡片。此操作無法復原。",
     "card-delete-suggest-archive": "你可以將卡片從看板中刪除至回收筒,但保留相關活動。",
+    "card-due": "到期",
+    "card-due-on": "到期",
     "card-edit-attachments": "編輯附件",
     "card-edit-labels": "編輯標籤",
     "card-edit-members": "編輯成員",
     "card-labels-title": "更改該卡片上的標籤",
     "card-members-title": "在該卡片中新增或移除看板成員",
+    "card-start": "開始",
+    "card-start-on": "開始",
     "cardAttachmentsPopup-title": "附件來源",
     "cardDeletePopup-title": "徹底刪除卡片?",
     "cardDetailsActionsPopup-title": "卡片動作",
@@ -82,10 +112,13 @@
     "change-avatar": "更改大頭貼",
     "change-password": "更改密碼",
     "change-permissions": "更改許可權",
+    "change-settings": "更改設定",
     "changeAvatarPopup-title": "更改大頭貼",
     "changeLanguagePopup-title": "更改語言",
     "changePasswordPopup-title": "更改密碼",
-    "changePermissionsPopup-title": "更改權限",
+    "changePermissionsPopup-title": "更改許可權",
+    "changeSettingsPopup-title": "更改設定",
+    "checklists": "待辦清單",
     "click-to-star": "點此來標記該看板",
     "click-to-unstar": "點此來去除該看板的標記",
     "clipboard": "剪貼簿貼上或者拖曳檔案",
@@ -109,6 +142,7 @@
     "createBoardPopup-title": "建立看板",
     "createLabelPopup-title": "建立標籤",
     "current": "目前",
+    "date": "日期",
     "decline": "拒絕",
     "default-avatar": "預設大頭貼",
     "delete": "刪除",
@@ -122,7 +156,10 @@
     "edit": "編輯",
     "edit-avatar": "更改大頭貼",
     "edit-profile": "編輯資料",
+    "editCardStartDatePopup-title": "更改開始日期",
+    "editCardDueDatePopup-title": "更改到期日期",
     "editLabelPopup-title": "更改標籤",
+    "editNotificationPopup-title": "更改通知",
     "editProfilePopup-title": "編輯資料",
     "email": "電子郵件",
     "email-enrollAccount-subject": "您在 __siteName__ 的帳號已經建立",
@@ -146,27 +183,33 @@
     "error-user-doesNotExist": "該使用者不存在",
     "error-user-notAllowSelf": "不允許對自己執行此操作",
     "error-user-notCreated": "該使用者未能成功建立",
+    "error-username-taken": "這個使用者名稱已被使用",
     "export-board": "Export board",
     "filter": "過濾",
     "filter-cards": "過濾卡片",
     "filter-clear": "清空過濾條件",
+    "filter-no-label": "沒有標籤",
+    "filter-no-member": "沒有成員",
     "filter-on": "過濾條件啟用",
     "filter-on-desc": "你正在過濾該看板上的卡片,點此編輯過濾條件。",
     "filter-to-selection": "要選擇的過濾條件",
     "fullname": "全稱",
     "header-logo-title": "返回您的看板頁面",
+    "hide-system-messages": "隱藏系統訊息",
     "home": "首頁",
     "import": "匯入",
-    "import-board": "從 Trello 匯入",
+    "import-board": "匯入 Trello 資料",
+    "import-board-title": "匯入在 Trello 的看板",
     "import-board-trello-instruction": "在你的Trello看板中,點選“功能表”,然後選擇“更多”,“列印與匯出”,“匯出為 JSON” 並拷貝結果文本",
-    "import-card": "匯入 Trello 卡片",
-    "import-card-trello-instruction": "進入一個 Trello 卡片,選擇“分享與更多”,然後選擇 “匯出為 JSON” 並且拷貝結果文本",
     "import-json-placeholder": "貼上您有效的 JSON 資料至此",
+    "import-map-members": "複製成員",
     "import-members-map": "您匯入的看板有一些成員。請將您想匯入的成員映射到 Wekan 使用者。",
     "import-show-user-mapping": "核對成員映射",
     "import-user-select": "選擇您想將此成員映射到的 Wekan 使用者",
+    "importMapMembersAddPopup-title": "選擇 Wekan 成員",
     "info": "資訊",
     "initials": "縮寫",
+    "invalid-date": "無效的日期",
     "joined": "關聯",
     "just-invited": "您剛剛被邀請加入此看板",
     "keyboard-shortcuts": "鍵盤快速鍵",
@@ -186,17 +229,20 @@
     "listImportCardPopup-title": "匯入 Trello 卡片",
     "lists": "清單",
     "log-out": "登出",
+    "log-in": "登入",
     "loginPopup-title": "登入",
-    "mapMembersAddPopup-title": "選擇 Wekan 成員",
-    "mapMembersPopup-title": "映射成員",
     "memberMenuPopup-title": "成員更改",
     "members": "成員",
     "menu": "選單",
     "move-selection": "移動被選擇的項目",
     "moveCardPopup-title": "移動卡片",
-    "moveSelectionPopup-title": "Move selection",
+    "moveCardToBottom-title": "移至最下面",
+    "moveCardToTop-title": "移至最上面",
+    "moveSelectionPopup-title": "移動選取的項目",
     "multi-selection": "多選",
     "multi-selection-on": "多選啟用",
+    "muted": "靜音",
+    "muted-info": "您將不會收到有關這個看板的任何訊息",
     "my-boards": "我的看板",
     "name": "名稱",
     "no-archived-cards": "沒有已刪除的卡片",
@@ -205,12 +251,15 @@
     "normal": "普通",
     "normal-desc": "可以建立以及編輯卡片,無法更改。",
     "not-accepted-yet": "邀請尚未接受",
+    "notify-participate": "接收與你有關的卡片更新",
+    "notify-watch": "接收您關注的看板、清單或卡片的更新",
     "optional": "選擇性的",
     "or": "或",
     "page-maybe-private": "本頁面被設為私有. 您必須 <a href='%s'>登入</a>以瀏覽其中內容。",
     "page-not-found": "頁面不存在。",
     "password": "密碼",
     "paste-or-dragdrop": "從剪貼簿貼上,或者拖曳檔案到它上面 (僅限於圖片)",
+    "participating": "參與",
     "preview": "預覽",
     "previewAttachedImagePopup-title": "預覽",
     "previewClipboardImagePopup-title": "預覽",
@@ -223,6 +272,7 @@
     "remove-cover": "移除封面",
     "remove-from-board": "從看板中刪除",
     "remove-label": "移除標籤",
+    "remove-list": "移除清單",
     "remove-member": "移除成員",
     "remove-member-from-card": "從該卡片中移除",
     "remove-member-pop": "確定從 __boardTitle__ 中移除 __name__ (__username__) 嗎? 該成員將被從該看板的所有卡片中移除,同時他會收到一則提醒。",
@@ -234,7 +284,7 @@
     "search": "搜尋",
     "select-color": "選擇顏色",
     "shortcut-assign-self": "分配目前卡片給自己",
-    "shortcut-autocomplete-emojies": "自動完成 emojis",
+    "shortcut-autocomplete-emoji": "自動完成表情符號",
     "shortcut-autocomplete-members": "自動補齊成員",
     "shortcut-clear-filters": "清空全部過濾條件",
     "shortcut-close-dialog": "關閉對話方塊",
@@ -242,6 +292,7 @@
     "shortcut-show-shortcuts": "顯示此快速鍵清單",
     "shortcut-toggle-filterbar": "切換過濾程式邊欄",
     "shortcut-toggle-sidebar": "切換面板邊欄",
+    "show-cards-minimum-count": "顯示卡片數量,當內容超過數量",
     "signupPopup-title": "建立帳戶",
     "star-board-title": "點此標記該看板,它將會出現在您的看板列表上方。",
     "starred-boards": "已標記看板",
@@ -250,14 +301,24 @@
     "team": "團隊",
     "this-board": "這個看板",
     "this-card": "這個卡片",
+    "time": "時間",
     "title": "標題",
+    "tracking": "追蹤",
+    "tracking-info": "你將會收到與你有關的卡片的所有變更通知",
     "unassign-member": "取消分配成員",
     "unsaved-description": "未儲存的描述",
+    "unwatch": "取消觀察",
     "upload": "上傳",
     "upload-avatar": "上傳大頭貼",
     "uploaded-avatar": "大頭貼已經上傳",
     "username": "使用者名稱",
     "view-it": "檢視",
     "warn-list-archived": "警告: 該卡片位於已刪除的清單中",
+    "watch": "觀察",
+    "watching": "觀察中",
+    "watching-info": "你將會收到關於這個看板所有的變更通知",
+    "welcome-board": "歡迎進入看板",
+    "welcome-list1": "基本",
+    "welcome-list2": "進階",
     "what-to-do": "要做什麼?"
 }

binární
meta/dwrensha-pgp-sig


binární
meta/keyring


+ 7 - 0
models/activities.js

@@ -35,6 +35,9 @@ Activities.helpers({
   attachment() {
     return Attachments.findOne(this.attachmentId);
   },
+  checklist() {
+    return Checklists.findOne(this.checklistId);
+  },
 });
 
 Activities.before.insert((userId, doc) => {
@@ -102,6 +105,10 @@ if (Meteor.isServer) {
       const attachment = activity.attachment();
       params.attachment = attachment._id;
     }
+    if (activity.checklistId) {
+      const checklist = activity.checklist();
+      params.checklist = checklist.title;
+    }
     if (board) {
       const watchingUsers = _.pluck(_.where(board.watchers, {level: 'watching'}), 'userId');
       const trackingUsers = _.pluck(_.where(board.watchers, {level: 'tracking'}), 'userId');

+ 1 - 1
models/boards.js

@@ -249,7 +249,7 @@ Boards.mutations({
     return { $set: { title }};
   },
 
-  setDesciption(description) {
+  setDescription(description) {
     return { $set: {description} };
   },
 

+ 6 - 0
models/cardComments.js

@@ -57,6 +57,12 @@ CardComments.helpers({
 CardComments.hookOptions.after.update = { fetchPrevious: false };
 
 if (Meteor.isServer) {
+  // Comments are often fetched within a card, so we create an index to make these
+  // queries more efficient.
+  Meteor.startup(() => {
+    CardComments._collection._ensureIndex({ cardId: 1, createdAt: -1 });
+  });
+
   CardComments.after.insert((userId, doc) => {
     Activities.insert({
       userId,

+ 54 - 0
models/cards.js

@@ -56,6 +56,14 @@ Cards.attachSchema(new SimpleSchema({
     type: [String],
     optional: true,
   },
+  startAt: {
+    type: Date,
+    optional: true,
+  },
+  dueAt: {
+    type: Date,
+    optional: true,
+  },
   // XXX Should probably be called `authorId`. Is it even needed since we have
   // the `members` field?
   userId: {
@@ -133,6 +141,36 @@ Cards.helpers({
     return cover && cover.url() && cover;
   },
 
+  checklists() {
+    return Checklists.find({ cardId: this._id }, { sort: { createdAt: 1 }});
+  },
+
+  checklistItemCount() {
+    const checklists = this.checklists().fetch();
+    return checklists.map((checklist) => {
+      return checklist.itemCount();
+    }).reduce((prev, next) => {
+      return prev + next;
+    }, 0);
+  },
+
+  checklistFinishedCount() {
+    const checklists = this.checklists().fetch();
+    return checklists.map((checklist) => {
+      return checklist.finishedCount();
+    }).reduce((prev, next) => {
+      return prev + next;
+    }, 0);
+  },
+
+  checklistFinished() {
+    return this.hasChecklist() && this.checklistItemCount() === this.checklistFinishedCount();
+  },
+
+  hasChecklist() {
+    return this.checklistItemCount() !== 0;
+  },
+
   absoluteUrl() {
     const board = this.board();
     return FlowRouter.url('card', {
@@ -207,6 +245,22 @@ Cards.mutations({
   unsetCover() {
     return { $unset: { coverId: '' }};
   },
+
+  setStart(startAt) {
+    return { $set: { startAt }};
+  },
+
+  unsetStart() {
+    return { $unset: { startAt: '' }};
+  },
+
+  setDue(dueAt) {
+    return { $set: { dueAt }};
+  },
+
+  unsetDue() {
+    return { $unset: { dueAt: '' }};
+  },
 });
 
 if (Meteor.isServer) {

+ 164 - 0
models/checklists.js

@@ -0,0 +1,164 @@
+Checklists = new Mongo.Collection('checklists');
+
+Checklists.attachSchema(new SimpleSchema({
+  cardId: {
+    type: String,
+  },
+  title: {
+    type: String,
+  },
+  items: {
+    type: [Object],
+    defaultValue: [],
+  },
+  'items.$._id': {
+    type: String,
+  },
+  'items.$.title': {
+    type: String,
+  },
+  'items.$.isFinished': {
+    type: Boolean,
+    defaultValue: false,
+  },
+  finishedAt: {
+    type: Date,
+    optional: true,
+  },
+  createdAt: {
+    type: Date,
+    denyUpdate: false,
+  },
+}));
+
+Checklists.helpers({
+  itemCount () {
+    return this.items.length;
+  },
+  finishedCount () {
+    return this.items.filter((item) => {
+      return item.isFinished;
+    }).length;
+  },
+  isFinished () {
+    return 0 !== this.itemCount() && this.itemCount() === this.finishedCount();
+  },
+  getItem (_id) {
+    return _.findWhere(this.items, { _id });
+  },
+  itemIndex(itemId) {
+    return _.pluck(this.items, '_id').indexOf(itemId);
+  },
+});
+
+Checklists.allow({
+  insert(userId, doc) {
+    return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId));
+  },
+  update(userId, doc) {
+    return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId));
+  },
+  remove(userId, doc) {
+    return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId));
+  },
+  fetch: ['userId', 'cardId'],
+});
+
+Checklists.before.insert((userId, doc) => {
+  doc.createdAt = new Date();
+  if (!doc.userId) {
+    doc.userId = userId;
+  }
+});
+
+Checklists.mutations({
+  //for checklist itself
+  setTitle(title){
+    return { $set: { title }};
+  },
+  //for items in checklist
+  addItem(title) {
+    const itemCount = this.itemCount();
+    const _id = `${this._id}${itemCount}`;
+    return { $addToSet: {items: {_id, title, isFinished: false}} };
+  },
+  removeItem(itemId) {
+    return {$pull: {items: {_id : itemId}}};
+  },
+  editItem(itemId, title) {
+    if (this.getItem(itemId)) {
+      const itemIndex = this.itemIndex(itemId);
+      return {
+        $set: {
+          [`items.${itemIndex}.title`]: title,
+        },
+      };
+    }
+    return {};
+  },
+  finishItem(itemId) {
+    if (this.getItem(itemId)) {
+      const itemIndex = this.itemIndex(itemId);
+      return {
+        $set: {
+          [`items.${itemIndex}.isFinished`]: true,
+        },
+      };
+    }
+    return {};
+  },
+  resumeItem(itemId) {
+    if (this.getItem(itemId)) {
+      const itemIndex = this.itemIndex(itemId);
+      return {
+        $set: {
+          [`items.${itemIndex}.isFinished`]: false,
+        },
+      };
+    }
+    return {};
+  },
+  toggleItem(itemId) {
+    const item = this.getItem(itemId);
+    if (item) {
+      const itemIndex = this.itemIndex(itemId);
+      return {
+        $set: {
+          [`items.${itemIndex}.isFinished`]: !item.isFinished,
+        },
+      };
+    }
+    return {};
+  },
+});
+
+if (Meteor.isServer) {
+  Checklists.after.insert((userId, doc) => {
+    Activities.insert({
+      userId,
+      activityType: 'addChecklist',
+      cardId: doc.cardId,
+      boardId: Cards.findOne(doc.cardId).boardId,
+      checklistId: doc._id,
+    });
+  });
+
+  //TODO: so there will be no activity for adding item into checklist, maybe will be implemented in the future.
+  // Checklists.after.update((userId, doc) => {
+  //   console.log('update:', doc)
+    // Activities.insert({
+    //   userId,
+    //   activityType: 'addChecklist',
+    //   boardId: doc.boardId,
+    //   cardId: doc.cardId,
+    //   checklistId: doc._id,
+    // });
+  // });
+
+  Checklists.before.remove((userId, doc) => {
+    const activity = Activities.findOne({ checklistId: doc._id });
+    if (activity) {
+      Activities.remove(activity._id);
+    }
+  });
+}

+ 11 - 0
models/lists.js

@@ -105,6 +105,17 @@ if (Meteor.isServer) {
     });
   });
 
+  Lists.before.remove((userId, doc) => {
+    Activities.insert({
+      userId,
+      type: 'list',
+      activityType: 'removeList',
+      boardId: doc.boardId,
+      listId: doc._id,
+      title: doc.title,
+    });
+  });
+
   Lists.after.update((userId, doc) => {
     if (doc.archived) {
       Activities.insert({

+ 61 - 17
models/users.js

@@ -1,3 +1,7 @@
+// Sandstorm context is detected using the METEOR_SETTINGS environment variable
+// in the package definition.
+const isSandstorm = Meteor.settings && Meteor.settings.public &&
+                    Meteor.settings.public.sandstorm;
 Users = Meteor.users;
 
 Users.attachSchema(new SimpleSchema({
@@ -55,6 +59,10 @@ Users.attachSchema(new SimpleSchema({
     type: String,
     optional: true,
   },
+  'profile.hiddenSystemMessages': {
+    type: Boolean,
+    optional: true,
+  },
   'profile.initials': {
     type: String,
     optional: true,
@@ -71,6 +79,10 @@ Users.attachSchema(new SimpleSchema({
     type: [String],
     optional: true,
   },
+  'profile.showCardsCountAt': {
+    type: Number,
+    optional: true,
+  },
   'profile.starredBoards': {
     type: [String],
     optional: true,
@@ -147,6 +159,11 @@ Users.helpers({
     return _.contains(notifications, activityId);
   },
 
+  hasHiddenSystemMessages() {
+    const profile = this.profile || {};
+    return profile.hiddenSystemMessages || false;
+  },
+
   getEmailBuffer() {
     const {emailBuffer = []} = this.profile;
     return emailBuffer;
@@ -167,6 +184,11 @@ Users.helpers({
     }
   },
 
+  getLimitToShowCardsCount() {
+    const profile = this.profile || {};
+    return profile.showCardsCountAt;
+  },
+
   getName() {
     const profile = this.profile || {};
     return profile.fullname || this.username;
@@ -227,6 +249,14 @@ Users.mutations({
       this.addTag(tag);
   },
 
+  toggleSystem(value = false) {
+    return {
+      $set: {
+        'profile.hiddenSystemMessages': !value,
+      },
+    };
+  },
+
   addNotification(activityId) {
     return {
       $addToSet: {
@@ -262,6 +292,10 @@ Users.mutations({
   setAvatarUrl(avatarUrl) {
     return { $set: { 'profile.avatarUrl': avatarUrl }};
   },
+
+  setShowCardsCountAt(limit) {
+    return { $set: { 'profile.showCardsCountAt': limit } };
+  },
 });
 
 Meteor.methods({
@@ -274,6 +308,14 @@ Meteor.methods({
       Users.update(this.userId, {$set: { username }});
     }
   },
+  toggleSystemMessages() {
+    const user = Meteor.user();
+    user.toggleSystem(user.hasHiddenSystemMessages());
+  },
+  changeLimitToShowCardsCount(limit) {
+    check(limit, Number);
+    Meteor.user().setShowCardsCountAt(limit);
+  },
 });
 
 if (Meteor.isServer) {
@@ -394,24 +436,26 @@ if (Meteor.isServer) {
     return fakeUserId.get() || getUserId();
   };
 
-  Users.after.insert((userId, doc) => {
-    const fakeUser = {
-      extendAutoValueContext: {
-        userId: doc._id,
-      },
-    };
-
-    fakeUserId.withValue(doc._id, () => {
-      // Insert the Welcome Board
-      Boards.insert({
-        title: TAPi18n.__('welcome-board'),
-        permission: 'private',
-      }, fakeUser, (err, boardId) => {
-
-        ['welcome-list1', 'welcome-list2'].forEach((title) => {
-          Lists.insert({ title: TAPi18n.__(title), boardId }, fakeUser);
+  if (!isSandstorm) {
+    Users.after.insert((userId, doc) => {
+      const fakeUser = {
+        extendAutoValueContext: {
+          userId: doc._id,
+        },
+      };
+
+      fakeUserId.withValue(doc._id, () => {
+        // Insert the Welcome Board
+        Boards.insert({
+          title: TAPi18n.__('welcome-board'),
+          permission: 'private',
+        }, fakeUser, (err, boardId) => {
+
+          ['welcome-list1', 'welcome-list2'].forEach((title) => {
+            Lists.insert({ title: TAPi18n.__(title), boardId }, fakeUser);
+          });
         });
       });
     });
-  });
+  }
 }

+ 4 - 4
package.json

@@ -1,6 +1,6 @@
 {
   "name": "wekan",
-  "version": "0.10.1",
+  "version": "0.11.0",
   "description": "The open-source Trello-like kanban",
   "private": true,
   "scripts": {
@@ -9,13 +9,13 @@
   },
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/wekan/wekan.git"
+    "url": "git+https://github.com/wefork/wekan.git"
   },
   "license": "MIT",
   "bugs": {
-    "url": "https://github.com/wekan/wekan/issues"
+    "url": "https://github.com/wefork/wekan/issues"
   },
-  "homepage": "https://wekan.io",
+  "homepage": "https://github.com/wefork/wekan",
   "devDependencies": {
     "eslint": "^2.0.0"
   },

+ 49 - 7
sandstorm-pkgdef.capnp

@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
     appTitle = (defaultText = "Wekan"),
     # The name of the app as it is displayed to the user.
 
-    appVersion = 12,
+    appVersion = 17,
     # Increment this for every release.
 
-    appMarketingVersion = (defaultText = "0.11.0-rc2"),
+    appMarketingVersion = (defaultText = "0.11.0~2016-11-28"),
     # Human-readable presentation of the app version.
 
     minUpgradableAppVersion = 0,
@@ -58,13 +58,14 @@ const pkgdef :Spk.PackageDefinition = (
       ),
 
       website = "https://wekan.io",
-      codeUrl = "https://github.com/wekan/wekan",
+      codeUrl = "https://github.com/wefork/wekan",
       license = (openSource = mit),
       categories = [productivity, office],
 
       author = (
-        contactEmail = "mquandalle@wekan.io",
-        pgpSignature = embed "meta/mquandalle-pgp-sig",
+        upstreamAuthor = "Maxime Quandalle",
+        contactEmail = "david@sandstorm.io",
+        pgpSignature = embed "meta/dwrensha-pgp-sig",
       ),
 
       pgpKeyring = embed "meta/keyring",
@@ -173,8 +174,48 @@ const pkgdef :Spk.PackageDefinition = (
       #
       # XXX Administrators configuration options aren’t implemented yet, so this
       # role is currently useless.
-      )]
-    )
+      )],
+
+      eventTypes = [(
+         name = "addBoardMember",
+         verbPhrase = (defaultText = "added to board"),
+      ), (
+        name = "createList",
+        verbPhrase = (defaultText = "created new list"),
+      ), (
+        name = "archivedList",
+        verbPhrase = (defaultText = "archived list"),
+      ), (
+        name = "restoredList",
+        verbPhrase = (defaultText = "restored list"),
+      ), (
+        name = "createCard",
+        verbPhrase = (defaultText = "created new card"),
+      ), (
+        name = "moveCard",
+        verbPhrase = (defaultText = "moved card"),
+      ), (
+        name = "archivedCard",
+        verbPhrase = (defaultText = "archived card"),
+      ), (
+        name = "restoredCard",
+        verbPhrase = (defaultText = "restored card"),
+      ), (
+        name = "addComment",
+        verbPhrase = (defaultText = "added comment"),
+      ), (
+        name = "addAttachement",
+        verbPhrase = (defaultText = "added attachment"),
+      ), (
+        name = "joinMember",
+        verbPhrase = (defaultText = "added to card"),
+      ), (
+        name = "unjoinMember",
+        verbPhrase = (defaultText = "removed from card"),
+      ), ],
+    ),
+
+    saveIdentityCaps = true,
   ),
 );
 
@@ -184,6 +225,7 @@ const myCommand :Spk.Manifest.Command = (
   environ = [
     # Note that this defines the *entire* environment seen by your app.
     (key = "PATH", value = "/usr/local/bin:/usr/bin:/bin"),
+    (key = "SANDSTORM", value = "1"),
     (key = "METEOR_SETTINGS", value = "{\"public\": {\"sandstorm\": true}}")
   ]
 );

+ 282 - 23
sandstorm.js

@@ -21,6 +21,187 @@ const sandstormBoard = {
 };
 
 if (isSandstorm && Meteor.isServer) {
+  const fs = require('fs');
+  const Capnp = require('capnp');
+  const Package = Capnp.importSystem('sandstorm/package.capnp');
+  const Powerbox = Capnp.importSystem('sandstorm/powerbox.capnp');
+  const Identity = Capnp.importSystem('sandstorm/identity.capnp');
+  const SandstormHttpBridge =
+    Capnp.importSystem('sandstorm/sandstorm-http-bridge.capnp').SandstormHttpBridge;
+
+  let httpBridge = null;
+  let capnpConnection = null;
+
+  const bridgeConfig = Capnp.parse(
+    Package.BridgeConfig,
+    fs.readFileSync('/sandstorm-http-bridge-config'));
+
+  function getHttpBridge() {
+    if (!httpBridge) {
+      capnpConnection = Capnp.connect('unix:/tmp/sandstorm-api');
+      httpBridge = capnpConnection.restore(null, SandstormHttpBridge);
+    }
+    return httpBridge;
+  }
+
+  Meteor.methods({
+    sandstormClaimIdentityRequest(token, descriptor) {
+      check(token, String);
+      check(descriptor, String);
+
+      const parsedDescriptor = Capnp.parse(
+        Powerbox.PowerboxDescriptor,
+        new Buffer(descriptor, 'base64'),
+        { packed: true });
+
+      const tag = Capnp.parse(Identity.Identity.PowerboxTag, parsedDescriptor.tags[0].value);
+      const permissions = [];
+      if (tag.permissions[1]) {
+        permissions.push('configure');
+      }
+
+      if (tag.permissions[0]) {
+        permissions.push('participate');
+      }
+
+      const sessionId = this.connection.sandstormSessionId();
+      const httpBridge = getHttpBridge();
+      const session = httpBridge.getSessionContext(sessionId).context;
+      const api = httpBridge.getSandstormApi(sessionId).api;
+
+      Meteor.wrapAsync((done) => {
+        session.claimRequest(token).then((response) => {
+          const identity = response.cap.castAs(Identity.Identity);
+          const promises = [api.getIdentityId(identity), identity.getProfile(),
+                            httpBridge.saveIdentity(identity)];
+          return Promise.all(promises).then((responses) => {
+            const identityId = responses[0].id.toString('hex').slice(0, 32);
+            const profile = responses[1].profile;
+            return profile.picture.getUrl().then((response) => {
+              const sandstormInfo = {
+                id: identityId,
+                name: profile.displayName.defaultText,
+                permissions,
+                picture: `${response.protocol}://${response.hostPath}`,
+                preferredHandle: profile.preferredHandle,
+                pronouns: profile.pronouns,
+              };
+
+              const login = Accounts.updateOrCreateUserFromExternalService(
+                'sandstorm', sandstormInfo,
+                { profile: { name: sandstormInfo.name } });
+
+              updateUserPermissions(login.userId, permissions);
+              done();
+            });
+          });
+        }).catch((e) => {
+          done(e, null);
+        });
+      })();
+    },
+  });
+
+  function reportActivity(sessionId, path, type, users, caption) {
+    const httpBridge = getHttpBridge();
+    const session = httpBridge.getSessionContext(sessionId).context;
+    Meteor.wrapAsync((done) => {
+      return Promise.all(users.map((user) => {
+        return httpBridge.getSavedIdentity(user.id).then((response) => {
+          // Call getProfile() to make sure that the identity successfully resolves.
+          // (In C++ we would instead call whenResolved() here.)
+          const identity = response.identity;
+          return identity.getProfile().then(() => {
+            return { identity,
+                     mentioned: !!user.mentioned,
+                     subscribed: !!user.subscribed,
+                   };
+          });
+        }).catch(() => {
+          // Ignore identities that fail to restore. Either they were added before we set
+          // `saveIdentityCaps` to true, or they have lost access to the board.
+        });
+      })).then((maybeUsers) => {
+        const users = maybeUsers.filter((u) => !!u);
+        const event = { path, type, users };
+        if (caption) {
+          event.notification = { caption };
+        }
+
+        return session.activity(event);
+      }).then(() => done(),
+              (e) => done(e));
+    })();
+  }
+
+  Meteor.startup(() => {
+    Activities.after.insert((userId, doc) => {
+      // HACK: We need the connection that's making the request in order to read the
+      // Sandstorm session ID.
+      const invocation = DDP._CurrentInvocation.get(); // eslint-disable-line no-undef
+      if (invocation) {
+        const sessionId = invocation.connection.sandstormSessionId();
+
+        const eventTypes = bridgeConfig.viewInfo.eventTypes;
+
+        const defIdx = eventTypes.findIndex((def) => def.name === doc.activityType );
+        if (defIdx >= 0) {
+          const users = {};
+          function ensureUserListed(userId) {
+            if (!users[userId]) {
+              const user = Meteor.users.findOne(userId);
+              if (user) {
+                users[userId] = { id: user.services.sandstorm.id };
+              } else {
+                return false;
+              }
+            }
+            return true;
+          }
+
+          function mentionedUser(userId) {
+            if (ensureUserListed(userId)) {
+              users[userId].mentioned = true;
+            }
+          }
+
+          function subscribedUser(userId) {
+            if (ensureUserListed(userId)) {
+              users[userId].subscribed = true;
+            }
+          }
+
+          let path = '';
+          let caption = null;
+
+          if (doc.cardId) {
+            path = `b/sandstorm/libreboard/${doc.cardId}`;
+            Cards.findOne(doc.cardId).members.map(subscribedUser);
+          }
+
+          if (doc.memberId) {
+            mentionedUser(doc.memberId);
+          }
+
+          if (doc.activityType === 'addComment') {
+            const comment = CardComments.findOne(doc.commentId);
+            caption = { defaultText: comment.text };
+            const activeMembers =
+              _.pluck(Boards.findOne(sandstormBoard._id).activeMembers(), 'userId');
+            (comment.text.match(/\B@(\w*)/g) || []).forEach((username) => {
+              const user = Meteor.users.findOne({ username: username.slice(1)});
+              if (user && activeMembers.indexOf(user._id) !== -1) {
+                mentionedUser(user._id);
+              }
+            });
+          }
+
+          reportActivity(sessionId, path, defIdx, _.values(users), caption);
+        }
+      }
+    });
+  });
+
   function updateUserPermissions(userId, permissions) {
     const isActive = permissions.indexOf('participate') > -1;
     const isAdmin = permissions.indexOf('configure') > -1;
@@ -58,29 +239,6 @@ if (isSandstorm && Meteor.isServer) {
       Location: base + boardPath,
     });
     res.end();
-
-    // `accounts-sandstorm` populate the Users collection when new users
-    // accesses the document, but in case a already known user comes back, we
-    // need to update his associated document to match the request HTTP headers
-    // informations.
-    // XXX We need to update this document even if the initial route is not `/`.
-    // Unfortuanlty I wasn't able to make the Webapp.rawConnectHandlers solution
-    // work.
-    const user = Users.findOne({
-      'services.sandstorm.id': req.headers['x-sandstorm-user-id'],
-    });
-    if (user) {
-      // XXX At this point the user.services.sandstorm credentials haven't been
-      // updated, which mean that the user will have to restart the application
-      // a second time to see its updated name and avatar.
-      Users.update(user._id, {
-        $set: {
-          'profile.fullname': user.services.sandstorm.name,
-          'profile.avatarUrl': user.services.sandstorm.picture,
-        },
-      });
-      updateUserPermissions(user._id, user.services.sandstorm.permissions);
-    }
   });
 
   // On the first launch of the instance a user is automatically created thanks
@@ -126,6 +284,29 @@ if (isSandstorm && Meteor.isServer) {
     updateUserPermissions(doc._id, doc.services.sandstorm.permissions);
   });
 
+  Meteor.startup(() => {
+    Users.find().observeChanges({
+      changed(userId, fields) {
+        const sandstormData = (fields.services || {}).sandstorm || {};
+        if (sandstormData.name) {
+          Users.update(userId, {
+            $set: { 'profile.fullname': sandstormData.name },
+          });
+        }
+
+        if (sandstormData.picture) {
+          Users.update(userId, {
+            $set: { 'profile.avatarUrl': sandstormData.picture },
+          });
+        }
+
+        if (sandstormData.permissions) {
+          updateUserPermissions(userId, sandstormData.permissions);
+        }
+      },
+    });
+  });
+
   // Wekan v0.8 didn’t implement the Sandstorm sharing model and instead kept
   // the visibility setting (“public” or “private”) in the UI as does the main
   // Meteor application. We need to enforce “public” visibility as the sharing
@@ -137,6 +318,77 @@ if (isSandstorm && Meteor.isServer) {
 }
 
 if (isSandstorm && Meteor.isClient) {
+  let rpcCounter = 0;
+  const rpcs = {};
+
+  window.addEventListener('message', (event) => {
+    if (event.source === window) {
+      // Meteor likes to postmessage itself.
+      return;
+    }
+
+    if ((event.source !== window.parent) ||
+        typeof event.data !== 'object' ||
+        typeof event.data.rpcId !== 'number') {
+      throw new Error(`got unexpected postMessage: ${event}`);
+    }
+
+    const handler = rpcs[event.data.rpcId];
+    if (!handler) {
+      throw new Error(`no such rpc ID for event ${event}`);
+    }
+
+    delete rpcs[event.data.rpcId];
+    handler(event.data);
+  });
+
+  function sendRpc(name, message) {
+    const id = rpcCounter++;
+    message.rpcId = id;
+    const obj = {};
+    obj[name] = message;
+    window.parent.postMessage(obj, '*');
+    return new Promise((resolve, reject) => {
+      rpcs[id] = (response) => {
+        if (response.error) {
+          reject(new Error(response.error));
+        } else {
+          resolve(response);
+        }
+      };
+    });
+  }
+
+  const powerboxDescriptors = {
+    identity: 'EAhQAQEAABEBF1EEAQH_GN1RqXqYhMAAQAERAREBAQ',
+    // Generated using the following code:
+    //
+    // Capnp.serializePacked(
+    //  Powerbox.PowerboxDescriptor,
+    //  { tags: [ {
+    //    id: "13872380404802116888",
+    //    value: Capnp.serialize(Identity.PowerboxTag, { permissions: [true, false] })
+    //  }]}).toString('base64')
+    //      .replace(/\//g, "_")
+    //      .replace(/\+/g, "-");
+  };
+
+  function doRequest(serializedPowerboxDescriptor, onSuccess) {
+    return sendRpc('powerboxRequest', {
+      query: [serializedPowerboxDescriptor],
+    }).then((response) => {
+      if (!response.canceled) {
+        onSuccess(response);
+      }
+    });
+  }
+
+  window.sandstormRequestIdentity = function () {
+    doRequest(powerboxDescriptors.identity, (response) => {
+      Meteor.call('sandstormClaimIdentityRequest', response.token, response.descriptor);
+    });
+  };
+
   // Since the Sandstorm grain is displayed in an iframe of the Sandstorm shell,
   // we need to explicitly expose meta data like the page title or the URL path
   // so that they could appear in the browser window.
@@ -176,6 +428,13 @@ if (isSandstorm && Meteor.isClient) {
     return url.replace(/^https?:\/\/127\.0\.0\.1:[0-9]{2,5}/, '');
   };
   Meteor.absoluteUrl.defaultOptions = _defaultOptions;
+
+  // XXX Hack to fix https://github.com/wefork/wekan/issues/27
+  // Sandstorm Wekan instances only ever have a single board, so there is no need
+  // to cache per-board subscriptions.
+  SubsManager.prototype.subscribe = function(...params) {
+    return Meteor.subscribe(...params);
+  };
 }
 
 // We use this blaze helper in the UI to hide some templates that does not make

+ 5 - 0
server/lib/utils.js

@@ -5,3 +5,8 @@ allowIsBoardAdmin = function(userId, board) {
 allowIsBoardMember = function(userId, board) {
   return board && board.hasMember(userId);
 };
+
+allowIsBoardMemberByCard = function(userId, card) {
+  const board = card.board();
+  return board && board.hasMember(userId);
+};

+ 4 - 4
server/publications/activities.js

@@ -3,16 +3,16 @@
 // 2. The card activity tab
 // We use this publication to paginate for these two publications.
 
-Meteor.publish('activities', (kind, id, limit) => {
+Meteor.publish('activities', (kind, id, limit, hideSystem) => {
   check(kind, Match.Where((x) => {
     return ['board', 'card'].indexOf(x) !== -1;
   }));
   check(id, String);
   check(limit, Number);
+  check(hideSystem, Boolean);
 
-  return Activities.find({
-    [`${kind}Id`]: id,
-  }, {
+  const selector = (hideSystem) ? {$and: [{activityType: 'addComment'}, {[`${kind}Id`]: id}]} : {[`${kind}Id`]: id};
+  return Activities.find(selector, {
     limit,
     sort: {createdAt: -1},
   });

+ 21 - 14
server/publications/boards.js

@@ -60,6 +60,7 @@ Meteor.publish('archivedBoards', function() {
 
 Meteor.publishRelations('board', function(boardId) {
   check(boardId, String);
+  const thisUserId = this.userId;
 
   this.cursor(Boards.find({
     _id: boardId,
@@ -97,22 +98,28 @@ Meteor.publishRelations('board', function(boardId) {
     this.cursor(Cards.find({ boardId }), function(cardId) {
       this.cursor(CardComments.find({ cardId }));
       this.cursor(Attachments.find({ cardId }));
+      this.cursor(Checklists.find({ cardId }));
     });
 
-    // Board members. This publication also includes former board members that
-    // aren't members anymore but may have some activities attached to them in
-    // the history.
-    //
-    this.cursor(Users.find({
-      _id: { $in: _.pluck(board.members, 'userId') },
-    }, { fields: {
-      'username': 1,
-      'profile.fullname': 1,
-      'profile.avatarUrl': 1,
-    }}), function(userId) {
-      // Presence indicators
-      this.cursor(presences.find({ userId }));
-    });
+    if (board.members) {
+      // Board members. This publication also includes former board members that
+      // aren't members anymore but may have some activities attached to them in
+      // the history.
+      const memberIds = _.pluck(board.members, 'userId');
+
+      // We omit the current user because the client should already have that data,
+      // and sending it triggers a subtle bug:
+      // https://github.com/wefork/wekan/issues/15
+      this.cursor(Users.find({
+        _id: { $in: _.without(memberIds, thisUserId)},
+      }, { fields: {
+        'username': 1,
+        'profile.fullname': 1,
+        'profile.avatarUrl': 1,
+      }}));
+
+      this.cursor(presences.find({ userId: { $in: memberIds } }));
+    }
   });
 
   return this.ready();